본문 바로가기

Oracle

Oracle sqlplus Constraint(제약조건)

Constraint (제약조건)

- 테이블의 해당 칼럼에 원하지 않는 데이터를 입력/수정/삭제 되는 것을 방지 하기 위해 테이블 생성 또는 변경시

설정하는 조건이다. (저장된 데이터의 신뢰성을 높이기 위해)

 

종류

 

1) NOT LULL : NULL 로 입력이 되어서는 안되는 칼럼에 부여하는 조건으로 

칼럼 레벨에서만 부여할수 있는 제약조건이다.

 

2) UNIQUE KEY (유일키) : 저장된 값이 중복되지 않고 오직 유일하게 유지되어야 할때 사용하는 제약조건이다. 

    (단, NULL 은 허용된다.)

 

3) PRIMARY KEY (대표키) : NOT NULL 조건과 UNIQUE KEY 를 합친 조건이다.

 

4) CHECK : 조건에 맞는 데이터만 입력되도록 조건을 부여하는 제약 조건

 

5) FOREIGN KEY (외래키) : 부모 테이블의 PRIMARY KEY 를 참조하는 칼럼에 붙이는 제약조건이다.

   ex) emp 테이블의 deptno 칼럼

 

 

 

예제 제약조건

- create table dept2 (deptno number(2) constraint dept2_deptno_pk primary key, dname varchar2(15) default '영업부', loc char(1) constraint dept2_loc_ck check(loc in ('1', '2')));

 

- constraint 와 제약 조건명은 생략이 가능하다 (칼럼 레벨일때)

- create table dept3 (deptno number(2) primary key, dname varchar2(15) default '영업부', loc char(1) check( loc in( '1', '2')));

 

- 외래키를 만들기 위해서는 부모 테이블을 먼저 만들어야한다.

- CREATE TABLE dept2( deptno NUMBER(2) PRIMARY KEY, dname VARCHAR2(15) NOT NULL)

 

- CREATE TABLE emp2( empno NUMBER(4) PRIMARY KEY, ename VARCHAR2(15) NOT NULL, deptno NUMBER(2) REFERENCES dept2(deptno) );

 

 

제약조건 알아보기

- 제약조건 이름 검색하기

- SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS ;

 

- 제약조건은 수정은 불가능하고 삭제만 가능하다

- ALTER TABLE dept2 DROP CONSTRAINT 제약조건명 ;

 

- 제약조건 추가하기 

- ALTER TABLE dept2 ADD( CONSTRAINT 제약조건명 PRIMARY KEY(deptno)) ;