컴퓨터 공부/Advanced Database

[6월 1일 3교시] 테이블 생성 2

려리군 2009. 6. 1. 16:54

NOT NULL 제약조건 

 - NULL값을 가질 수 없다.

 - 테이블에 모든 행은 그 열에 대한 값을 가지고 있어야 한다.

 - Column에만 줄 수 있다.

 - 정의방법

Column 제약조건

사용법 : Column [CONSTRAINT 제약조건명] 제약조건형태


UNIQUE 제약조건 

 - 각 행(row)은 유일한 값을 가진다. (유일키에 대해 테이블에서 2개의 행이 같은 값을 가질 수 없다.)

 - NULL값을 가질 수 있다. 

 - 복합 유일 키는 32개의 column까지 가질 수 있다. ( 열(column)과 열의 조합으로 구성될 수 있다.)

 - 오라클은 자동으로 주키 열(column)에 대한 유일한 인덱스를 생성한다.


PRIMARY KEY 제약조건 

 - 테이블은 하나의 주키만 가진다.

 - 복합 주 키는 32개의 column까지 가질 수 있다. ( 열(column)과 열의 조합으로 구성될 수 있다.)

 - 오라클은 자동으로 주키 열(column)에 대한 유일한 인덱스를 생성한다.


FOREIGN KEY 제약조건

 - 외래키를 가지는 테이블은 자식 테이블이라 불리고 참조 키를 가지는 테이블은 부모 테이블이라 불린다.

 - 부모테이블의 참조되는 유일키나 주키는 미리 정의되어 있어야 한다.

 - 외래키와 참조키는 같은 테이블에 있을 수 있다. 이 경우 부모/자식 테이블은 같아야 한다.

 - 테이블에서 여러 개의 외래키를 정의할 수 있다.


참조 무결성 제약 조건

restrict : 참조 값에 대해 delete나 update를 허락하지 않는다.

set to null : 참조 값에 대한 delete나 update를 하면서 모든 종속되는 값(자식 테이블)을 NULL로 설정.

set to default : 참조 값에 대한 delete나 update를 하면서 모든 종속되는 값(자식 테이블)을 default값으로 설정.

cascade : 참조 값이 update(갱신)될 때 종속되는 값(자식테이블)을 같은 값으로 설정하고 delete(삭제)될 때 (자식테이블)종속되는 행을 같이 삭제한다.

예시) 주문장을 삭제 하면 그 목록에 대한 내용을 삭제한다. 

ORD(주문장) 테이블 ordno, orddate, customer_id...

ITEM(주문목록) 테이블 ordno, itemno, item_name, num


사용방법

(컬럼명 NUMBER(7) CONSTRAINT 제약조건명 REFERENCES 부모테이블(부모테이블컬럼명)

※ REFERENCES에서 부모테이블명(부모테이블컬럼명)에서 (부모테이블컬럼명)을 삭제하면 테이블명의 주키와 연결된다.


CHECK 제약조건

 - 반드시 참이어야 하는 제약조건 정의


서브쿼리에 의한 CREATE TABLE

사용법

CREATE TABLE 대상테이블명 AS SELECT (column명,...|*) FROM 원본테이블명 WHERE 조건;


NOT NULL 정의는 복사할 수 있지만 PRIMARY KEY 정의는 복사되지 않는다.

그 외의 테이블 구조는 복사가 되며 '조건'에 따라 테이블에 대한 데이터가 복사된다.


※ 테이블 명을 바꿔서 복사하고 싶을 때

CREATE TABLE new_emp3

AS SELECT empno eno, ename name, sal salary 

FROM emp

WHERE deptno = 10;

혹은

CREATE TABLE new_emp3(eno, name, salary)

AS SELECT empno, ename, sal

FROM emp

WHERE deptno = 10;