1 분 소요

제약 조건(CONSTRAINTS)

무결성 제약조건(CONSTRANINTS):DB에 들어있는 데이터의 정확성(일관성)을 보장하기 위한 제약조건

 

NOT NULL

널값이 입력되지 못하게 하는 조건

create table null_test(
    col_1 varchar2(20) not null,
    col_2 varchar2(20) null,
    col_3 varchar2(20)
);
insert into null_test(col_1,col_2)
values('aa','bb');
COL_1	COL_2	COL_3
aa	bb	

 

오류 발생:col_1은 not null이므로 null 값을 허용하지 않으므로 데이터 들어가야한다

insert into null_test(col_2,col_3)
values('cc','dd');
오류 보고 -
ORA-01400: NULL ("HR"."NULL_TEST"."COL_1") 안에 삽입할  없습니다

 

UNIQE 제약조건

중복된 값이 입력되지 못하게 하는 조건

create table unique_test(
    col1 varchar2(20)unique not null,
    col2 varchar2(20)unique,
    col3 varchar2(20)not null,
    col4 varchar2(20)not null,
    constraint uc_unique UNIQUE(col3,col4)
    );
insert into unique_test(col1,col2,col3,col4)
values ('aa','bb','cc','dd');
insert into unique_test(col1,col2,col3,col4)
values('a2','b2','c2','d2');

 

오류 발생: 유니크는 같은 값을 가질 수 없다

update unique_test
set col1 = 'aa'
where col2 = 'b2';
ORA-00001: 무결성 제약 조건(HR.SYS_C0011132) 위배됩니다

 

CONSTRAINT

테이블작성시 입력하는 자료에 대해서 제약,규칙을 줄 수 있다

uc_unique 이름의 제약조건을 삭제

alter table unique_test
drop constraint uc_unique;

 

제약조건을 다시 추가하기

아래와 같이 추가 하고 같은 값의 데이터가 있을 시 유니크에 의해 오류가 발생한다

alter table unique_test
add constraint uc_unique unique (col3, col4)
insert into unique_test (col1, col2, col3, col4)
values('a3','','c3', 'd3')
오류 보고 -
ORA-00001: 무결성 제약 조건(HR.UC_UNIQUE) 위배됩니다

 

PRIMARY KEY(기본키): not null + unique => 유일성을 보장하는 키

테이블 생성시 기본키를 일반적 생성한다

create table primary_test(
    student_id number(10) primary key,
    name varchar2(20)
);
create table primary_test2(
    student_id number(10),
    name varchar2(20),
    constraint student_pk primary key(student_id)

 

FOREiGN KEY(외래키)

다른 테이블의 필드를 참조해서 무결성을 검사하는 조건

외래키는 null 값을 갖을 수 있다

 

CHECK

주어진 값만 허용하는 조건(성별: 남, 여 값만 입력되도록 허용)

create table check_test(
    gender varchar2(10) not null,
    constraint check_gen check (gender in('M', 'F'))
);

 

오류발생: CHECK는 M,F만 허용하는 조건이므로 T는 허용하지 않는다

  insert into check_test values('T');
select * from check_test;
ORA-02290: 체크 제약조건(HR.CHECK_GEN) 위배되었습니다

업데이트:

댓글남기기