외래키 제약조건
외래키는 부모테이블에서 참조가능한 값이어야한다
• 컬럼 단위로 제약 조건을 거는 방법
컬럼 하나의 정의가 끝나기 전에 제약 조건을 건다
CREATE TABLE EMP06(
EMPNO NUMBER(4)
CONSTRAINT EMP06_EMPNO_PK PRIMARY KEY ,
ENAME VARCHAR2(10)
CONSTRAINT EMP06_ENAME_NN NOT NULL,
JOB VARCHAR2(9),
DEPTNO NUMBER(2)
CONSTRAINT EMP06_DEPTNO_FK REFERENCES DEPT(DEPTNO)
);
• 테이블 단위로 제약 조건을 거는 방법
복합키를 기본키로 주거나 alter 테이블로 제약 조건을 추가할때는 테이블 단위로 제약을 건다
CREATE TABLE EMP03(
EMPNO NUMBER(4) CONSTRAINT EMP03_ENAME_NN NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
DEPTNO NUMBER(4),
CONSTRAINT EMP03_EMPNO_PK PRIMARY KEY(EMPNO),
CONSTRAINT EMP03_JOB_UK UNIQUE(JOB),
CONSTRAINT EMP03_DEPTNO_FK FOREIGN KEY(DEPTNO)
REFERENCES DEPT(DEPTNO)
);
• alter 문으로 기존 테이블에 제약 조건 추가하기
add로 기본키, 외래키 등 제약 추가
modify로 널 제약조건 추가
ALTER TABLE EMP01
ADD CONSTRAINT EMP01_EMPNO_PK PRIMARY KEY(EMPNO);
ALTER TABLE EMP01
ADD CONSTRAINT EMP01_DEPTNO_FK
FOREIGN KEY(DEPTNO) REFERENCES DEPT(DEPTNO);
ALTER TABLE EMP01
MODIFY ENAME CONSTRAINT EMP01_ENAME_NN NOT NULL;
• 제약조건을 제거하기
drop constraint 제약명; 형태로 한다
• 제약조건 비활성화/ 활성화
ALTER TABLE EMP01
DISABLE CONSTRAINT EMP01_DEPTNO_FK;
ALTER TABLE table_name
ENABLE [CONSTRAINT constraint_name];
제약조건이 있을때 자식이 부모를 참조하고 있으면 부모를 삭제하지 못한다,
제약조건을 일시적으로 비활성화 하면 부모에서 삭제가 가능하다, enable 하면 제약 조건을 다시 적용가능하다
• cascade로 제약조건을 연속적으로 비활성화 하거나, 제약조건을 연속적으로 제거할 수 있다
cascade 부터는 15주차에 이어서 작성한다
'학교 강의 > 데베기초교양' 카테고리의 다른 글
데베기초 기말 대비 정리 (1) | 2023.12.20 |
---|---|
데베기초15주차 (0) | 2023.12.14 |
데베기초 13주차 (0) | 2023.11.30 |
데베기초 12주차 (0) | 2023.11.23 |
데베기초 11주차 DDL (0) | 2023.11.16 |