[oracle] 제약조건

Jehyung Kim·2023년 2월 1일
0

Oracle SQL DB

목록 보기
18/18

제약조건
1. not null// null값이 올수없음, 값을 무조건 세팅해줘야한다
*not null을 제외한 다른 제약조건들은 반드시 이름을 설정해줘야한다
왜냐면 정확히 어떤 오류라고 설명해주지 않음
2. unique// 중복된 값 저장불가능

create table test_table1(
data1 number,
data2 number constraint TEST_TABLE2_DATA2_UK unique
);
  1. primary key // not null + unique
    각각의 row를 구분하기 위해 자주 사용된다 ex)주민등록번호
create table test_table3(
data1 number,
data2 number constraint TEST_TABLE3_DATA2_PK primary key
);

insert into test_table3 (data1, data2)
values (100, 101);
  1. foreign key // 일반적으로 pk를 참조한다
    같은 테이블 혹은 다른 테이블의 컬럼을 참조하는데 쓰인다
create table test_table4(
data1 number constraint TEST_TABLE4_PK primary key,
data2 number not null 
);

insert into test_table4 (data1, data2)
values (100, 101);

insert into test_table4 (data1, data2)
values (200, 201);

select * from test_table4;

create table test_table5(
data3 number not null,
data4 number constraint TEST_TABLE5_DATA4_FK
		  references test_table4(data1)
);
// data1에는 100 과 200이 현재 들어가있음

insert into test_table5 (data3, data4)
values (1, 100);

insert into test_table5 (data3, data4)
values (2, 100);

// 중복허용

insert into test_table5 (data3, data4)
values (3, 200);

insert into test_table5 (data3, data4)
values (4, 200);

select * from test_table5;

insert into test_table5(data3, data4)
values (5, null);

insert into test_table5 (data3)
values (6);

// null값 허용

insert into test_table5(data3, data4)
values (7, 300);

// 300은 없는 값이라 위배됨 (부모 키가 없음)
  1. check (컬럼에 저장될 값을 지정한다)
create table test_table6(
data1 number constraint TEST_TABLE6_DATA1_CK
		  check (data1 between 1 and 10), //범위 조건
data2 number constraint TEST_TABLE6_DATA2_CK
		  check (data2 in (10, 20, 30)) // 값 지정
);

insert into test_table6 (data1, data2)
values (1, 10);

insert into test_table6 (data1, data2)
values (2, 20);

select * from test_table6;

insert into test_table6 (data1, data2)
values (20 10); // data1 위배

insert into test_table6 (data1, data2)
values (5, 100); // data2 위배 
profile
tryandcatch

0개의 댓글