테이블 레벨 제약조건

  • 제약 조건을 설정할 때 각 컬럼 마다 지정할수도 있지만 하단부분에 몰아서 지정할 수도 있다.
  • 컬럼명 옆에 기술하는 것을 컬럼레벨, 하단에 몰아서 기술하는 것을 테이블 레벨 제약조건이라고 부른다.

ex)

-- 컬럼레벨

create table  test_table10(
data1 number constraint TEST10_TABLE10_DATA1_PK primary key,
data2 number not null constraint TEST_TABLE10_DATA2_UK unique,
data3 number not null constraint TEST_TABLE10_DATA3_FK
                    references emp(empno),
data4 number not null constraint TEST_TABLE10_DATA4_CK
                    check(data4 between 1 and 10),
data5 number not null constraint TEST_TABLE10_DATA5_CK
                    check(data5 in(10,20,30))
);

-- 테이블레벨 제약조건

create table test_table11(
data1 number,
data2 number not null,
data3 number not null,
data4 number not null,
data5 number not null,

constraint TEST_TABLE11_DATA1_PK primary key(data1),
constraint TEST_TABLE11_DATA2_UK unique(data2),
constraint TEST_TABLE11_DATA3_FK foreign key(data3)
                                references emp(empno),
constraint TEST_TABLE11_DATA4_CK check(data4 between 1 and 10),
constraint TEST_TABLE12_DATA5_CK check(data5 in(10,20,30))
);

복합키

  • 테이블 레벨 제약조건을 설정할 때 하나이상의 컬럼을 하나의 primary key로 묶어서 사용할 수 있다.
  • 복합키의 경우 각 컬럼에 중복된 데이터가 허용이 되지만 한 로우의 모든 복합키 컬럼이 중복되는 것은 허용하지 않는다.
  • 복합키는 테이블레벨로만 설정이 가능하다.

ex)

-- 복합키

create table test_table12(
data1 number,
data2 number,
constraint TEST_TABLE12_COMBO_PK primary key(data1, data2)
);

insert into test_table12 (data1, data2)
values (100,200);

insert into test_table12 (data1, data2)
values (100,300);

insert into test_table12 (data1, data2)
values (400,200);

select * from test_table12;

insert into test_table12 (data1, data2)
values (100,200);

insert into test_table12 (data1, data2)
values (null,null);