티스토리 뷰
반응형
제약조건 (CONSTRAINT)
데이터의 무결성을 지키기 위한 제한된 조건이다.
MySQL
에서는 데이터의 무결성을 목적으로 아래 5가지의 제약 조건을 제공하고있다.
- Primary Key
- Foreign Key
- Unique Key
- Check Key
- Default 정의
- NULL 값 허용
Primary Key
단일 데이터의 행의 데이터를 구분할 수 있는 식별자이다.
create table userTBL(
userID char(8) NOT NULL PRIMARY KEY,
NAME VARCHAR(10) NOT NULL,
birthYear INT NOT NULL
);
Foreign Key
두 데이터 데이블 사이의 관계를 선언함으로써 데이터의 무결성을 보장해 주는 역할
create table userTBL(
userID char(8) NOT NULL PRIMARY KEY,
name VARCHAR(10) NOT NULL,
birthYear INT NOT NULL
);
create table buyTBL(
userID char(8) NOT NULL PRIMARY KEY,
prodname VARCHAR(10) NOT NULL,
birthYear INT NOT NULL
FOREIGN KEY(userID) REFERENCES userTBL(userID)
);
Unique Key
중복되지 않는 유일한 값
을 가지지만 PK와 다르게 NULL 값을 허용한다는 부분에서 차이를 보인다.
create table userTBL(
userID char(8) NOT NULL PRIMARY KEY,
NAME VARCHAR(10) NOT NULL,
birthYear INT NOT NULL,
email char(30) NULL UNOQUE
);
Check Key
입력되는 데이터를 점검하는 기능
생일 혹은 핸드폰 번호 등의 입력에 대한 점검을 수행할 수 있다.
create table userTBL(
userID char(8) NOT NULL PRIMARY KEY,
NAME VARCHAR(10) NOT NULL,
birthYear INT NOT NULL (birthYear >= 1900 AND birthYear <= 2023),
mobile1 char(30) NULL,
CONSTRAINT CK_name CHECK(name IS NOT NULL)
);
ALTER TABLE userTBL
ADD CONSTRAINT CK_mobile1
CHECK (mobile1 IN ('010','011','016','017'))
Default 정의
값을 입력하지 않았을 때, 자동으로 입력되는 기본 값을 정의한다.
create table userTBL(
userID char(8) NOT NULL PRIMARY KEY,
NAME VARCHAR(10) NOT NULL,
birthYear INT NOT NULL,
mobile1 char(30) NULL DEFAULT 010
);
CONSTRAINT 쿼리문
기존 쿼리를 생성할 경우 제약조건 입력은 해당 컬럼에 직접 적어주는 방식 이었다.CONSTRAINT
쿼리문은 제약조건의 추가와 동시에 별칭을 변경할 수 있는 기능을 가지고 있다.
CREATE, ALTER(
...
[ADD] CONSTRAINT [별칭] | [제약조건](대상 컬럼);
);
그러나 제약 조건에 따라 추가 쿼리문의 형태가 달라진다.
FK의 경우에는참도 대상의 컬럼을 필요로 하기 때문에 REFERENCES [TABLE name](컬럼)
예
create table buyTBL(
userID char(8) NOT NULL PRIMARY KEY,
prodname VARCHAR(10) NOT NULL,
birthYear INT NOT NULL
FOREIGN KEY(userID) REFERENCES userTBL(userID)
);
하나의 테이블에 PK가 두개 이상일 경우에는 ,
로 컬럼을 추가해 주면된다.
CONSTRAINT [별칭] PRIMARY KEY (컬럼1, 컬럼2);
예
create table buyTBL(
userID char(8) NOT NULL PRIMARY KEY,
prodname VARCHAR(10) NOT NULL,
birthYear INT NOT NULL
CONSTRAINT PK_proTBL_proCode_proID PRIMARY KEY (proCode, proID);
);
반응형
'DataBase' 카테고리의 다른 글
스핑크스 SQL의 특징과 문제점 (0) | 2022.10.18 |
---|---|
Common Table Expression (0) | 2022.09.17 |
DB 암호화 기법 (1) | 2022.09.16 |
Union vs Union All 차이 (0) | 2022.09.14 |
(N+1) Error (0) | 2022.02.26 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CS
- docker
- interview
- Spring
- kakao
- 스프링부트
- 디자인패턴
- C언어
- Matlab
- 매트랩
- OOP
- 자격증
- springboot
- security
- 면접
- spring-cloud
- Algorithm
- ajax
- 프로그래머스
- 알고리즘
- java
- 스프링
- JPA
- 수학
- 백준
- 자바
- nginx
- Solid
- 릿코드
- 그래프
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함