티스토리 뷰

제약 조건

 - 테이블 생성 당시에 제약 조건을 준다

 - 테이블 생성 후 제약 조건을 줄 수도 있다

제약 조건

약자

Primary Key

PK

Foreign Key

FK

Unique

UK

Not Null

NN

Check

CK


문법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
-- Example of a column-level constraint :
 
CREATE TABLE employees (
    employee_id NUMBER(6) [ CONSTRAINT emp_emp_id_pk ] PRIMARY KEY,
    first_name VARCHAR2(20),
    ... 
);
 
-- 컬럼명 뒤에 한 칸 띄우고 제약 조건을 쓴다
-- CONSTRAINT emp_emp_id_pk 생략 가능
 
 
-- Example of a table-level constraint :
 
CREATE TABLE employees (
    employee_id NUMBER(6),
    first_name VARCHAR2(20),
    ...
    job_id VARCHAR2(10NOT NULL,
    CONSTRAINT emp_emp_id_pk PRIMARY KEY (EMPLOYEE_ID)
);
 
-- job_id VARCHAR2(10) 한 칸 띄우고NOT NULL,
-- job_id VARCHAR2(10) 생략 [ CONSTRAINT emp_jobid_nn ] NOT NULL
-- , 로 마무리 후 따로 CONSTRAINT emp_emp_id_pk PRIMARY KEY (EMPLOYEE_ID) ) 선언
-- 많은 컬럼 후 제약 조건 유형 뒤에 컬럼명 한 번 더 언급해야 함
 
 
-- 문법 처리 결과는 똑같다
cs


사용자 지정

 - 고유하고 의미있는 이름으로 지정해야 함

 - (권장) 테이블 약자_컬럼 약자_제약조건 유형 약자

 - ex) emp_empid_pk

    dept_depname_nn

    dept_loc_fk

    emp_email_uk

    emp_sal_ck


사용자 생략

oracle이 자동 부여함 ( sys_cxxxxx )

sys_c : 의미는 없으나 오라클이 고유한 이름을 자동 부여함

    사용자가 생략하면 sys_c가 무엇을 의미하는지 알 수 없다


제약 조건 선언 시기

테이블 생성 시 : create table ~;

테이블 생성 후 : alter table ~;

처음부터 설계를 잘 해 주는 것이 좋다


제약 조건명 생략 가능

NOT NULL : 컬럼 레벨 문법 밖에 못 씀

나머지 제약 조건 : 컬럼 레벨, 테이블 레벨 어떤 걸 써도 상관없다


공지사항
최근에 올라온 글
Total
Today
Yesterday