본문 바로가기
IT 이론/데이터베이스

[데이터베이스] Table Statement and Constraint

by 지식id 2012. 11. 11.
반응형
  1. CREATE TABLE EMPLOYEE (
  2.   empno INTEGER NOT NULL,
  3.   empname CHAR(10) UNIQUE,
  4.   title CHAR(10) DEFAULT '대기사원',
  5.   manager INTEGER,
  6.   salary INTEGER
  7.     CONSTRAINT limit_sal CHECK (salary < 500000),
  8.   bonus INTEGER,
  9.   dno INTEGER CHECK(dno in (1, 2, 3, 4)) DEFAULT 1,  
  10.   CONSTRAINT employee_pk PRIMARY KEY (empno),
  11.   FOREIGN KEY (dno) REFERENCES DEPARTMENT(deptno)
  12.   CHECK (salary > bonus),
  13.   CONSTRAINT check_sal CHECK (salary + bonus < 700000) DISABLE
  14. );
  15. ALTER TABLE EMPLOYEE ADD CONSTRAINT EMPLOYEE_PK PRIMARY KEY (empno);
  16. ALTER TABLE EMPLOYEE DROP CONSTRAINT EMPLOYEE_PK;
  17. ALTER TABLE EMPLOYEE DROP PRIMARY KEY CASCADE; // 참조키까지 삭제
  18. ALTER TABLE EMPLOYEE ENABLE CONSTRAINT check_sal;

1. 기본적인 테이블 생성 명령어의 형식은

CREATE TABLE name (

칼럼이름  데이터 타입  옵션,

키 및 릴레이션 옵션

);

 

각종 옵션들은 필수 요소가 아니다. PRIMARY KEY또한 지정하지 않아도 테이블을 사용 할 수 있다. 즉, 가장 기본적인 형태는

 

CREATE TABLE name (

칼럼이름 데이터 타입,

칼럼이름 데이터 타입,

...

칼럼이름 데이터 타입

);

 

이라고 할 수 있다.

 

2. 2번, 3번, 4번 줄을 보면 가장 기본적인 옵션을 알 수 있다. 빈값을 넣을 수 없게 하는 NOT NULL, 중복되는 값을 넣을 수 없게 하는 UNIQUE, 기본값을 지정하는 DEFAULT 등의 여러가지 옵션이 들어갈 수 있다.

 

3. 6번 줄, 7번 줄을 보면 limit_sal이라는 이름의 CONSTRAINT를 만들고, salary가 50보다 작은지 검사 하도록 했다. 이것은 나중에 salary에 값을 넣을 때 50이상의 값은 넣을 수 없게 하는 제약이다.

 

4. 9번 줄처럼 제약사항을 만들지만 이름을 지정하지 않을 수도 있다. 이 줄에서 in은 집합의 속함 관계이다. 1, 2, 3, 4중 하나의 값이어야 하고 값을 따로 넣지 않을 경우 기본값은 1이 된다.

 

5. 13번 줄은 두 칼럼을 사용하여 제약을 만든 것이기 때문에 칼럼을 다 정의 한 다음 CONSTRAINT를 정의하였다.

 

6. 14번 줄도 마찬가지이지만 CONTRAINT 이름을 지정하여 주었다. 그리고 현재는 DISABLE시켜 놓은 상태 즉, 제약을 만들어 져 있지만 나중에 필요가 있을 때 검사를 하고 지금은 검사를 하지 않겠다는 것이다.

 

7. CONSTRAINT의 이름을 지정 해 주면 ENABLE/DISABLE 및 삭제가 편하다.

 

 

*[데이터베이스]로 분류된 포스팅에 포함된 문들을 오타가 있을 수 있으며 특정 DBMS에서 테스트되지 않았습니다. 그냥 이론으로만 참고 하세요. 데이터베이스 내용은 박영철 교수님의 수업 자료를 바탕으로 하고 있으며, 그대로 차용된 설명 내용이나 예제가 있으니 맘대로 퍼가시면 안됩니다~

반응형

댓글