달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2017. 7. 2. 21:32

CONSTRAINT 제약조건 C. Oracle2017. 7. 2. 21:32

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은 내가제약조건을주어만든 테이블임
 
 


'C. Oracle' 카테고리의 다른 글

oracle DDL  (0) 2017.07.02
oracle 기본쿼리 사용하기  (0) 2017.07.02
oracle table  (0) 2017.07.02
oracle SQL_PLUS 환경설정  (0) 2017.07.02
토드 toad 명령어 단축키 모음  (0) 2017.07.02
:
Posted by sfeg