DBMS/SQL Server (MS-SQL)

[SQL Server / MS-SQL] 제약조건 (Constraint)

RYEAN 2022. 5. 17. 15:32
반응형


 

1. 제약 조건


ㆍ 제약조건이란?

 ㄴ 데이터의 무결성을 지키기 위해 제한된 조건

 ㄴ 어떠한 조건을 만족했을때만 데이터가 입력되도록 제한해주는 역할

 

ㆍ SQL Server 에서 제공하는 제약 조건은 아래와 같다.

 ㄴ NOT NULL

 ㄴ CHECK 제약 조건

 ㄴ UNIQUE 제약 조건

 ㄴ PRIMARY KEY 제약 조건

 ㄴ FOREIGN KEY 제약 조건

 ㄴ DEFAULT

 

2. NOT NULL


 ㆍ 해당 컬럼에는 NULL 값이 들어올 수 없다.

-- ID 라는 컬럼엔 NULL 값이 들어올 수 없다.
CREATE TABLE account_tbl (
	ID varchar(10) NOT NULL
)

 

3. CHECK 제약 조건


 ㆍ 해당 컬럼에 특정 조건을 걸어 이에 해당하는 값만 들어올 수 있게끔 해준다.

 ㆍ 어떤 특정한 값을 기준으로 해당 값보다 적거나 혹은 많을 경우에만 들어올 수 있게 제한을 걸어주기 위해 사용하는 조건이다.

-- Age 라는 컬럼은 20 보다 크고 60 보다 작은 값만이 들어올 수 있다. 
CREATE TABLE account_tbl (
	ID varchar(10) NOT NULL,
	Age int NOT NULL CHECK (Age >= 20 and Age < 60)
)

 

4. PRIMARY KEY 제약 조건


 ㆍ 한 테이블에 고유하게 식별할 수 있는 값

 ㆍ 한 테이블에 오직 1개만 설정이 가능하다. (단, 하나 이상의 컬럼을 묶어 PK (기본키) 로 설정할 수 있다.)

 ㆍ NULL 값은 허용되지 않는다.

-- ID 라는 컬럼은 기본키로 지정되었으며, 테이블 내 값이 중복될 수 없으며, NULL 값이 허용되지 않는다.
CREATE TABLE account_tbl (
	ID varchar(10) NOT NULL PRIMARY KEY,
	Age int NOT NULL CHECK (Age >= 20 and Age < 60)
)

 

5. UNIQUE 제약 조건


 ㆍ 한 테이블에 PK 가 아닌 컬럼에 유일한 값을 주고 싶을때 사용하는 조건이다.

 ㆍ 한 테이블에 2개 이상 설정이 가능하다. (PRIMARY KEY 와의 차이)

 ㆍ NULL 값이 허용되나, 이도 컬럼당 하나의 값만 가질 수 있다. (PRIMARY KEY 와의 차이)

 

6. FOREIGN KEY 제약 조건


 ㆍ 두 테이블간의 관계를 선언함으로써, 데이터의 무결성을 보장해주는 조건이다.

 ㆍ FK (외래 키) 설정 시, 기준 테이블에 외래키 테이블이 의존하게 된다.

 ㆍ 참조할 테이블은 PK 이거나 UNIQUE 컬럼이여야 한다.

 ㆍ 참조할 테이블의 컬럼에 값이 존재하여야 한다.

 ㆍ 참조 대상 테이블의 컬럼 값이 변경/삭제 될 경우, 외래키의 값 역시 변경/삭제된다. 

-- 기준 테이블 생성, ID 컬럼에 PK 설정
CREATE TABLE account_tbl (
	ID varchar(10) NOT NULL PRIMARY KEY,
	Age int NOT NULL CHECK (Age >= 20 and Age < 60)
)

-- 외래키 테이블 생성, ID 컬럼에 FK 설정
CREATE TABLE detail_tbl (
	ID varchar(10) NOT NULL FOREIGN KEY REFERENCES account_tbl(ID)
)

 

7. DEFAULT


 ㆍ 해당 컬럼 값을 넣지 않았을 경우, 자동으로 설정해준 기본 값이 들어간다.

-- RegDate 컬럼에 값을 설정하지 않을 경우, 현재 시간으로 자동 입력된다.
CREATE TABLE account_tbl (
	ID varchar(10) NOT NULL,
	Age int NOT NULL CHECK (Age >= 20 and Age < 60),
	RegDate datetime DEFAULT(getdate())
)

 

반응형