안녕하세요. 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 강좌 책 구매

강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다. 

 

책구매 링크: 챗GPT와 함께하는 마이크로소프트 SQL Server 2022 

책구매링크.png

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 34941
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 17247
» SQL강좌: 6-2. 데이터 무결성 - 테이블 컬럼과 NULL 제약 코난(김대우) 2023.08.18 59
2253 SQL강좌: 6-1. 데이터 무결성 - 데이터 무결성 이해 file 코난(김대우) 2023.08.18 89
2252 SQL강좌: 5-4. 테이블 수정 file 코난(김대우) 2023.08.18 95
2251 SQL강좌: 5-3. 테이블 생성 file 코난(김대우) 2023.08.18 75
2250 SQL강좌: 5-2. 테이블 생성과 데이터형 선택 [1] 코난(김대우) 2023.08.18 54
2249 SQL강좌: 5-1. SQL Server 테이블 file 코난(김대우) 2023.08.18 75
2248 SQL강좌: 4-8. 시스템 카탈로그 엿보기 file 코난(김대우) 2023.08.18 72
2247 SQL강좌: 4-7. 최적의 데이터베이스 구성 file 코난(김대우) 2023.08.18 78
2246 SQL강좌: 4-6. 데이터베이스의 데이터와 로그 코난(김대우) 2023.08.18 75
2245 SQL강좌: 4-5. 데이터베이스 삭제 file 코난(김대우) 2023.08.18 45
2244 SQL강좌: 4-4. 데이터베이스 옵션 file 코난(김대우) 2023.08.18 88
2243 SQL강좌: 4-3. 데이터베이스 크기조절 file 코난(김대우) 2023.08.18 64
2242 SQL강좌: 4-2. 데이터베이스 생성 file 코난(김대우) 2023.08.18 78
2241 SQL강좌: 4-1. SQL Server 데이터베이스와 데이터베이스 개체의 이해 file 코난(김대우) 2023.08.18 130
2240 SQL강좌: 3-4. TRUNCATE TABLE / 트랜잭션 수행 [1] 코난(김대우) 2023.08.18 91
2239 SQL강좌: 3-3. DELETE를 이용한 로우 삭제 코난(김대우) 2023.08.18 69
2238 SQL강좌: 3-2. UPDATE - 데이터 수정 코난(김대우) 2023.08.18 85
2237 SQL강좌: 3-1. 데이터 삽입, 삭제, 수정 - INSERT를 이용한 행 삽입 코난(김대우) 2023.08.18 94
2236 SQL강좌: 2-14. SQL 쿼리 자동생성 - 쿼리 디자이너 file 코난(김대우) 2023.08.18 102
2235 SQL강좌: 2-13. SELECT 결과셋을 XML, JSON 형식으로 출력 코난(김대우) 2023.08.18 87





XE Login