본문 바로가기

안녕하세요!

자격증 준비/SQLD

[ SQLD ] DDL(Data Definition Language)


 

DDL


 

DDL(Data Definition Language)

Schema와 Domain, Table, View, Index를 정의 및 변경, 제거할 때 사용한다.

DDL의 경우, Auto COMMIT 되기 때문에

DDL이 수행되면 ROLLBACK이 되어도 데이터는 COMMIT 된다.

 

CREATE TABLE AS


 

CREATE TABLE TESTTABLE AS
	SELECT COLUMN1, COLUMN2, ...
	FROM   EXAMPLETABLE
	WHERE  ...

 

CREATE TABLE AS 문장을 사용하는 경우,

테이블의 구조를 복하기 때문에 별도로 작성할 필요가 없다.

다만, NOY NULL과 일부 제약 조건만 복사가 된다.

PK, FK, UNIQUE, CHECK 등의 제약 조건은 복사되지 않으므로 다시 적용해야 한다.

 

[ ORACLE ]

CREATE TABLE TESTTABLE AS SELECT * FROM EXAMPLETABLE;

 


 

[ SQL SERVER ]

SELECT * INTO TESTTABLE FROM EXAMPLETABLE;

 

CONSTRAINT


 

PRIMARY KEY 기본키, 한 테이블에 하나만 지정 가능, 자동으로 UNIQUE한 INDEX 생성, NOT NULL
UNIQUE NULL 가능, 행을 고유하게 식별하기 위한 고유키, 중복 X
NOT NULL 명시적으로 NULL 입력 방지
CHECK 데이터 무결성 유지를 위해 테이블의 특정 컬럼에 설정하는 제약
FOREIGN KEY 외래키, 참조 무결성 옵션 선택 가능, 여러 개 O

 

CREATE TABLE TESTTABLE
	(COLUMN1 VARCHAR(10) PRIMARY KEY,
	 COLUMN2 VARCHAR(100) NOT NULL...)

 


 

CREATE TABLE TESTTABLE
	(PROD_ID VARCHAR(10) NOT NULL,
	 PROD_NM VARCHAR(100) NOT NULL,
	 CONSTRAINT TEST_PK PRIMARYK KEY(PROD_ID));

 

TABLE을 생성할 때,

기본적으로 PRIMARY KEY로 기본키를 설정할 수도 있고,

CONSTRAINT를 사용하여 하나의 칼럼을

PRIMARY KEY로 설정할 수도 있다.

 

또한 여기서 주의해야할 점은

NULL이라 함은 0의 값도 아니며, 공백으로서 존재하지도 않는 다는 것이다.

즉, IS NULL 혹은 IS NOT NULL로만 비교가 가능하며,

<>NULL, !=NULL로서는 NULL 값을 확인할 수 없는 것이다.

 

ALTER TABLE


 

ALTER TABLE은 

컬럼의 길이나 크기를 늘리는 것은 자유로우나, 값이 존재할 경우에는 크기를 줄일 수 없지만

NULL 값만 가지거나 아무 행도 존재하지 않을 때에는 크기뿐만 아니라

TYPE 또한 변경할 수 있다.

NULL 값으로 설정되어 있지 않은 경우에만

NOT NULL이라는 제약 조건을 추가할 수 있다.

 

[ ADD ]

ALTER TABLE TESTTABLE
	ADD (COLUMN1 VARCHAR(10) DEFAULT 'TEST'
	     COLUMN2 NUMBER(20) DEFAULT 50);

 

ADD

기존 테이블에 새롭게 COLUMN을 추가하는 명령어이다.

 

[ DROP ]

ALTER TABLE TESTTABLE
	DROP COLUMN COLUMN1;

 

DROP은 

COLUMN을 삭제할 때 사용하며,

한 번 삭제된 COLUMN은 복구할 수 없다.

 

[ MODIFY ]

ALTER TABLE TESTTABLE
	MODIFY (COLUMN2 NOT NULL);

 

MODIFY

테이블에 이미 존재하는 COLUMN에 대해서

COLUMN의 유형, 길이 및 크기, DEFAULT값, NOT NULL 등에 대한

제약 조건 변경을 가능케 한다.

 

[ ADD CONSTRAINT ]

ALTER TABLE TESTTABLE 
	ADD CONSTRAINT PK PRIMARY KEY (COLUMN1, COLUMN2);

 

ADD CONSTRAINT

이미 생성되어 있는 테이블에 추가적으로 제약 조건을 입력하고 싶을 때 사용한다.

다만, CONSTRAINT에는 수정의 개념이 아니므로

수정을원한다면 기존 CONSTRAINT를 삭제하고 새롭게 만들어야 한다.

 

[ DROP CONSTRAINT ]

ALTER TABLE TESTTABLE
	DROP CONSTRAINT PK PRIMARY KEY (COLUMN1, COLUMN2);

 

DROP CONSTRAINT

테이블에 존재하는 제약 조건을 삭제할 때 사용한다.

 

DROP TABLE


 

DROP TABLE

더 이상 사용하지 않는 테이블을 삭제할 때에 사용한다.

이는 사용 시,

테이블 구조 및 행까지 모두 영구적으로 완전히 삭제된다.

 

[ CASCADE CONSTRAINT ]

DROP TABLE TESTTABLE CASCADE CONSTRAINT;

 

CASCADE CONSTRAINT

DROP TABLE을 사용했을 때,

자식 TABLE에 참조 제약이 걸려있는 경우 에러가 날 수 있으므로

이에 사용하는 문장이다.

 

TRUNCATE TABLE


 

TRUNCATE TABLE TESTTABLE;

 

TRUNCATE TABLE

테이블의 모든 행만 제거 후,

저장 공간을 재사용하도록 해제 해주는 역할을 한다.

 

 


loading