'IT/Oracle'에 해당되는 글 5건

  1. [Oracle] 오라클 제약조건 2014.01.17

[Oracle] 오라클 제약조건[Oracle] 오라클 제약조건

Posted at 2014. 1. 17. 17:19 | Posted in IT/Oracle
홈페이제작업체 NuGuWeb
CONSTRAINT [제약조건] (데이타의 무결성을 지키기 위해서 만듬)
 
 
PRIMARY  KEY   
: 여러개의 컬럼중에 대표되는(고유의값) 컬럼
: 관계형 데이타베이스에서는 primary key가 되는 컬럼이 꼭 있어야 한다.
 
NOT  NULL        
: NULL값을 가져서는 안되는컬럼, 이조건이 없으면 null값을 허용한다.
 
CHECK              
: 특정한 제약이 값을 만족하는지.., column에 입력되는 data를 검사해서 조건에 맞는 data만 들어오도록
  할때 사용
 
UNIQUE            
 : 중복된 값을 가질수 없다, 고유의 값을 갖는다.
  
FOREIGN  KEY 
: 어떠한값을 항상 참조해야한다.
   primary키(부모키,parent key, master key)와의 관계속에 존재한다.
 

제약조건 주기
 
1. 컬럼 레벨 정의 방식   : 컬럼명 데이타_TYPE  제약종류,    
                                                                or    
                                             컬럼명 데이타_TYPE constraint 제약명  제약종류
                                              만약 제약명을 생략하면 오라클이 임의로 sys_c 숫자 형식으로 지정한다.
ex)  create table dept1
        (deptno number primary key,
          dname varchar2(20) unique,
          loc varchar2(20));
 
 
 
 
2. 테이블 레벨 정의 방식 : 컬럼명 데이타_TYPE,
                                                컬럼명 데이타_TYPE,
                                                 constraint  제약명 제약종류 (컬럼명)
 
ex) create table emp1
    (empno number(4)  constraint emp1_empno_pk primary key,   -> 제약조건을 아래에 써도 된다.
      ename varchar2(20) not null,
      sal number(7,2),
      deptno number,
      constraint emp1_sal_ck check (sal between 500 and 5000),
      constraint emp1_deptno_fk foreign key (deptno)
      references dept1(deptno));  행의 deptno가 foreign key이기 때문에 참조하는 값을 정의해야함.
 
 
ps. 제약의 이름 짓기요령 -> 테이블명_컬럼명_제약조건 ex) emp1_deptno_fk,emp1_empno_pk ...
 
 
 
 
2-1.존재하는 테이블에 제약조건을 추가하기
      ALTER TABLE 테이블명
      ADD 테이블 LEVEL 정의방식;
      ex) ALTER TABLE DEPT1
            ADD  CONSTRAINT DEPT1_LOC_UK UNIQUE(LOC);
 
 
2-2.존재하는 테이블에 제약조건 삭제하기
       ex)  ALTER TABLE DEPT1
              DROP CONSTRAINT DEPT1_LOC_UK;
 
 
2-3. NOT NULL 은 테이블 레벨 정의방식 X,  추가는 다음과 같이한다.
       ex) ALTER  TABLE  DEPT1
             MODIFY (LOC VARCHAR2(20) NOT NULL);
 
 
 
 
3. 내가 부여한 제약조건 찾아보기
 
DESC USER_CONSTRAINTS
 
SELECT  CONSTRAINT_NAME,  CONSTRAINT_TYPE,  SEARCH_CONDITION
FROM  USER_CONSTRAINTS
WHERE TABLE_NAME IN ('EMP1','DEPT1');   
-> 여기서 EMP1과 DEPT1은 내가제약조건을주어만든 테이블임

 

'IT > Oracle' 카테고리의 다른 글

[Oracle] 오라클 DML  (0) 2014.01.17
[Oracle] 오라클 TCL  (0) 2014.01.17
[Oracle] 오라클 DDL  (0) 2014.01.17
[Oracle] 오라클 DCL  (0) 2014.01.17
//