16.제약조건
제약 조건(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)이 위배되었습니다
댓글남기기