무결성 제약조건 종류


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(4NOT NULL
     , ENAME VARCHAR2(10)
     , JOB VARCHAR2(9)
     , DEPTNO NUMBER(2)
       );
       
-- 테이블 조회
SELECT * FROM MY_EMP;
 
-- INSERT 허용
INSERT INTO MY_EMP(EMPNO, ENAME, JOB, DEPTNO) VALUES (1NULL,'SALESMAN'10); 
-- INSERT 시 EMPNO NOT NULL 제약조건으로 허용불가
INSERT INTO MY_EMP(EMPNO, ENAME, JOB, DEPTNO) VALUES (NULLNULL,'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(4UNIQUE
     , ENAME VARCHAR2(10)
     , JOB VARCHAR2(9)
     , DEPTNO NUMBER(2)
       );
 
-- 테이블 조회
SELECT * FROM MY_EMP2;
 
-- INSERT 허용
INSERT INTO MY_EMP2(EMPNO, ENAME, JOB, DEPTNO) VALUES (1NULL,'SALESMAN'10); 
-- INSERT 시 EMPNO UNIQUE 제약조건으로 허용불가
INSERT INTO MY_EMP2(EMPNO, ENAME, JOB, DEPTNO) VALUES (1NULL,'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(4CONSTRAINT MY_EMP4_EMPNO_PK PRIMARY KEY
           , ENAMR VARCHAR2(10CONSTRAINT 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(4CONSTRAINT MY_EMP5_EMPNO_PK PRIMARY KEY
           , ENAME VARCHAR2(10CONSTRAINT MY_EMP5_ENAME_NN NOT NULL
           , JOB VARCHAR(9)
           , DEPTNO NUMBER(2CONSTRAINT 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


+ Recent posts