DDL이란? DDL 개념, DDL 정의, CREATE문, DROP문, ALTER문, TRUNCATE문

이번 포스팅은 DDL 에 대해 알아보겠습니다!

 

DDL이란 무엇일까요?

Data Definition Language 의 약자로 데이터베이스 객체들을 생성하는데 사용되는 SQL문입니다. 데이터베이스 객체에는 데이터베이스, 테이블, 인덱스, 뷰, 트리거 등이 있고 이를 생성하는 데도 SQL문이 작성되는데 이 때 사용되는 SQL 문장들을 DDL이라고 합니다. 

 

DDL에는 대표적은 CREATE, DROP, ALTER, TRUNCAE 등 4개의 문장이 있습니다.

 

1. CREATE 문

데이터베이스 객체들을 생성할 때 사용합니다. CREATE문은 생성하는 데이터베이스 객체가 무엇이냐에 따라 그 용법이 다릅니다.

기본적인 구조는 "CREATE 객체종류 객체명 ..." 으로 동일합니다.

인덱스를 생성할 경우에는 "CREATE INDEX 인덱스명 ..." 처럼 사용합니다.

 

2. DROP 문

CREATE문과 반대로 이미 생성된 객체들을 삭제할 때 사용합니다. 삭제한다고 해서 DELETE 와 혼동하면 안됩니다!

DELETE는 테이블 상의 데이터를 삭제할 때 사용하는 것이고 DROP은 객체 자체를 데이터베이스에서 영구히 없앨 때 사용하는 문장입니다. 즉 객체를 소멸시킨다고 할 수 있습니다.

DROP문 역시 CREATE 문과 마찬가지로 대상 개게에 따라 용법이 다르지만 기본 골격은 "DROP 객체종류 객체명" 형태를 가집니다.

 

3. ALTER문

기존에 생성된 객체를 변경할 때 사용되는 문장입니다. 예를 들어, 테이블을 하나 생성해서 사용하고 있는데 갑자기 컬럼을 추가하는 것처럼 테이블 구조를 변경해야만 하는 경우가 있습니다. 이런 경우, 기존 테이블을 DROP 시키고 다시 생성하는 것은 무책임한 일입니다. 왜냐하면 기존 테이블에 이미 많은 양의 데이터가 저장되어 있을 경우에는 DROP하는 동시에 모든 데이터들이 사라지기 때문입니다. 이러한 경우에는 ALTER문을 사용합니다. ALTER문 역시 대상 객체에 따라 용법이 다르지만 CREATE 와 DROP 과 비슷합니다.

 

4. TRUNCATE문

TRUNCATE문은 DELETE문과 동일한 역할을 합니다. 즉, 테이블에 있는 데이터들을 삭제할 때 사용됩니다. 차이점이 있습니다. TRUNCATE문을 사용하여 데이터를 삭제했을 경우에 ROLLBACK을 사용하여 데이터를 복구할 수 없습니다!

TRUNCATE가 실행되면서 자동 COMMIT이 되기 떄문인데요, 그래서 TRUNCATE문은 DML이 아닌 DDL에 속하게 됩니다. 

 

 

* TRUNCATE 특징

- DELETE보다 수행속도가 빠르고 수행비용이 적다.

- 테이블에 있는 인덱스나 트리거에 영향을 주지 않고 데이터만 삭제된다.

- DROP은 테이블에 있는 데이터를 삭제함은 물론 테이블 구조까지 소멸시키는 반면에 DELETE는 메모리상에 존재하는 테이블의 데이터를 삭제한다. TRUNCATE 테이블 구조는 그대로 두고 메모뿐만 아니라 데이터 파일에 있는 데이터까지 삭제하지만 테이블 구조는 그대로 보존한다.

 

TRUNCATE 구문형식은 아래와 같습니다.

 

TRUNCATE TABLE 테이블명 ...

 

 

도움이 되셨나요?  다음 포스팅에서 뵙겠습니다^^

반응형