데이터베이스/MySQL

MySQL 제약 조건

ksge7 2020. 9. 25. 13:10

제약조건(constraint)이란?

데이터의 무결성을 위해 데이터 입력을 받을 때 실행하는 검사 규칙을 의미함.

 

제약 조건은 'CREATE' 문으로 테이블을 생성하거나 'ALTER'문으로 필드 추가시에도 사용 가능.

제약 조건 설정하는 방법

CREATE TABLE Test(

Null_TEST INT NOT NULL,  -- 제약조건으로 NOT NULL 설정

Unique_Test INT UNIQUE,  -- 제약조건으로 UNIQUE 설정

Primary_Test INT PRIMARY KEY,  -- 제약조건으로 PRIMARY KEY 설정

Default_Test INT DEFAULT '디폴트',  -- 제약조건으로 DEFAULT 설정

Foreign_Test INT,  -- FOREIGN KEY 테스트를 위한 필드 선언

FOREIGN KEY (Foreign_Test) REFERENCES Test2 (Foreign_Test)\
-- 제약 조건 FOREIGN KEY 설정.
-- 'Foreign_Test'이 'Test2'의 'Foreign_Test'의 값을 참조하도록 설정

);

CREATE TABLE Test2(

Foreign_Test INT  -- Test1에서 참조하는 FOREIGN KEY의 대상값

)

 

위와 같이 'CREATE'나 'ALTER'와 같이 필드값을 생성하거나 수정, 추가해줄 때 제약조건을 넣어서 설정해줄 수 있다.

 

혹은 필드값 생성과 별개로 하단에 표기할 수 있다.

 

CREATE TABLE Test(

Null_TEST INT,

Unique_Test INT,

Primary_Test INT,

Default_Test INT,

constraint test_prkey Primary Key (Primary_Test)
-- constraint + 조건명 + 제약조건 + (필드값)
-- 위와 같이 입력하면 해당 필드에 제약조건을 걸 수 있다

);

 

이때는 "'constraint' 명령어+ 조건에 붙일 이름 + 제약 조건 ( 필드명 )" 순으로 작성하면 된다.

 

예시의 'primary key' 뿐 아니라 다양한 조건 추가가 가능하다.

제약 조건의 종류

1. NOT NULL

CREATE TABLE Test(

Null_TEST INT NOT NULL -- NOT NULL을 설정함

);

 

'NOT NULL'을 제약 조건으로 추가하면 해당 필드에는 'NULL'값이 들어갈 수 없다는 뜻이다.

2. UNIQUE

CREATE TABLE Test(

Unique_Test INT UNIQUE

);

 

'UNIQUE'를 제약 조건으로 추가하면 해당 필드 내에선 같은 'VALUE'를 입력할 수 없다.

 

즉 중복값을 입력하는 것이 불가능해진다.

3. PRIMARY KEY

CREATE TABLE Test(

Primary_Test INT PRIMARY KEY

);

 

'PRIMARY KEY'는 'NOT NULL'과 'UNIQUE'의 제약 조건을 합한 것과 같다.

 

'PRIMARY KEY'를 지정하면 'NULL'값을 넣을 수도 없고 'UNIQUE'하게 중복값을 넣을 수도 없다.

4. DEFAULT

CREATE TABLE Test(

Default_Test INT DEFAULT '디폴트'

);

 

'DEFAULT'를 설정하면 필드에 'VALUE'가 없을 경우에 미리 설정된 값을 입력될 수 있다.

5. FOREIGN KEY

CREATE TABLE Test(

FOREIGN KEY (Foreign_Test) REFERENCES Test2 (Foreign_Test)

);

CREATE TABLE Test2(

Foreign_Test INT

);

 

'FOREIGN KEY'의 경우 테이블이 2개가 필요하다.

 

그리고 'FOREIGN KEY'를 설정하면 다른 테이블의 필드를 참조하여 두 테이블을 연결하게 만든다.

 

즉 각각의 테이블은 'FOREIGN KEY'를 통해서 연결될 수 있다.

 

'FOREIGN KEY'를 사용할 때 참조해야할 필드는 반드시 'UNIQUE' 또는 'PRIMARY KEY'가 적용되어있어야 한다.