안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, 6-2. 데이터 무결성 - 테이블 컬럼과 NULL 제약을 진행 하겠습니다.
SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록
이번에 진행할 강좌는 데이터 무결성 - 테이블 컬럼과 NULL 제약입니다.
TL;DR
테이블 생성 및 수정 시 컬럼 데이터형과 NULL 제약은 중요한 무결성 제약입니다. 데이터의 정확성을 유지하기 위해 데이터형과 NULL 제약을 사용하여 데이터를 제한하고, 무결성 오류를 방지합니다.
컬럼 데이터형과 NULL제약
컬럼 데이터형 역시 하나의 무결성을 지켜주는 제약입니다.
예를 들어, "생일"이라는 데이터를 생각해 보도록 하지요. 생일 컬럼은 날짜형 데이터만 입력을 받습니다. 생일 컬럼에 문자열이나 숫자 같은 자료형이 입력될 수 없도록 제한을 걸 수 있다면, 생일 컬럼의 속성 역시 데이터를 정의하는 하나의 무결성을 지켜주는 제약이 될 수 있습니다. 바꿔 말하면, VARCHAR형이나 CHAR형으로 생성한 컬럼과 숫자형인 INT형 컬럼도 무결성과 관련이 있습니다.
USE AdventureWorks; GO -- 만약 테이블이 존재하면 삭제 IF OBJECT_ID(N'dbo.members_test4', N'U') IS NOT NULL DROP TABLE dbo.members_test4; GO -- members_test4 생성 CREATE TABLE members_test4 ( member_name NVARCHAR(10), member_age TINYINT NOT NULL ); GO -- 예제 데이터 1개 삽입 INSERT INTO members_test4(member_name, member_age) VALUES(N'김대우', '20살'); -- 에러 GO INSERT INTO members_test4(member_name, member_age) VALUES(N'박서준', 30); GO INSERT INTO members_test4(member_name, member_age) VALUES(N'김태리', NULL); -- 에러 GO INSERT INTO members_test4(member_name, member_age) VALUES(N'고스트', 300); -- 에러 GO SELECT * FROM members_test4; GO
첫 번째 INSERT 구문은 TINYINT 숫자형 컬럼에 문자열 값 “20살”을 넣으려 했기 때문에 무결성 에러가 발생합니다.
세 번째 INSERT는 나이 컬럼에 NULL값을 삽입하려 했으나, 컬럼의 속성인 NOT NULL 규칙을 위배되므로 실패하게 됩니다.
네 번째 구문은 나이 컬럼인 TINYINT 컬럼에 최댓값 256이 넘는 300을 넣어서 산술 오버플로우 에러가 발생합니다.
Arithmetic overflow error for data type tinyint, value = 300. The statement has been terminated.
☑️ 챗GPT 활용: 산술 오버플로우 에러에 대해 알려줘
컬럼 데이터형과 NOT NULL 제약에 대해서 이렇게 소개해 드렸습니다. 이전 테이블 강좌에서 몇 번 나왔던 내용이라 익숙하실 거에요.
SQL 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.