제약조건
○ 제약조건 이름 설정 : CONSTRAINT
○ 제약조건 추가 : ALTER ~ ADD CONSTRAINT
ALTER TABLE table1 ADD CONSTRAINT cs NOT NULL(column1);
ALTER TABLE table1 ADD CONSTRAINT cs FOREIGN KEY(column1) REFERENCES table2(column1);
○ 제약조건 수정 : ALTER ~ MODIFY ( 컬럼명 CONSTRAINT 제약조건명 제약조건)
ALTER TABLE table1
MODIFY (column1 CONSTRAINT cs NOT NULL);
○ 제약조건 이름 변경 : ALTER ~ RENAME CONSTRAINT 제약조건명 TO 바꿀제약조건명
ALTER TABLE table1
RENAME CONSTRAINT cs TO cs2;
○ 제약조건 삭제 : ALTER ~ DROP CONSTRAINT 제약조건명
ALTER TABLE table1
DROP CONSTRAINT cs;
○제약조건 확인 : USER_CONSTRAINTS (데이터 사전) 사용
- constraint_type -> P : Primary key, U : Unique, C : Check, R : foReign key
SELECT constraint_name, constraint_type, talbe_name
FROM USER_CONSTRAINTS;
● NOT NULL (nn) : NULL값 x
- NOT NULL 해제시 제약조건을 NULL로 하면됨
● UNIQUE (unq) : 중복값 x, NULL값은 o (NULL값들은 중복값이 아님)
● PRIMARY KEY (기본키, pk) : NULL값 x + 중복값 x
● FOREIGN KEY (외래키, fk) : REFERENCES 사용, 다른 테이블의 컬럼을 참조해서 데이터를 입력함
- 부모 테이블의 Reference Key가 Unique이거나 기본키 여야함. ex) table2의 deptno
CREATE TABLE table1( -- 자식 테이블
no NUMBER(2) CONSTRAINT table1_no_pk PRIMARY KEY
CONSTRAINT table1_no_ck CHECK(no < 50),
name VARCHAR(10),
deptno NUMBER(2) CONSTRAINT table1_deptno_fk REFERENCES table2(deptno)
);
CREATE TABLE table2( -- 부모 테이블
deptno NUMBER(2) CONSTRAINT table2_deptno_pk PRIMARY KEY,
deptname VARCHAR(10),
locno NUMBER(3) CONSTRAINT table2_locno_nn NOT NULL
);
● CHECK (ck): 값의 범위나 패턴 설정
● DEFAULT(기본값)
CREATE TABLE table1(
no NUMBER(2) CONSTRAINT nn NOT NULL,
name VARCHAR(10) DEFAULT 'ABC',
deptno NUMBER(2) CONSTRAINT ck CHECK (deptno < 50)
);