반응형
/********************************************************************************************
-- 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

/****************************************************************************************
-- 제약조건과 연관된 열 보기
****************************************************************************************/
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.

/****************************************************************************************
-- 제약조건 사용불가(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.


반응형

+ Recent posts