[SQL] SQL 제약 조건(Constraint)

JUNBEOM PARK·2022년 3월 8일

💡 SQL

목록 보기
5/7
post-thumbnail

🤔 제약 조건(Constraint)?

데이터의 정확성과 일관성을 보장하기 위해 각 컬럼에 정의하는 규칙

데이터 추가, 수정, 삭제하는 가운데 DB의 무결성을 유지(보장)


1. NOT NULL

'필수 입력 사항'을 의미
즉, NULL 값을 허용 하지 않겠다는 의미이다.

테이블 생성과 동시에 하는 구문

CREATE TABLE 테이블명 (
	컬럼명1 데이터타입 NOT NULL,
    컬럼명2 데이터타입,
    ...
    );

테이블 생성후 하는 구문

ALTER TABLE 테이블명 MODIFY 컬럼명 CONSTRAINT 별칭 NOT NULL;


NOT NULL은 INSERT 할때, 즉 데이터 입력시에 누락이 되어서는 안되는 부분이다. NULL 값이 들어가게 되면 오류가 발생한다.




2. UNIQUE

중복성 배제
즉, '유일한 값'으로 존재해야 함을 의미



테이블 생성과 동시에 하는 구문

CREATE TABLE 테이블명 (
	컬럼명1 데이터타입 UNIQUE,
    컬럼명2 데이터타입,
    ...
    );

테이블 생성후 하는 구문

ALTER TABLE 테이블명 ADD CONSTRAINT 별칭 UNIQUE(컬럼명); 


UNIQUE는 해당테이블에 있어서 존재하는 값이 유일해야 한다. 만일 INSERT 또는 UPDATE 할때, 제약이 걸려있는 컬럼에 동일한 데이터가 존재한다면 오류가 발생한다.

NULL 값에 대해서는 UNIQUE 제약이 적용되지 않는다.




3. PRIMARY KEY(기본키)

NOT NULL + UNIQUE로 '테이블에서 대표되는 컬럼'을 의미한다.




테이블 생성과 동시에 하는 구문

CREATE TABLE 테이블명 (
	컬럼명1 데이터타입 PRIMARY KEY,
    컬럼명2 데이터타입,
    ...
    );

테이블 생성후 하는 구문

ALTER TABLE 테이블명 ADD CONSTRAINT 별칭 PRIMARY KEY(컬럼명); 


PRIMARY KEY 즉, 기본키는 하나의 테이블에 있는 데이터들을 식별하기 위한 기준으로 인식되는 제약 조건이다. UNIQUE와는 달리 한개의 테이블에 하나만 생성이 가능하다.


4. FOREIGN KEY(외래키)

'참조하는 테이블에서 존재하는 값만 사용 가능'을 의미



테이블 생성과 동시에 하는 구문

CREATE TABLE 테이블명 (
	컬럼명1 데이터타입 REFERENCES 참조테이블명(참조 컬럼),
    컬럼명2 데이터타입,
    ...
    );

테이블 생성후 하는 구문

ALTER TABLE 테이블명 ADD CONSTRAINT 별칭 FOREIGN KEY(참조컬럼명) REFERENCES 참조테이블명(참조컬럼명); 


외래키는 해당 컬럼에 참조하는 테이블로부터 존재하는 값들만 사용한다는 의미의 제약조건이다.

외래키는 여러개의 컬럼에 중복적으로 적용이 가능하다 외래키로 두 테이블이 부모테이블과 자식테이블로 관계를 맺고 있을시, 자식테이블이 참조하는 데이터는 부모 테이블에서 삭제가 불가능하다.




5. CHECK

주어진 조건에 해당하는 값만 입력 가능

테이블 생성과 동시에 하는 구문

CREATE TABLE 테이블명 (
	컬럼명1 데이터타입 CHECK(제약조건),
    컬럼명2 데이터타입,
    ...
    );

테이블 생성후 하는 구문

ALTER TABLE 테이블명 ADD CONSTRAINT 별칭 CHECK(컬럼명 조건); 

CHECK는 조건에 부합하는 데이터만 입력이 가능하도록 하는 제약조건이다.
조건에는 기본연산자나 비교연산자, IN, NOT IN 등 사용이 가능하다.

profile
DB 엔지니어👍

0개의 댓글