제약조건(Constraint)
제약 조건이란, 데이터의 무결성을 위해 데이터 접근 시 실행되는 검사규칙 이다.
필드에 적용한다.
CREATE, ALTER 문에서 사용가능하다.
MySQL 에서 사용가능한 제약조건은 다음과 같다.
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- DEFAULT
NOT NULL
NULL 값을 가질 수 없다. 즉 무조건 값이 있어야 한다.
문법
CREATE TABLE 테이블이름
(
필드이름 필드타입 NOT NULL,
...
)
예시
CREATE TABLE Test
(
ID INT NOT NULL
...
);
UNIQUE
중복된 값은 불가능하다.
문법
1. CREATE TABLE 테이블이름
(
필드명 필드타입 UNIQUE,
...
)
2. CREATE TABLE 테이블이름
(
필드이름 필드타입,
...,
[CONSTRAINT 제약조건이름] UNIQUE (필드이름)
)
두 번째 방법은 제약 조건의 이름을 설정할 수 있는 것이 차이점이다.
예시
CREATE TABLE Test
(
ID INT UNIQUE
...
);
PRIMARY KEY
기본 키로 설정한다. NOT NULL + UNIQUE 이다.
문법
1. CREATE TABLE 테이블이름
(
필드이름 필드타입 PRIMARY KEY,
...
)
2. CREATE TABLE 테이블이름
(
필드이름 필드타입,
...,
[CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름)
)
예시
CREATE TABLE Test
(
ID INT PRIMARY KEY
...
);
FOREIGN KEY
외래 키로 설정한다.
참조되는 테이블의 필드는 반드시 PRIMARY KEY 또는 UNIQUE 여야 한다.
문법
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...,
[CONSTRAINT 제약조건이름]
FOREIGN KEY (필드이름)
REFERENCES 테이블이름 (필드이름)
)
예시
CREATE TABLE Test2
(
ID INT,
ParentID INT,
FOREIGN KEY (ParentID)
REFERENCES Test1(ID) ON UPDATE CASCADE
);
- REFERENCES 키워드로 부모 테이블과 필드를 지정한다.
- ON UPDATE : 부모 테이블의 필드가 수정될 경우 어떤 동작을 할 것인지 지정한다.
- ON DELETE : 부모 테이블의 필드가 삭제될 경우 어떤 동작을 할 것인지 지정한다.
- 어떤 동작이란?
- CASCADE : 동일하게 수정 or 삭제됨
- SET NULL : NULL 로 설정
- NO ACTION : 변경하지 않음
- SET DEFAULT : 기본값으로 설정
- RESTRICT : 부모 테이블의 수정 or 삭제를 못하게 막음
- 어떤 동작이란?
DEFAULT
레코드가 입력될 때, 필드 값이 비어있으면 DEFAULT 로 지정한 값으로 저장한다.
문법
CREATE TABLE 테이블이름
(
필드이름 필드타입 DEFAULT 기본값,
...
)
예시
CREATE TABLE Test
(
Name VARCHAR(30) DEFAULT 'Anonymous',
...
);
https://dev-coco.tistory.com/55
'DB' 카테고리의 다른 글
데이터베이스 스키마 설계에 대한 가이드 (0) | 2023.05.06 |
---|---|
SQL vs NOSQL (0) | 2023.05.06 |
(필기)Index , B tree, B+ tree (0) | 2023.04.16 |
Oracle vs MySQL vs MSSQL (0) | 2023.03.10 |
DataSource, Connection Pool, HikariCP (0) | 2023.03.01 |