- 데이터 정의 언어(객체 생성, 수정, 삭제)
- 객체(OBJECT)를 만들고(CREATE), 수정(ALTER)하고, 삭제(DROP) 등 데이터의 전체 구조를 정의하는 언어로 주로 DB관리자, 설계자가 사용한다.
- 테이블이나 인덱스, 뷰 등 다양한 데이터베이스 객체를 생성하는 구문으로 테이블로 생성된 객체는 DROP 구문을 통해 제거 할 수 있다.
CREATE TABLE 테이블명 (
컬럼명 자료형(크기),
컬럼명 자료형(크기),
...);
[표현식]
COMMENT ON COLUMN 테이블명.컬럼명 IS '주석내용';
- 사용자가 원하는 조건의 데이터만 유지하기 위해서 특정 컬럼에 설정하는 제약이다.
- 데이터 무결성 보장을 목적으로 한다.
--> 데이터 무결성이란? 중복 데이터 X, NULL X
- 입력 데이터에 문제가 없는지 자동으로 검사하는 목적
- 데이터의 수정/삭제 가능여부 검사등을 목적으로 한다.
--> 제약조건을 위배하는 DML 구문은 수행할 수 없음!
- 제약조건 종류
PRIMARY KEY, NOT NULL, UNIQUE, CHECK, FOREIGN KEY.
해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
삽입/수정시 NULL값을 허용하지 않도록 컬럼레벨에서 제한
컬럼에 입력 값에 대해서 중복을 제한하는 제약조건
컬럼레벨에서 설정 가능, 테이블 레벨에서 설정 가능하다.
단, UNIQUE 제약 조건이 설정된 컬럼에 NULL 값은 중복 삽입 가능하다.
테이블에서 한 행의 정보를 찾기위해 사용할 컬럼을 의미한다.
테이블에 대한 식별자(IDENTIFIER) 역할을 한다.
NOT NULL + UNIQUE 제약조건의 의미
한 테이블당 한 개만 설정할 수 있다.
컬럼레벨, 테이블레벨 둘다 설정 가능하다.
한 개 컬럼에 설정할 수도 있고, 여러개의 컬럼을 묶어서 설정할 수 있다.
--> 다른 테이블의 PK 또는 UNIQUE 제약조건이 설정된 컬럼
참조(REFERENCES)된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있다.
FOREIGN KEY제약조건에 의해서 테이블간의 관계(RELATIONSHIP)가 형성된다.
제공되는 값 외에는 NULL을 사용할 수 있다.
[컬럼레벨일 경우]
컬럼명 자료형(크기) [CONSTRAINT 이름] REFERENCES 참조할 테이블명 [(참조할컬럼)][삭제룰]
[테이블레벨일 경우][CONSTRAINT 이름] FOREIGN KEY (적용할컬럼명) REFERENCES 참조할테이블명 [(참조할컬럼)][삭제룰]
--> 테이블 레벨에서만 FOREIGN KEY 단어가 사용된다.
참조될 수 있는 컬럼은 PRIMARY KEY컬럼과, UNIQUE 지정된 컬럼만 외래키로 사용할 수 있다.
참조할 테이블의 참조할 컬럼명이 생략이 되면, PRIMARY KEY로 설정된 컬럼이 자동 참조할 컬럼이 된다.
컬럼에 기록되는 값에 조건 설정을 할 수 있다.
CHECK (컬럼명 비교연산자 비교값)
주의 : 비교값은 리터럴만 사용할 수 있음, 변하는 값이나 함수 사용 못한다.