SQL을 이용한 데이터 정의
데이터베이스 개론 - 교보문고
[요약]①데이터베이스 기초 이론 : 1장에서 데이터베이스를, 2장에서 DBMS를 소개합니다. 3장에서는 이들을 조합한 데이터베이스 시스템을 소개합니다.②데이터 모델과 연산 : 4장에서 데이터 모
www.kyobobook.co.kr
SQL의 데이터 정의 기능은 테이블 생성, 생성된 테이블 구조의 변경, 테이블 삭제로 분류할 수 있다.
테이블 생성
CREATE TABLE 테이블_이름(
1 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값]
2 [PRIMARY KEY (속성_리스트)]
3 [UNIQUE (속성_리스트)]
4 [FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)]
[ON DELETE 옵션] [ON UPDATE 옵션]
5 [CONSTRAINT 이름] [CHECK(조건)]
);
1. 테이블을 구성하는 각 속성의 이름가 데이터 타입, 기본적인 제약 사항을 정의한다.
2. 기본키로 테이블에 하나만 존재할 수 있다.
3. 대체키로 테이블에 여러 개 존재할 수 있다.
4. 외래키로 테이블에 여러 개 존재할 수 있다.
5. 데이터 무결성을 위한 제약조건으로 테이블에 여러 개 존재할 수 있다.
SQL 문은 세미콜론(;)으로 문장 끝을 표시한다.
SQL 문에 사용되는 키워드는 대소문자를 구분하지 않는다.
속성의 정의
테이블을 구성하는 속성은 널 값을 허용한다.
널 값을 허용하지 않으려면 NOT NULL 키워드를 표기하여야 한다.
| 데이터 타입 | 의미 |
| INT 또는 INTEGER | 정수 |
| SMALLINT | INT보다 작은 정수 |
| CHAR(n) 또는 CHARACTER(n) | 길이가 n인 고정 길이의 문자열 |
| VARCHAR(n) 또는 CHARACTER VARYING(n) |
최대 길이가 n인 가변 길이의 문자열 |
| NUMERIC(p,s)또는 DECIMAL(p,s) | 고정 소수점 실수 p는 소수점을 제외한 전체 숫자의 길이고, s는 소수점 이하 숫자의 길이 |
| FLOAT(n) | 길이가 n인 부동 소수점 실수 |
| REAL | 부동 소수점 실수 |
| DATE | 연, 월, 일로 표현되는 날짜 |
| TIME | 시, 분, 초로 표현되는 시간 |
| DATETIME | 날짜와 시간 |
속성에 기본 값을 지정해두지 않으면 값을 입력하지 않았을 때 널 값이 저장된다.
DEFAULT로 기본 값을 지정할 수 있다.
키의 정의
- 기본키
PRIMARY KEY 키워드를 사용해 지정한다.
기본키는 반드시 하나만 지정하고 여러 개의 속성으로 구성할 수도 있다.


- 대체키
UNIQUE 키워드를 사용해 지정한다.
한테이블에 여러 개 지정할 수 있고, 유일성을 가져야 하며 기본키와 같이 유일하게 식별하는 특성이 있다.

- 외래키
FOREIGN KEY 키워드를 사용해 지정한다.
출처를 분명히 밝혀야 한다. 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES 키워드 다음에 명확하게 제시해야 한다.
외래키를 사용하여 만든 테이블의 투플을 삭제할 때는 다음 방법 중 하나를 사용한다.
ON DELETE NO ACTION : 투플을 삭제하지 못하게 한다.
테이블을 만들 때 지정하지 않으면 기본으로 선택한다.
ON DELETE CASCADE : 관련 투플을 함께 삭제한다.
ON DELETE SET NULL : 관련 투플의 외래키 값을 NULL로 변경한다.
ON DELETE SET DEFAULT : 관련 투플의 외래키 값을 미리 지정한 기본 값으로 변경한다.
참조되는 테이블의 투플이 변경될 때도 다음 네 가지 중 한 가지 방법을 사용한다.
ON UPDATE NO ACTION : 투플을 변경하지 못하도록 한다.
테이블을 만들 때 지정하지 않으면 기본으로 선택한다.
ON UPDATE CASCADE : 관련 투플에서 외래키 값을 함께 변경한다.
ON UPDATE SET NULL : 관련 투플의 외래키 값을 NULL로 변경한다.
ON UPDATE SET DEFAULT : 관련 투플의 외래키 값을 미리 지정한 기본 값으로 변경한다.

CHECK 키워드를 사용해 특성 속성에 대한 제약조건을 지정할 수 있다.
그러면 테이블에는 CHECK 키워드로 지정한 제약조건을 만족하는 투플만 존재하게 된다.

CHECK 키워드를 사용해 지정한 제약 조건에 CONSTRAINT 키워드와 함께 고유의 이름을 부여할 수도 있다.
테이블 생성의 예


