본문 바로가기

데이터베이스

제약조건(Constraint)

Constraint은 테이블에 저장되는 데이터의 정확성과 신뢰성을 보장하기 위해 사용하는 규칙이다.

예를 들어 이 컬럼에는 음수는 저장되게 하지마! 이 컬럼에 입력되는 값은 NULL을 허용하지 않아! 이 테이블에서 함부로 행을 삭제하지마!와 같이 Constraint를 컬럼이나 테이블에 적용한다.

 

만약 앞에서 예로 든 Constraint를 만족하지 않는 Value의 저장이 시도되면 바로 Error메시지가 발생하며 실행을 거부할 것이다.

 

Constraint는 테이블을 만들때(Create Table) 함께 지정해준다.

 

Create table table_name (

Col1 datatype constraint,

Col2 datatype constraint,

Col3 datatype constraint

..

);

 

아래는 SQL에서 주로 사용하는 일반적인 Constraint들이다.

 

1. NOT NULL : 은 컬럼에 null 값을 허용하지 않는다.

Create Table Stocks (

    Stock_Name nvarchar(255) Not Null,

    Stock_Price int Not Null

);

-- 이미 테이블을 생성했다면 

Alter Table Stocks  

Alter Column Stock_Price int Not Null;

-- Constraint 삭제

Alter Table Stocks  

Alter Column Stock_Price int Null;

 

2. Unique는 어떤 컬럼에 있는 모든 값들이 달라야 한다. 다시 말해 중복된 값을 허용하지 않는다.

Create Table Stocks (

    Stock_Name nvarchar(255),

    Stock_Price int,

    Unique(Stock_Name)

);

-- 이미 테이블을 생성했다면

Alter Table Stocks 

Add Constraint unique_Stock_Name Unique(Stock_Name)

-- Constraint 삭제

Alter Table Stocks

Drop Constraint unique_Stock_Name;

 

3. Primary key  not null unique의 컴비네이션이다. 어떤 테이블의 행을 유일하게 식별해준다.

Create Table Stocks (

    Stock_Name nvarchar(255) Primary Key,

    Stock_Price int

);

 

4. Foreign key 는 다른 테이블의 행을 유일하게 식별해준다.

Create Table Stocks (

    Stock_Name nvarchar(255) Primary Key,

    Stock_Price int,

    Trade_No,

    Constraint fk_Trade_No Foreign Key(Trade_No)

    Refferences Stock_Trade_History(Trade_No) 

);

 

5. Check는 어떤 조건을 만족하는 값만을 컬럼에 저장시켜준다.

Create Table Stocks (

    Stock_Name nvarchar(255) int not null,

    Stock_Price int Check (StockProce > 0) – 주식

);

-- 이미 테이블을 생성했다면

Alter table Stocks

Add Contraint Chk_Price Check (Price > 0)

 -- Constraint 삭제

Alter Table Stocks

Drop Contraint Chk_Price

 

6. Default 특정한 값이 할당되지 않으면 default로 지정한 값을 자동으로 저장해준다.

Create Table Stocks (

    Stock_Name nvarchar(255),

    Stock_Price int,

    Close_Date date default Getdate()

);

-- 이미 테이블을 생성했다면 

Alter Table Stocks123
Add Constraint df_Close_Date 
Default Getdate() For Close_Date;

 

7. Index 는 데이터베이스로부터 데이터를 빨리 조회할 목적으로 만든다. 책의 색인과 같다.

-- 추후 상세히 이 부분은 기술하겠음.

 

'데이터베이스' 카테고리의 다른 글

Minimum Cardinality와 Maximum Cardinality 차이  (0) 2020.07.06
관계 타입의 유형  (0) 2020.07.05
트리거(Trigger)  (0) 2020.07.03
관계(Relationship)와 관계 타입(Relationship Type)  (0) 2020.07.02
속성  (0) 2020.07.01