본문 바로가기

데이터베이스

[SQL] 테이블 생성 - CREATE TABLE (설명, 연습문제)

 

테이블의 생성

CREATE TABLE 테이블_이름 ( 속성_이름 데이터 타입 [NOT NULL] [DEFAULT 기본_값] [PRIMARY KEY (속성_리스트)] [UNIQUE (속성_리스트)] [FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)] [ON DELETE 옵션] [ON UPDATE 옵션] [CONSTRAINT 이름] [CHECK(조건)] );

1) 속성_이름 데이터 타입 [NOT NULL] [DEFAULT 기본_값]

[NOT NULL] : 속성의 널 값을 허용하지 않을 경우 사용한다. (사용하지 않을 시 널 값이 허용된다.)

[DEFAULT 기본_값] : 속성의 기본 값을 지정한다. (설정하지 않을 시 널 값이 저장된다.)

2)[PRIMARY KEY (속성_리스트)]

기본키를 지정하는 키워드

모든 테이블에서 기본키는 반드시 하나만 지정할 수 있고, 여러 개의 속성으로 구성할 수도 있다.

기본키로 지정한 속성은 굳이 NOT NULL을 표기하지 않아도 자동으로 NOT NULL 특성을 갖는다.

 

3)[UNIQUE (속성_리스트)]

대체키를 지정하는 키워드

기본키와 같은 특성을 지녔지만, 기본키와는 달리 널 값을 가질 수 있으며, 여러 개 지정할 수 있다.

4)[FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)]

외래키를 지정하는 키워드 - FOREGIN KEY (외래 키) REFERENCES 테이블_이름(참조 대상)

외래 키가 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES 다음에 명확히 제시해야 한다.(참조 무결성 제약조건을 유지)

[ON DELETE 옵션] [ON UPDATE 옵션]

참조되는 테이블에서 투플을 삭제하거나 변경할 때 처리하는 방법을 다양하게 선택할 수 있다.

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

관련 투플의 외래키 값을 미리 지정한 기본 값으로 변경한다.

5)[CONSTRAINT 이름] [CHECK(조건)]

CONSTRAINT 이름 : CHECK(조건)으로 지정한 제약조건에 고유의 이름을 부여

이후에 제약조건을 수정하거나 제거할 때 식별하기 쉽다.

CHECK(조건) : 데이터 무결성을 위한 제약조건을 정의

테이블에는 제약조건을 만족하는 투플만 존재하게 된다.


키워드 연습 문제

1) 고객 테이블의 고객 아이디 속성을 길이가 최대 20인 가별 길이의 문자열 데이터로 구성하고, 널 값을 허용하지 않는다.

2) 고객 테이블의 적립금 속성을 정수 데이터로 구성하고, 사용자가 적립금을 입력하지 않으면 0이 기본으로 저장되도록 한다.

 

3) 고객 테이블의 담당자 속성은 길이가 최대 10인 가별 길이의 문자열 데이터로 구성하고, 담당자를 입력하지 않으면 방경아가

기본 값으로 지정되도록 한다.

4) 고객아이디 속성을 기본키로 지정함

5) 주문고객과 주문제품 속성으로 기본키를 지정함

6) 고객이름 속성을 대체키로 지정함

7) 소속부서 속성이 부서 테이블의 부서 번호 속성을 참조하는 외래 키이고 ON DELETE CASCADE와 ON UPDATE CASECADE

방법으로 처리함

8) 모든 제품의 재고량은 항상 0개 이상, 10000개 이하로 유지되어야 한다는 데이터 무결성 제약조건

9) 모든 제품의 제조업체로 한빛제과만 허용된다는 데이터 무결성 제약조건에 CHK_CPY이라는 고유의 이름을 부여함.

테이블 생성 연습 문제

1) 고객 테이블은 고객아이디, 고객 이름, 나이, 등급, 직업, 적립금 속성으로 구성되고, 고객 아이디 속성이 기본키다.

고객이름과 등급 속성은 값을 반드시 입력해야 하고, 적립금 속성은 값을 입력하지 않으면 0이 기본으로 되도록 생성해보자.

2) 제품 테이블은 제품번호, 제품명, 재고량, 단가, 제조업체 속성으로 구성되고, 제품번호 속성이 기본키다.

재고량이 항상 0개 이상 10000개 이하를 유지하도록 생성해보자.

3) 주문 테이블은 주문번호, 주문 고객, 주문제품, 수량, 배송지, 주문 일자 속성으로 구성되고, 주문번호 속성이 기본키다.

주문고객 속성이 고객 테이블의 고객 아이디 속성을 참조하는 외래 키이고, 주문제품 속성이 제품 테이블의 제품번호 속성을

참조하는 외래키가 되도록 생성해보자.

4) 배송업체 테이블은 업체번호, 업체명, 주소, 전화번호 속성으로 구성되고 업체번호 속성이 기본키다. 테이블을 생성해보자.

 

ref. IT CookBook, 데이터베이스 개론(2판): 기초 개념부터 빅데이터까지 김연희