320x100
320x100

Constraint 

- 테이블 내 컬럼에 대한 규칙을 지정하는 것

 : 기본키 지정, 외래키 지정, not null 지정, Unique 지정

- 제약조건의 종류

 : not null (null 값 입력 불가)

 : unique (중복된 값 입력 불가)

 : primary key (null 값과 중복된 값 입력 불가<유일성>, 테이블당 1개만 생성가능)

 : foreign key (다른 테이블의 컬럼을 참조)

 : check (설정된 값만 입력을 허용)

 

 

 

테이블을 생성하면서 제약조건 설정

- create table 테이블명 (컬럼1 자료형(길이) constraint 제약조건이름 제약조건);

- 예시

 : create table comeve (id varchar2(10) constraint com_id_pk primary_key,

   name varchar2(10) constraint com_name_nn not null,

   nickname varchar(15) constraint com_nik_nn not null constraint com_nik_uk unique,

   age number(3) constraint com_age_ck check (age < 100),

   code varchar2(5) constraint com_cod_fk refferences comjeongca(code));

=> 외래키(fk)의 경우 refferences 원테이블(컬럼)이 필수이며 

     여기서 원테이블의 컬럼은 unique여야 함

=> constraint 제약조건이름 은 선택사항이므로 작성하지 않아도 됌

 

 

 

테이블에 제약조건 추가

- alter table 테이블명 add constraint 제약조건명 제약조건(컬럼);

 : 제약조건을 적용할 컬럼에 제약조건 추가

 

 

제약조건 수정

- alter table 테이블명 modify (컬렴 constraint 제약조건명 제약조건);

 

 

 

테이블 연쇄삭제 설정 (부모테이블 삭제시 자식테이블까지 삭제)

- alter table 테이블명 add constraint 제약조건명 foreign key(컬럼)

  reffrences 원테이블(컬럼) on delete casacade;

 : 여기서 on delete casacade 대신 on delete set null을 작성하면

   부모테이블이 삭제되면 자식테이블의 데이터는 null이 됌

 

 

 

제약조건 비활성화 / 활성화

- 제약조건 비활성화

 : alter table 테이블명 disable novalidate constraint 제약조건명; 

  = novalidate는 생략가능 (기본값이기 때문)

  = validate (데이터 변경이 불가한 비활성화 / read only 상태)

  = novalidate (모든 데이터 수정이 가능한 비활성화)

 

- 제약조건 활성화

 : alter table 테이블명 enable constraint 제약조건명;

  = 마찬가지로 novalidate, validate 옵션 존재

 

 

 

제약조건 조회

- select constraint_name, constraint_type, status from user_constraints 

  where table_name='테이블명(대문자)';

 

 

제약조건 삭제

- alter table 테이블명 drop constraint 제약조건명

300x250
728x90