DDL(Data Definition Language)
데이터 정의 언어는 이름 그대로 데이터를 정의 하는 언어입니다.
해당 데이터가 무엇을 의미하는지 정의합니다.
사실 데이터만 정의 하는것이 아니라 (논리적인)구조에 관련된 전반적인 것들을 정의할 때 사용합니다.
제약조건, 릴레이션간의 관계, 데이터의 순서 등을 정의합니다.
예를들면, <출석부> 릴레이션이 있다고 합시다. 그리고 아래처럼 생긴 릴레이션을 만드려고 합니다.
| 번호 | 이름 | 성별 | 출석여부 |
|---|---|---|---|
| 001 | 김이박 | 남자 | |
| 002 | 나박류 | 여자 |
DDL 을 이용해 하는 것은 <출석부> 라는 릴레이션이 있음을 명시하고, 그 안에 ‘번호, 이름, 성별, 출석여부 라는 데이터가 존재한다.’ 라고 작성하는 것입니다.
그리고 ‘번호는 1 부터 40 까지만 존재한다’ 라고 하는 제약조건, ‘성별은 남자와 여자 두 가지만 존재한다’는 제약조건을 작성하는 것도 DDL에서 합니다.
DB 에는 <출석부> 외에도 다양한 릴레이션을 정의해놓게 됩니다. 그 중 <재학생> 이라는 릴레이션과 관계를 작성하는 것도 DDL 에서 합니다.
DDL의 결과는 메타데이터(meta data)입니다. 메타데이터란 쉽게 말해서 ‘데이터를 설명하는 데이터’를 의미합니다.
DDL의 결과는 데이터사전(data dictionary)에 저장됩니다. 데이터 사전에는 DB System만이 접근할 수 있습니다.
SQL DDL
SQL DDL 에는 create, drop(삭제), alter(수정) 가 있습니다.
새로운 테이블을 정의하고 싶다면 create table
기존 테이블을 삭제하고 싶다면 drop table
기존 테이블의 구조를 변경하고 싶다면 alter table 로 작성합니다.
위에서 예시로 들었던 릴레이션을 sql로 작성하면 아래와 같습니다.
1
2
3
4
5
6
create table 출석부 (
번호 smallint check (40 >= 번호 and 번호 >= 1),
이름 char(10),
성별 char(4) check (성별 = '남자' or 성별 = '여자'),
출석여부 bool
)