SQL 제약 조건 UK, NOT NULL, CHECK
데이터양을 줄이기 위해 분리하는 과정 = 정규화 과정
pk : 학생테이블의 학번컬럼, 사원테이블의 사번컬럼 등
fk : emp테이블의 부서번호
제약 조건 이해와 설정 : UK, NOT NULL, CHECK
NULL은 정해진 값이 없어서 여러번 가능 사용 할 수 있다.
UK(Unique Key) 설정
SQL> CREATE TABLE 테이블 (
2 ..... 3 CONSTRAINT 제약_조건 UNIQUE (컬럼));
SQL> CREATE TABLE 테이블 (
2 컬럼 데이터_타입 CONSTRAINT 제약_조건 UNIQUE,
3 ......
NOT NULL 설정
SQL> CREATE TABLE 테이블 (
2 컬럼 데이터_타입 CONSTRAINT 제약_조건 NOT NULL,
3 ......
-> 모든 숫자컬럼에 NOT NULL을 사용하는게 일반적(만약 지정이 안되어 있다면 지정하지 않은 이유를 알아야한다.)
CHECK 설정 (where절에 썼던거 처럼 쓰면 된다.)
SQL> CREATE TABLE 테이블 (
2 ..... 3 CONSTRAINT 제약_조건 CHECK (조건));
SQL> CREATE TABLE 테이블 (
2 컬럼 데이터_타입 CONSTRAINT 제약_조건 CHECK (조건),
3 ......
CHECK와 NOT NULL 제약 조건 검색
SQL> SELECT constraint_name, search_condition FROM user_constraints
2 WHERE table_name = '테이블';
(sal is NOT NULL)
제약 조건 관리
테이블 만들때 제약조건 하는것 보다 나중에 제약조건 추가하는 방법이 좋다.
제약 조건 추가/삭제
SQL> ALTER TABLE 테이블
2 ADD CONSTRAINT 제약_조건 제약_조건_타입;
SQL> ALTER TABLE 테이블
2 MODIFY 컬럼 CONSTRAINT 제약_조건 NOT NULL;
SQL> ALTER TABLE 테이블
2 DROP PRIMARY KEY | UNIQUE(컬럼) | CONSTRAINT 제약_조건 [CASCADE];