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;
'컴퓨터 공부 > Advanced Database' 카테고리의 다른 글
[6월 2일 2교시] DML 2 (0) | 2009.06.02 |
---|---|
[6월 2일 1교시] Data dictionary views + DML 1 (0) | 2009.06.02 |
[6월 1일 2교시] SQL Plus 명령 2 + 테이블 생성 1 (0) | 2009.06.01 |
[6월 1일 1교시] SQL Plus 명령 1 (0) | 2009.06.01 |
[5월 28일 3교시] 서브쿼리 (0) | 2009.05.28 |