테이블에 부적절한 자료가 입력되는 것을 방지하기 위해 테이블을 생성할 때, 칼럼에 대해서 여러 가지 제약 조건을 정의하는 것을 말합니다. 제약 조건의 종류는 아래와 같습니다.
무결성 제약조건 |
역할 |
NOT NULL |
NULL을 허용하지 않습니다. |
UNIQUE |
중복된 값을 허용하지 않습니다. |
PRIMARY KEY(PK) |
NULL을 허용하지 않고 중복된 값을 허용하지 않습니다. |
FOREIGN KEY(FK) |
참조되는 테이블에서 컬럼의 값이 존재하면 허용합니다. |
CKECK |
저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용합니다. |
DEFAULT |
값이 추가되지 않을 때 기본 값이 들어가도록 명시해줍니다. |
기본적으로 제약 조건의 이름을 정해주지 않으면 자동으로 정해주지만 그렇게 되면 어떤 제약조건을 위배했는지 알 수 없기 때문에 아래와 같이 CONSTRAINT 키워드를 이용하여 정의합니다. 또한 아래 문장은 모든 데이터베이스에서 사용 가능한 쿼리입니다.
사용법
CONSTRAINT 제약조건명(테이블명_컬럼명_키) 제약조건
아래와 같이 제약 조건명을 정할 때는 테이블명, 칼럼명, 키를 조합하여 정합니다.
예시
CONSTRAINT TABLE_COLUMN1_UK UNIQUE
NOT NULL은 해당 칼럼에 데이터를 추가하거나 수정할 때, NULL 값이 저장되지 않게 제약을 걸어주는 것으로써 자료가 꼭 입력되게 하고 싶을 때 사용합니다.
예시
CREATE TABLE t_table(
--제약 조건명 정의
column1 VARCHAR2(10)
CONSTRAINT T_COLUMN1_NN NOT NULL
--간편 정의방법
,column2 NUMBER(4) NOT NULL
);
테이블 생성 시에 제약 조건을 걸어주고 싶은 칼럼 옆에 CONSTRAINT 키워드를 이용하여 제약 조건을 걸어줍니다. 오라클에서는 column2와 같이 CONSTRAINT 키워드를 이용하지 않아도 간단하게 제약 조건을 지정할 수 있습니다.
UNIQUE 제약조건은 특정 칼럼에 대해 고유한 값이 들어가도록 하여 데이터가 중복되지 않게 하는 것입니다.
예시
CREATE TABLE t_table(
column1 VARCHAR2(10)
--제약 조건명 정의방법
CONSTRAINT T_COLUMN1_UK UNIQUE
--간편 정의방법
,column2 NUMBER(4) UNIQUE
);
PRIMARY KEY 제약조건은 NOT NULL과 UNIQUE를 합친 기능을 함으로써 기본 키라 고도합니다. 각각의 데이터를 구분하기 위해 유일한 키를 정해놓는 기능을 합니다.
예시
CREATE TABLE t_table(
--제약 조건명 정의방법
column1 VARCHAR2(10)
CONSTRAINT T_COLUMN1_PK PRIMARY KEY
--간편 정의방법
,column2 NUMBER(4) PRIMARY KEY
);
결과
ff
FOREIGN KEY 제약조건은 부모 테이블의 특정한 값의 칼럼만 올 수 있도록 하는 것이며 외래 키라고도 합니다. 부모 테이블에서 참조하고 있는 칼럼의 값이 1,2,3,4 밖에 없다면 외래 키를 가지고 있는 칼럼도 1,2,3,4 중에서 하나만이 들어갈 수 있습니다.
예시
CREATE TABLE t_table(
--제약 조건명 정의
column1 VARCHAR2(10)
CONSTRAINT T_COLUMN1_FK REFERENCES parent_table(column3)
--간편 정의방법
,column2 NUMBER(4) FOREIGN KEY REFERENCES parent_table(column3)
);
외래 키는 REFERRENCES 키워드를 이용하여 참조할 테이블과 칼럼명을 입력하여 정의합니다. 이때, 참조하는 부모 테이블의 값은 PRIMARY KEY나 UNIQUE 제약조건이 붙어있어야 합니다.
check 제약조건은 입력되는 값을 체크하여, 설정된 값 이외의 값이 들어오면 오류 메시지를 띄우게 합니다.
예시
CREATE TABLE t_table(
column1 VARCHAR2(10)
,column2 NUMBER(4)
CHECK(column2 > 50)
);
체크 키워드 안에 위와 같이 조건을 걸어주게 되면 column2의 값으로 50 이상의 값만 들어갈 수 있게 됩니다.
아무런 값을 입력되지 않고 행만 추가되었을 때 null값 대신 들어갈 기본 값을 지정할 수 있습니다.
예시
CREATE TABLE t_table(
column1 VARCHAR2(10) DEFAULT '기본'
column2 VARCHAR2(20)
);
column1에 값이 없어서 null값이 들어가는 대신 '기본'이라는 값이 들어갑니다.
[SQL] 서브 쿼리의 개념과 별칭(ALIAS) 사용하기 (0) | 2020.10.29 |
---|---|
[SQL] 인덱스를 사용하여 쿼리 성능 향상시키기 (1) | 2020.10.28 |
[SQL] JOIN문 정리(LEFT JOIN, RIGHT JOIN, INNER JOIN, CROSS JOIN) (0) | 2020.10.06 |
[SQL] 시퀀스의 개념과 시퀀스 생성하기 (0) | 2020.10.05 |
[SQL] 뷰(View)의 개념과 뷰 사용하기 (1) | 2020.10.04 |