-
제약조건 생성시 옵션SQL 2020. 2. 10. 10:53
● PIRMARY KEY 제약조건
- PRIMARY KEY 제약 조건 생성시 오라클 DBMS는 해당 컬럼으로 UNIQUE INDEX를 자동으로 생성
INDEX : 해당컬럼으로 미리 정렬을 해놓은 객체
정렬이 되어 있기 때문에 찾고자 하는 값이 존재하는지 빠르게 알 수 있다.
만약, 인덱스가 없다면 새로운 데이터를 입력할 때 중복된 값을 찾기 위해서
최악의 경우 테이블의 모든 데이터를 찾아야 한다.
하지만 인덱스가 있으면 이미 정렬이 되어있기 때문에 해당 값의 존재 유무를 빠르게 알 수 있다.
더 정확히 말하면 UNIQUE 제약조건에 의해 인덱스가 생성된다.
● FOREIGN KEY 제약조건
- 참조하는 테이블에 값이 있는지를 확인해야 한다.
그래서, 참조하는 컬럼에 인덱스가 있어야지만 FOREING KEY 제약을 생성할 수 있다.○ FOREIGN KEY 생성시 옵션
- FOREIGN KEY (참조 무결성) : 참조하려는 테이블의 컬럼에 존재하는 값만 입력될 수 있도록 제한
EX) emp 테이블에 새로운 데이터를 입력시 deptno 컬럼에는 dept 테이블에 존재하는부서번호만 입력 될 수 있다.
○ FOREIGN KEY가 생성됨에 따라 데이터를 삭제할 때 유의점
- 어떤 테이블에서 참조하고 있는 데이터를 바로 삭제할 수 없음
EX) emp.detpno ==> dept.deptno 컬럼을 참조하고 있을 때
dept.detpno의 데이터를 삭제할 수 없음-> DELETE 옵션
1. ON DELETE CASCADE : 부모가 삭제될 경우(dept_test) 참조하는 자식 데이터도 같이
삭제한다(emp_test)
* 위험해서 잘 안씀
2. ON DELETE SET NULL : 부모가 삭제될 경우(dept_test) 참조하는자식 데이터의 컬럼을 null로 설정
● CHECK 제약조건
- 컬럼에 들어가는 값의 종류를 제한할 때 사용
EX) 급여 컬럼을 숫자로 관리시 급여엔 음수가 들어 갈 수 없음
일반적인 경우 급여값은 > 0
CHECK 제약을 사용할 경우 급여값이 0보다 큰 값이 들어가는지 검사 가능
혹은 emp 테이블의 job 칼럼에 들어가는 값을 다음 4가지로 제한가능
'SALESMAN', 'PRESIDENT', 'ANALYST', 'MANAGER'
- 테이블 생성시 컬럼 기술과 함께 CHECK 제약생성
* emp_test 테이블의 sal 컬럼이 0보다 크다는 CHECK 제약 조건 생성 쿼리