전체/Oracle
ORACLE 무결성 제약 조건(NOT NULL, UNIQUE , PRIMARY KEY, FOREIGN KEY, CHECK)
effortDev
2017. 6. 15. 11:26
무결성 제약조건 종류
NOT NULL : 해당 컬럼 값으로 NULL을 허용하지 않는다.
UNIQUE : 테이블 내에서 해당 컬럼 값은 항상 유일한 값을 갖는다.
PRIMARY KEY : NULL을 허용하지 않고 중복된 값을 허용하지 않는다. NOT NULL 조건과 UNIQUE 조건을 결합한 형태
FOREIGN KEY : 참조되는 테이블의 컬럼 값이 존재하면 허용한다.
CHECK : 저장 가능한 값의 범위나 조건을 지정하여 설정한 값만 허용한다.
1. NOT NULL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- NOT NULL 제약조건 CREATE TABLE MY_EMP ( EMPNO NUMBER(4) NOT NULL , ENAME VARCHAR2(10) , JOB VARCHAR2(9) , DEPTNO NUMBER(2) ); -- 테이블 조회 SELECT * FROM MY_EMP; -- INSERT 허용 INSERT INTO MY_EMP(EMPNO, ENAME, JOB, DEPTNO) VALUES (1, NULL,'SALESMAN', 10); -- INSERT 시 EMPNO NOT NULL 제약조건으로 허용불가 INSERT INTO MY_EMP(EMPNO, ENAME, JOB, DEPTNO) VALUES (NULL, NULL,'SALESMAN', 20); | cs |
2. UNIQUE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- UNIQUE 제약조건 CREATE TABLE MY_EMP2 ( EMPNO NUMBER(4) UNIQUE , ENAME VARCHAR2(10) , JOB VARCHAR2(9) , DEPTNO NUMBER(2) ); -- 테이블 조회 SELECT * FROM MY_EMP2; -- INSERT 허용 INSERT INTO MY_EMP2(EMPNO, ENAME, JOB, DEPTNO) VALUES (1, NULL,'SALESMAN', 10); -- INSERT 시 EMPNO UNIQUE 제약조건으로 허용불가 INSERT INTO MY_EMP2(EMPNO, ENAME, JOB, DEPTNO) VALUES (1, NULL,'SALESMAN', 20); | cs |
3. PRIMARY KEY
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- PRIMARY KEY 제약조건 CREATE TABLE MY_EMP4 ( EMPNO NUMBER(4) CONSTRAINT MY_EMP4_EMPNO_PK PRIMARY KEY , ENAMR VARCHAR2(10) CONSTRAINT MY_EMP4_ENAME_NN NOT NULL , JOB VARCHAR(9) , DEPTNO NUMBER(2) ); -- 테이블 조회 SELECT * FROM MY_EMP4; -- INSERT 허용 INSERT INTO MY_EMP4 VALUES(7499, 'ALLEN', 'SALESMAN', 30); -- INSERT 시 PRIMARY KEY 제약조건으로 허용불가 INSERT INTO MY_EMP4 VALUES (7499, 'JONES', 'MANAGER', 20); | cs |
4. FOREIGN KEY
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- FOREIGN KEY 제약조건 CREATE TABLE MY_EMP5 ( EMPNO NUMBER(4) CONSTRAINT MY_EMP5_EMPNO_PK PRIMARY KEY , ENAME VARCHAR2(10) CONSTRAINT MY_EMP5_ENAME_NN NOT NULL , JOB VARCHAR(9) , DEPTNO NUMBER(2) CONSTRAINT MY_EMP5_DEPTNO_FK REFERENCES DEPT(DEPTNO) ); -- 테이블 조회 SELECT * FROM MY_EMP5; -- INSERT 허용 INSERT INTO MY_EMP5 VALUES(7499, 'ALLEN', 'SALESMAN', 30); -- INSERT 시 FOREIGN KEY 제약조건으로 허용불가 INSERT INTO MY_EMP5 VALUES(7566, 'JOENS', 'MANAGER', 50); | cs |