테이블 제약 조건
Foreign Key(외래키) : 다른 테이블에 들어있는 값만 저장, 다른 테이블 참조
Not Null / Null : Null을 허용 아니면 반드시 입력받게 할건지
Unique : 유일한 값만 저장되는 필드
Check : 특정한 값만 저장되도록 설정
Default : 기본값으로 특정 값을 저장되도록 설정
샘플 테이블 생성
SQL> create table emp1
2 (
3 empno number(4),
4 ename varchar2(10),
5 job varchar2(9),
6 deptno number(4)
7 );
널 데이터 입력 연습
SQL> insert into emp1 values(null, null, null, 40);
널 제약 조건을 걸고 테이블 생성
SQL> create table emp2
2 (
3 empno number(4) not null,
4 ename varchar2(10) not null,
5 job varchar2(9),
6 deptno number(4)
7 );
SQL> insert into emp01 values(null, null, 'MANAGER', 40); -- 에러 (not null 제약조건)
SQL> Insert Into emp2 Values(1, 'SCOTT', 'MANAGER',40); -- 성공
■ Check 제약 조건 : 반드시 특정 값만 입력
SQL> Create Table emp3
2 (
3 empno number(2) not null,
4 ename varchar2(20) not null,
5 gender varchar2(10) check (gender in ('M', 'F'))
6 );
■ Unique 제약조건 : 사번은 유일해야 한다.
SQL> Create Table emp4
2 (
3 empno number(2) not null unique,
4 ename varchar2(20) not null,
5 gender varchar2(10) check (gender in ('M', 'F'))
6 );
Insert Into emp4 Values(1, 'SCOTT', 'M'); -- 성공
Insert Into emp4 Values(1, 'SCOTT', 'F'); -- 에러 : 1번 사번 저장
■ Primary Key 제약 조건 : Not Null 제약조건 + Unique 제약 조건
SQL> Create Table emp5
2 (
3 empno number(2) Primary Key,
4 ename varchar2(20) not null,
5 gender varchar2(10) check (gender in ('M', 'F'))
6 );
■ Default 제약 조건 : 기본값 입력
SQL> Create Table emp6
2 (
3 empno number(2) Primary Key,
4 ename varchar2(20) not null,
5 addr varchar2(20) Default('SEOUL')
6 );
SQL> insert into emp6(empno, ename) values(1, 'SCOTT');
■ Foreign Key 제약 조건 : 외래키(다른 테이블의 필드 값 참조)
Select * from dept;
SQL> Create Table emp7
2 (
3 empno number(2) Primary Key,
4 ename varchar2(20) not null,
5 deptno number(2) references dept(deptno) # 다른 테이블에서 사용하고 있는 값만 사용할수 있다.
6 );
SQL> insert into emp7(empno, ename, deptno)
2 values(1, 'SCOTT', 50); -- 에러
■ 제약 조건에 이름 붙이기
SQL> Create Table emp8
2 (
3 empno number(2) constraint emp8_empno_pk Primary Key,
4 ename varchar2(20) constraint emp8_ename_nn not null,
5 addr varchar2(10) constraint emp8_addr_uk unique,
6 deptno number(2) constraint emp8_deptno_fk references dept(deptno)
7 );
■ 제약 조건 수정/삭제
Alter table emp8
Drop Primary Key; -- 기본 키 삭제
Alter table emp8
Add Primary Key(empno); -- 기본 키 추가
■ 필드명 따로 제약조건 따로 설정
-- 복합키(Primary Key)를 두고자할 때
-- 하나의 테이블에 기본키가 2개 이상일 때...
SQL> Create Table emp9
2 (
3 empno number(2),
4 ename varchar2(20) Not Null,
5 addr varchar2(10),
6 deptno number(2),
Primary Key(empno),
Unique(addr),
Foreign Key(deptno) References dept(deptno)
7 );