반응형
/********************************************************************************************
-- Title : [8i] 제약조건 관리(OLN)
-- Reference : OLN
-- Key word : constraint
********************************************************************************************/
/****************************************************************************************
-- 제약조건 기술 데이터 사전 뷰
****************************************************************************************/
SQL> SELECT table_name, constraint_name, constraint_type, search_condition
2 FROM USER_CONSTRAINTS -- USER_CONS_COLUMNS 도 비슷한 뷰
3 WHERE table_name = 'EMP';
-- Title : [8i] 제약조건 관리(OLN)
-- Reference : OLN
-- Key word : constraint
********************************************************************************************/
/****************************************************************************************
-- 제약조건 기술 데이터 사전 뷰
****************************************************************************************/
SQL> SELECT table_name, constraint_name, constraint_type, search_condition
2 FROM USER_CONSTRAINTS -- USER_CONS_COLUMNS 도 비슷한 뷰
3 WHERE table_name = 'EMP';
TABLE_NAME CONSTRAINT_NAME C SEARCH_CONDITION
------------------ ---------------------- - -------------------
EMP PK_EMP P EMPNO IS NOT NULL
EMP FK_DEPTNO R DEPT IS NOT NULL
------------------ ---------------------- - -------------------
EMP PK_EMP P EMPNO IS NOT NULL
EMP FK_DEPTNO R DEPT IS NOT NULL
/****************************************************************************************
-- 제약조건과 연관된 열 보기
****************************************************************************************/
SQL> SELECT constraint_name, column_name
2 FROM USER_CONS_COLUMNS
3 WHERE table_name = 'EMP';
CONSTRAINT_NAME COLUMN_NAME
------------------ -------------------------------------
FK_DEPTNO PK_EMP
DEPTNO EMPNO
/****************************************************************************************
-- 제약 조건 정의
****************************************************************************************/
SQL> CREATE TABLE emp_t
2 ( empno NUMBER(4)
3 , ename VARCHAR2(10)
4 , deptno NUMBER(7,2) NOT NULL
5 , CONSTRAINT emp_empno_pk PRIMARY KEY (empno)
6 );
Table created.
/****************************************************************************************
-- NOT NULL 제약조건 이름 주기
****************************************************************************************/
SQL> CREATE TABLE emp_t
2 ( empno NUMBER(4)
3 , ename VARCHAR2(10)
4 , deptno NUMBER(7,2) CONSTRAINT emp_deptno_nn NOT NULL
5 );
Table created.
/****************************************************************************************
-- UNIQUE Key 제약조건
****************************************************************************************/
SQL> CREATE TABLE dept2_t
2 ( deptno NUMBER(2)
3 , dname VARCHAR2(14)
4 , loc VARCHAR2(13)
5 , CONSTRAINT dept_dname_uk UNIQUE(dname)
6 );
Table created.
/****************************************************************************************
-- PRIMARY KEY 제약조건
****************************************************************************************/
SQL> CREATE TABLE dept3_t
2 ( deptno NUMBER(2)
3 , dname VARCHAR2(14)
4 , loc VARCHAR2(13)
5 , CONSTRAINT dept_dname_uk2 UNIQUE(dname)
6 , CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno)
7 )
SQL> /
Table created.
/****************************************************************************************
-- FOREIGN KEY 제약조건
****************************************************************************************/
SQL> CREATE TABLE emp2_t
2 ( empno NUMBER(4)
3 , ename VARCHAR2(10) NOT NULL
4 , job VARCHAR2(9)
5 , hiredate DATE
6 , sal NUMBER(7,2)
7 , comm NUMBER(7,2)
8 , deptno NUMBER(7,2) NOT NULL
9 , CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno)
10 );
Table created.
/****************************************************************************************
-- CHECK 제약조건
****************************************************************************************/
SQL> CREATE TABLE emp3_t
2 ( empno NUMBER(4)
3 , ename VARCHAR2(10) NOT NULL
4 , job VARCHAR2(9)
5 , hiredate DATE
6 , deptno NUMBER(7,2) NOT NULL
7 , CONSTRAINT emp_deptno_ck CHECk (deptno BETWEEN 10 and 99)
8 );
Table created.
/****************************************************************************************
-- 제약 조건의 추가
****************************************************************************************/
SQL> ALTER TABLE emp
2 ADD CONSTRAINT emp_mgr_fk
3 FOREIGN KEY(mgr) REFERENCES emp(empno);
Table altered.
/****************************************************************************************
-- 제약 조건의 삭제
****************************************************************************************/
SQL> ALTER TABLE emp
2 DROP CONSTRAINT emp_mgr_fk;
Table altered.
SQL> ALTER TABLE dept
2 DROP PRIMARY KE CASCADE; -- CASECADE 적용
Table altered.
2 DROP PRIMARY KE CASCADE; -- CASECADE 적용
Table altered.
/****************************************************************************************
-- 제약조건 사용불가(DISABLE)
****************************************************************************************/
SQL> ALTER TABLE emp
2 DISABLE CONSTRAINT emp_empno_pk CASCADE;
Table altered.
/****************************************************************************************
-- 제약조건 사용가능(ENABLE)
****************************************************************************************/
SQL> ALTER TABLE emp
2 ENABLE CONSTRAINT emp_empno_pk;
Table altered.
반응형