DataBase/MsSql
MSSQL CHECK 제약 조건 생성, 확인, 삭제 및 특징
아우럼
2024. 3. 14. 19:00
반응형
CHECK 제약조건은 data를 입력하였을 때 해당 값이 CHECK 조건에 맞는지 확인하여 입력한 data에 대해서 true면 입력하고 false면 거부할 수 있는 제약조건입니다.
Check 제약조건의 특징
- MSSQL 제약조건 중에서 CHECK에는 특정 column의 입력 가능한 값의 범위를 지정할 때 사용한다.
- 만약 하나의 column에 CHECK 제약조건을 설정한다면, 그 column은 특정한 범위 안에서의 값만 입력할 수 있습니다.
- 그럼, 하나의 테이블에서 CHECK 제약조건을 설정했다면, 그 레코드의 특정 column을 기반으로 다른 column의 값을 연관해서 제한할 수도 있다.
CHECK 제약조건 추가
TABLE 생성하면서 column에 자동으로 Check 제약조건 설정.
- table 생성하면서 column, datatype 이후 check 예약어 뒤에 제약조건을 추가할 수 있습니다.
- check 제약조건은 자주 사용하지 않지만 column값의 범위를 지정할 때는 사용할 수 있습니다.
-- 예시코드.
CREATE TABLE [테이블명] (
[column1] [dataType],
[column2] [dataType] CHECK ([조건절])
);
-- 1. TABLE 생성하면서 column에 자동으로 CHECK 설정.
USE sampleDB;
DROP TABLE IF EXISTS UserInfoForCheck;
CREATE TABLE UserInfoForCheck (
UserId int,
UserName varchar(255),
UserAge int CHECK (UserAge > 20 and UserAge < 65)
);
-- CHECK 제약조건이 잘되는지 확인.
insert into UserInfoForCheck(UserId,UserName,UserAge)
values(202401,'john',10);
- table 생성하면서 check 제약조건 생성하는 방법 소스코드 및 예제입니다.
두 개 이상의 column을 사용하여 CHECK 제약조건 생성.
- table 생성 시 column을 먼저 선언한 후 constraint을 통해서 여러 칼럼에 check 제약조건을 생성합니다.
- check 제약조건명을 입력하고 칼럼이름을 이용하여 조건을 넣어주세요.
- check 제약조건 sytax 및 소스코드를 확인 후 실습해 보세요.
-- 예시코드.
CREATE TABLE [테이블명] (
[column1] [dataType],
[column2] [dataType],
[column3] [dataType],
CONSTRAINT [check제약조건명] CHECK([조건절])
);
-- 2. 두개 이상의 column을 사용하여 CHECK 제약조건 생성.
USE sampleDB;
DROP TABLE IF EXISTS UserInfoForCheck;
CREATE TABLE UserInfoForCheck (
UserId int,
UserName varchar(255),
UserFirstName varchar(255),
UserAge int,
CONSTRAINT Ck_UserInfoForCheck CHECK(UserAge > 10 and UserFirstName = 'john')
);
기존 column에 CHECK 제약조건 생성.
- table 생성한 이후에도 check제약 조건을 생성할 수 있습니다.
- alter 명령어와 check 예약어를 이용하여 기존 table에 check 제약조건을 추가해 보세요.
- 밑에 소스를 확인 후 실습을 해보세요.
-- 예시코드.
ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] CHECK ([조건걸]);
-- 3. 기존 column에 CHECK 제약조건 생성
USE sampleDB;
DROP TABLE IF EXISTS UserInfoForCheck;
CREATE TABLE UserInfoForCheck (
UserId int,
UserName varchar(255),
UserFirstName varchar(255),
UserAge int
);
go
ALTER TABLE UserInfoForCheck ADD CONSTRAINT Ck_UserInfoForCheck CHECK(UserAge > 10 and UserFirstName = 'john') ;
신규 column 추가 시 CHECK 제약조건 추가.
- 기존 table에 column을 추가하면서 check 제약조건을 추가하는 방법입니다.
- alter 명령어를 이용하여 column 추가, check 조건을 넣어보세요.
- 밑에 소스코드를 보시고 check 제약조건을 실습해 보세요.
--예시코드.
ALTER TABLE [테이블명] ADD [column1] [dataType] CONSTRAINT [check제약조건명] CHECK ([조건절]);
-- 4. 신규 컬럼을 추가시 check 설정 예시.
USE sampleDB;
DROP TABLE IF EXISTS UserInfoForCheck;
CREATE TABLE UserInfoForCheck (
UserId int,
UserName varchar(255)
);
go
ALTER TABLE UserInfoForCheck ADD UserAge int CONSTRAINT Ck_UserInfoForCheck CHECK(UserAge > 10);
CHECK 제약조건 생성 확인 방법
- EXEC SP_HELP [테이블명]으로 확인 가능합니다.
- system view는 sys.check_constraints에서 확인 가능합니다.
- 두 가지 조건으로 check 제약조건을 확인하고 실습해 보세요.
-- CHECK 제약 조건 생성 확인(exec 명령어)
EXEC sp_help UserInfoForCheck;
GO
-- CHECK 제약 조건 생성 확인(check_constraints)
select schema_name(t.schema_id) + '.' + t.[name] as table_nm
,col.[name] as column_nm
,con.[name] as constraint_nm
,con.[definition] as df_value
from sys.check_constraints con
left outer join sys.objects t
on con.parent_object_id = t.object_id
left outer join sys.all_columns col
on con.parent_column_id = col.column_id
and con.parent_object_id = col.object_id
order by con.name;
생성된 CHECK 제약조건 삭제
- check 제약조건을 생성했으면 drop도 가능합니다.
- check제약조건 삭제는 check 제약 조건명은 필수 이므로 제약조건 확인 부분을 활용 후 가능 합니다.
- check 제약조건 sytax와 소스코드를 이용하여 실습해 주세요.
ALTER TABLE [테이블명] DROP CONSTRAINT [check제약조건명];
-- 생성된 CHECK 제약조건 삭제
USE sampleDB;
DROP TABLE IF EXISTS UserInfoForCheck;
CREATE TABLE UserInfoForCheck (
UserId int,
UserName varchar(255),
UserFirstName varchar(255),
UserAge int,
CONSTRAINT Ck_UserInfoForCheck CHECK(UserAge > 10 and UserFirstName = 'john')
);
ALTER TABLE UserInfoForCheck DROP CONSTRAINT Ck_UserInfoForCheck;
Check 제약조건 마무리
- Check 제약조건은 실무에서는 자주 사용하지 않습니다.
- database 운영시 잘못된 data가 주기적으로 입력돼서 문제가 발생하면 check 제약조건을 넣어서 문제를 해결할 수 있습니다.
반응형