-
테이블 생성 / 수정 / 삭제 / DDL프로그래밍/DBMS 2021. 8. 9.반응형
DDL = Data Definition Language 데이터 정의 언어
* CREATE
* DROP
* ALTER
* TRUNCATE
컬럼명 컬럼타입 폭 제약조건 NULL
num NUMBER 10 PK x
name VARCHAR2 30 x
birth DATE
city VARCHAR2 30테이블을 만들기 위한 기본적인 구성을 먼저 만들어 준다.
(VARCHAR2보다 더 대용량을 요구한다면 CLOB사용)
CLOB는 (30) 이런식으로 크기를 지정할 필요 없음 그냥 CLOB 만 쓰면 됨
이걸 코드로 옮기면
CREATE TABLE test ( num NUMBER(10) PRIMARY KEY, name VARCHAR2(30) NOT NULL, birth DATE, city VARCHAR2(30) );
이러면 test의 테이블이 만들어진다.
테이블이 만들어 졌는지 확인 해보자.
SELECT * FROM tab; SELECT * FROM tabs; DESC test; SELECT * FROM col WHERE tname = 'TEST'; SELECT * FROM cols WHERE table_name = 'TEST'; SELECT * FROM test;
모두 확인하는 방법들이고 내용은 다 다르다.
결과적으로 test의 테이블이 만들어 졌다.
존재하는 테이블을 이용하여 새로운 테이블 만들기 : 구조 및 데이터 복사
CREATE TABLE emp1 AS SELECT empNo, name, sal, bonus, sal+bonus pay FROM emp;
emp에서 필요한 내용들을 가져와서 emp1 테이블을 만든다 !
CREATE TABLE emp2 AS SELECT empNo, name, dept, pos FROM emp WHERE dept = '개발부';
마찬가지로 emp2의 테이블을 생성
CREATE TABLE emp3 (eno, name, birth, gender) AS SELECT empNo, name, TO_DATE(SUBSTR(rrn,1,6), 'RRMMDD'), DECODE(MOD(SUBSTR(rrn,8,1),2), 1, '남자', '여자') FROM emp;
테이블의 구조만 복사 (NOT NULL을 제외한 제약 조건은 복사 안됨)
CREATE TABLE emp4 AS SELECT * FROM emp WHERE 1 = 2;
WHERE 1 = 1 하면 true이기 때문에 데이터가 출력이 된다.
그래서 일부로 false를 만들어야 한다. (false이면 데이터는 출력 안되는데 구조는 출력이 된다.)
컬럼 추가
ALTER TABLE test ADD ( dept VARCHAR2(30), sal NUMBER(3) NOT NULL ); DESC test;
ADD 명령어를 사용하여 새로운 컬럼을 추가해 보자
컬럼 속성 수정하기
ALTER TABLE test MODIFY ( sal NUMBER(8) ); DESC test;
컬럼 이름 바꾸기
ALTER TABLE test RENAME COLUMN num TO empNo; DESC test;
컬럼 제거 하기
ALTER TABLE test DROP COLUMN dept; DESC test;
= DROP은 컬럼을 완전히 삭제하는게 아니라 휴지통으로 이동시킨다.
= SELECT * FROM tab; 해보면 흔적이 남는다.
그래서 복구도 가능하다.
복구도 불가능하게 완전 삭제하려면
DROP TABLE emp4 PURGE;
뒤에 PURGE를 붙여야 한다.
휴지통에 있는 컬럼들 제거 (휴지통 비우기)
PURGE RECYCLEBIN;
전부 삭제한다.
삭제된 테이블 복구
(단 완전삭제 PURGE를 사용 안했어야 한다.)
동일한 이름이 2개 이상이면 마지막 테이블을 복원한다.
FLASHBACK TABLE test TO BEFORE DROP;
이름을 변경해서 복원하기 (테이블을 삭제하고 똑같은 이름으로 테이블을 생성 했는데 삭제한걸 복구하고 싶을때)
FLASHBACK TABLE emp2 TO BEFORE DROP RENAME TO emp22;
컬럼은 삭제하지 않지만 논리적으로 접근이 불가능하게 제한 하기
ALTER TABLE emp3 SET UNUSED ( name );
ALTER TABLE ~ SET UNUSED에 의해 논리적으로 삭제된 컬럼의 정보 확인
SELECT * FROM USER_UNUSED_COL_TABS;
출력이니까 셀렉트 사용
UNUSED 된 컬럼 제거
ALTER TABLE emp3 DROP UNUSED COLUMNS;
반응형'프로그래밍 > DBMS' 카테고리의 다른 글
제약 조건 / PRIMARY KEY / FOREIGN KEY (0) 2021.08.12 테이블(2) 데이터 조작 (추가, 수정, 삭제) (0) 2021.08.11 SELECT(4) 날짜 관련 함수 (0) 2021.08.09 SELECT (3) (0) 2021.08.09 SELECT 기초 (2) (0) 2021.08.05