데이터 정의 명령어(DDL, Data Definition Language)는 스키마, 테이블, 뷰(View), 인덱스(Index) 등 데이터베이스 객체를 생성하고, 수정하고, 삭제하는 데 사용되는 SQL 명령어입니다. DDL은 데이터베이스의 구조 자체를 다루기 때문에, 데이터를 조작하는 DML(Data Manipulation Language)과 구분됩니다.
이 글에서는 대표적인 데이터 정의 명령어인 CREATE, ALTER, DROP, TRUNCATE, COMMENT, RENAME의 개념과 문법, 그리고 실제 사용 예제를 살펴보겠습니다.
1. CREATE – 테이블 생성
CREATE 명령어는 데이터베이스에 새로운 테이블을 만들 때 사용합니다. 미리 정의된 문법에 따라 컬럼(열) 이름과 각 컬럼의 데이터 타입을 지정합니다.
문법
CREATE TABLE <테이블 이름> ( <컬럼 이름> <데이터 타입>, <컬럼 이름> <데이터 타입>, <컬럼 이름> <데이터 타입>, <컬럼 이름> <데이터 타입> );
예제
학생 이름(student name)과 학번(roll number) 컬럼을 가진 STUDENT 테이블을 생성해 보겠습니다.
CREATE TABLE STUDENT (STUDENT_NAME VARCHAR(30), ROLL_NUMBER INT );
위 문장을 실행하면 최대 30자의 문자열을 저장할 수 있는 STUDENT_NAME 컬럼과 정수형 ROLL_NUMBER 컬럼으로 구성된 빈 테이블이 만들어집니다.
2. ALTER – 기존 객체 수정
ALTER 명령어는 이미 존재하는 데이터베이스 객체의 구조를 변경할 때 사용합니다. 테이블에 대해 다음과 같은 작업을 수행할 수 있습니다.
- 새로운 컬럼 추가
- 새로운 무결성 제약조건(Integrity Constraint) 추가
- 기존 컬럼 수정
- 무결성 제약조건 삭제
문법
ALTER 명령어의 일반적인 문법은 아래와 같습니다.
새로운 컬럼 추가하기
ALTER TABLE <table_name> ADD <column_name>
테이블 이름 변경하기
ALTER TABLE <table_name> RENAME TO <new_table_name>
컬럼 수정하기
ALTER TABLE <table_name> MODIFY <column_name> <data type>
컬럼 삭제하기
ALTER TABLE <table_name> DROP COLUMN <column_name>
예를 들어, STUDENT 테이블에 이메일 컬럼을 추가하려면 다음과 같이 작성할 수 있습니다.
ALTER TABLE STUDENT ADD EMAIL VARCHAR(50);
3. DROP – 객체 삭제
DROP 명령어는 인덱스, 테이블, 뷰 등 관계형 데이터베이스 관리 시스템(RDBMS)의 구성 요소를 삭제할 때 사용합니다. 한 번 삭제된 객체는 복구할 수 없으며, 해당 객체가 저장 공간까지 함께 제거된다는 점에서 TRUNCATE와 차이가 있습니다.
DROP 명령어의 일반적인 문법은 다음과 같습니다.
DROP TABLE <table_name>; DROP DATABASE <database_name>; DROP INDEX <index_name>;
4. TRUNCATE – 전체 데이터 삭제
TRUNCATE 명령어는 테이블의 모든 레코드(데이터)를 삭제하지만, 테이블의 구조 자체는 그대로 유지합니다. 즉, 테이블은 남아 있고 내용만 비워지는 것입니다.
문법
TRUNCATE TABLE <table_name>
DROP이 테이블 구조까지 제거한다면, TRUNCATE는 구조를 보존한 채 데이터만 삭제한다는 점이 핵심 차이입니다.
5. COMMENT – 주석 추가
COMMENT 명령어는 데이터 사전(Data Dictionary)에 주석을 추가할 때 사용합니다. SQL 코드 내에서 주석을 작성하는 방법은 다음과 같습니다.
- 한 줄 주석: 주석 앞에 '--'를 붙입니다.
- 여러 줄 주석: '/*'와 '*/' 사이에 주석 내용을 작성합니다.
-- 한 줄 주석 예시 /* 여러 줄 주석 예시 */
6. RENAME – 객체 이름 변경
RENAME 명령어는 테이블, 뷰 등 데이터베이스 객체의 이름을 변경할 때 사용합니다.
문법
RENAME <old_name> TO <new_name>
예를 들어 STUDENT 테이블의 이름을 LEARNER로 바꾸려면 다음과 같이 실행합니다.
RENAME STUDENT TO LEARNER;
마무리
DDL 명령어는 데이터베이스의 뼈대를 설계하고 관리하는 필수 도구입니다. CREATE로 구조를 만들고, ALTER로 수정하며, DROP과 TRUNCATE로 삭제하는 흐름을 정확히 이해해 두면 실무에서 데이터베이스를 다룰 때 큰 도움이 됩니다. 특히 DROP과 TRUNCATE의 차이, 그리고 삭제된 객체는 복구할 수 없다는 점은 반드시 기억해 두시기 바랍니다.