오라클 CREATE TABLE 문을 작성하는 방법은 아래와 같은데
CREATE TABLE 테이블명 (
컬럼명 데이터형 제약조건,
컬럼명2 데이터형 제약조건
);
여기서 제약조건(Constraint) 부분을 작성할 시
제약조건의 종류 및 작성하는 방법을 알아보자
제약조건은 NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK, DEFAULT 가 있는데
전체적으로 보면 다음과 같고
CREATE TABLE FOREIGN_TABLE ( -- FOREIGN KEY 사용 시 필요 테이블
VALUE5 VARCHAR2(10) PRIMARY KEY
);
CREATE TABLE TEST (
VALUE1 VARCHAR2(10) NOT NULL, -- NULL 값 들어오지 못하게 함
VALUE2 VARCHAR2(10) UNIQUE, -- NULL 허용, 중복 불가
VALUE3 VARCHAR2(10) PRIMARY KEY, -- NULL, 중복 불가
VALUE4 VARCHAR2(10) REFERENCES FOREIGN_TABLE (VALUE5),
-- FOREIGN KEY는 다른 테이블에서 PRIMARY KEY에 해당하고 해당 PRIMARY KEY 컬럼에 있는 값만 사용가능
VALUE5 VARCHAR2(10) CHECK(VALUE5 BETWEEN 1 AND 10), -- CHECK : 1과 10 사이의 값만 들어올 수 있음
VALUE6 VARCHAR2(10) CHECK(VALUE6 IN ('A', 'B')), -- CHECK : A 혹은 B만 들어올 수 있음
VALUE7 VARCHAR2(10) DEFAULT '홍길동' -- NULL 값이 들어올 경우 홍길동을 기본 삽입
);
이제 하나씩 알아보자면
1. NOT NULL
해당 컬럼에 NULL값(값을 넣지 않거나 공백처럼 값이 없는 경우)이 들어오지 못하게 함
EX) VALUE1 VARCHAR2(10) NOT NULL
2. UNIQUE
NULL은 허용하나 중복은 불가능함
EX) VALUE2 VARCHAR2(10) UNIQUE
3. PRIMARY KEY
NULL, 중복 불가능
EX) VALUE3 VARCHAR2(10) PRIMARY KEY
4. FOREIGN KEY
NULL 가능, 타 테이블의 PRIMARY KEY여야하고 해당 테이블의 컬럼에 삽입되지 않은 값은 사용 불가
EX) VALUE4 VARCHAR2(10) REFERENCES 참조할_테이블(참조할_테이블의_PRIMARY_KEY)
5. CHECK
특정 범위 혹은 특정 값만 들어올 수 있게 함
EX) VALUE5 VARCHAR2(10) CHECK(VALUE5 BETWEEN 1 AND 10)
EX) VALUE6 VARCHAR2(10) CHECK(VALUE6 IN ('A', 'B'))
6. DEFAULT
NULL 값이 들어올 시 지정된 값을 삽입함
EX) VALUE7 VARCHAR2(10) DEFAULT '홍길동'
다음으로 이렇게 테이블 작성 후 실제 삽입 시 에러가 나는 경우가 있는데
대표적인 경우는 아래와 같다
ORA-02291: integrity constraint violated - parent key not found
- 참조한 테이블의 PRIMARY KEY에 내가 FOREIGN KEY로 지정하려는 값이 없음
EX) FOREIGN_TABLE의 PRIMARY KEY에는 'A' 라는 값만 넣어놨는데
실제 FOREIGN KEY로 사용하려 하는 테이블에서 'B' 라는 값을 FOREIGN KEY로 사용하려는 경우
ORA-02290: check constraint violated
- CHECK 조건에 걸린 경우, CREATE TABLE시 작성한 CHECK 조건 확인
마지막으로 오라클을 설치하지 않았는데
CREATE TABLE 문을 테스트해 보려면
아래 링크의 SQL Fiddle로 이동하자
이후 상단에 데이터베이스 종류를 Oracle 11g R2로 변경해주면
오라클을 설치하지 않고도 쉽게 테스트 가능하다
'SQL > Oracle' 카테고리의 다른 글
오라클 DECODE 사용방법 및 예제 (0) | 2019.10.17 |
---|---|
오라클 TO_CHAR 사용방법 (0) | 2019.10.15 |
오라클 TO_DATE 사용방법 (0) | 2019.10.15 |
오라클 insert, update, delete, select 사용법 정리 (0) | 2019.10.14 |
오라클 CREATE TABLE로 테이블 생성방법 (0) | 2019.10.14 |
댓글