데이터 정의어라 부르는 DDL(Data Definition Language)은 데이터베이스 내의 데이터를 저장하고 관리하기 위해 필요한 여러 '객체'들을 생성, 수정, 삭제하기 위해 사용하는 명령어다. 그래서 DDL에는 CREATE문, ALTER문, RENAME문, TRUNCATE문, DROP문이 있다.
앞서 다뤘던 DML은 하나의 트랜잭션으로 묶고 COMMIT과 ROLLBACK을 통해 해당 SQL문의 작업내용을 제어했다. 즉, SQL문이 실행되고 트랜잭션 명령어를 또 실행해야 DB에 작업내용이 반영된다.
그러나 DDL은 그렇지 않다. DDL은 명령어를 실행하는 즉시 작업내용이 DB에 반영된다. 따라서 자동으로 COMMIT되고 ROLLBACK은 불가능하기 때문에 DDL을 사용할 때는 주의가 필요하다.
DDL은 테이블뿐만 아니라 다른 객체(시퀀스, 뷰 등)에서도 사용 가능하지만 지금은 테이블을 중점적으로 다루며 각 명령어들을 다루도록 하겠다.
-- 새 테이블 생성
CREATE TABLE 테이블명 (
컬럼1 자료형 제약조건
컬럼2 자료형 제약조건
컬럼3 자료형 제약조건
.
.
.
);
자료형은 해당 컬럼에 저장될 데이터의 타입을 정의한다. 자주 쓰이는 데이터타입은 다음과 같다. 고정길이는 할당된 데이터공간이 10byte이고 저장한 데이터가 3byte라면 나머지 7byte는 공백으로 채워지는 형식이다. 가변길이는 데이터공간이 저장되는 데이터만큼 할당되는 형식이다.
| 데이터타입 | 설명 | 기본값 |
|---|---|---|
| CHAR(n) | n byte문자열, 최대 2000byte, 고정길이 문자 | 1byte |
| VARCHAR2(n) | n byte문자열, 최대 4000byte, 가변길이 문자 | 1byte |
| NUMBER(P,S) | P : 소수점을 포함한 전체 자리수 S : 소수점 자리수 가변길이 숫자 | 0 |
| DATE | 날짜 | - |
제약조건은 각 컬럼에 특정 데이터만 저장될 수 있도록 또는 데이터의 중복을 방지하도록 조건을 지정하는 것이다. 이와 관련한 여러 제약조건이 있는데 추후에 다루도록 한다.
-- ADD절로 컬럼 추가
ALTER TABLE 테이블명
ADD 컬럼 자료형;
-- RENAME절로 컬럼이름 변경
ALTER TABLE 테이블명
RENAME 기존 컬럼명 TO 새 컬럼명;
-- MODIFY절로 열 길이(데이터 저장공간) 변경
ALTER TABLE 테이블명
MODIFY 컬럼 자료형;
-- DROP절로 특정 열 삭제
ALTER TABLE 테이블명
DROP COLUMN 컬럼;
-- 테이블 이름 변경
RENAME 기존 테이블명 TO 새 테이블명;
-- 테이블 내의 모든 데이터를 삭제한다.
TRUNCATE TABLE 테이블명;
-- 테이블을 삭제한다.
DROP TABLE 테이블명;