728x90
반응형
CHECK 제약 조건
- COLUMN에 들어갈 수 있는 값을 제한
- 부호, 숫자 비교, 문자 비교 등을 비교할 수 있다.
- 입력되는 값이 CHECK 조건과 맞지 않으면 에러가 발생한다.
-- 출생년도가 1900년 이후, 2023년 이전으로 제한
-- 이름은 반드시 기입해야 한다.
CREATE TABLE userTBL (
userID CHAR(8) PRIMARY KEY,
name VARCHAR(10),
birthYear INT CHECK (birthYear >= 1900 AND birthYear <=2023), -- 출생년도 입력제한
CONSTRAINT CK_name CHECK ( name IS NOT NULL ) -- 이름은 NULL 이면 안된다.
);
출생년도 입력제한은 CHECK 에약어로 조건을 지정.
이름 입력제한은 열을 모두 정의한 후에, 마지막에 추가하는 방식 ( 제약 조건의 이름을 지정할 수 있다. )
ALTER TABLE로 제약 조건을 추가할 수 있다.
-- 문자열 제약
CREATE TABLE seqblktbl (
seqID VARCHAR (20) NOT NULL PRIMARY KEY,
seqblkType VARCHAR(1) NOT NULL CHECK (seqblkType IN ('g', 's', 'p')),
note VARCHAR(128)
);
ALTER TABLE `seqblktbl` ADD CONSTRAINT CK_seqblkType CHECK (seqblkType IN ('g', 's', 'p'));
MySQL에서는 CHECK문이 데이터의 무결성을 강제하지 않는다.
제약 조건을 테이블 생성 후에 지정할 경우, 해당 테이블에 제약 조건을 벗어난 데이터가 있을 경우 4025번 에러를 리턴한다.
728x90
반응형
'DB > MySQL' 카테고리의 다른 글
[MySQL] LENGTH, CHAR_LENGTH 문자열 길이 확인 (0) | 2021.04.27 |
---|---|
[MySQL] REGEXP_REPLACE 한글, 영문, 특수문자, 숫자 제거 (0) | 2021.04.27 |
[MySQL] Cursor (0) | 2021.04.20 |
[MySQL] 중복 제거문 DISTINCT, GROUP BY (0) | 2021.04.20 |
[MySQL] Stored Procedure, Function (0) | 2021.04.19 |