안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, 6-6. 데이터 무결성 - 기본값(DEFAULT)을 진행 하겠습니다.
SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록
이번에 진행할 강좌는 데이터 무결성 - 기본값(DEFAULT)입니다.
TL;DR
데이터 무결성의 기본값(DEFAULT) 설정을 통해 NULL 값 대신 기본값을 자동으로 입력할 수 있습니다. 가능한 NULL 값 입력을 피하고 기본값을 적극 활용하세요.
기본값은 INSERT를 수행할 때, 기본값 설정 컬럼에 NULL로 값이 들어올 경우, 기본값이 실행되며 자동으로 값을 채우게 됩니다. 예를 들어, GETDATE() 같은 현재 시간을 가져오는 함수를 기본값으로 설정하면, NULL 값 대신 현재 시간이 기본값으로 입력됩니다.
기본값 SQL 쿼리 예제
SQL 쿼리 예제로 기본값을 살펴보겠습니다.
USE AdventureWorks; GO -- 만약 테이블이 존재하면 삭제 IF OBJECT_ID(N'dbo.customers', N'U') IS NOT NULL DROP TABLE dbo.customers; GO -- customers 테이블 생성 CREATE TABLE customers ( customer_id INT PRIMARY KEY, customer_name NVARCHAR(10) NOT NULL, hobby NVARCHAR(15) ); GO ALTER TABLE customers ADD CONSTRAINT DF_hobby DEFAULT N'독서' FOR hobby; -- 취미 컬럼 기본값으로 '독서' 설정 GO -- customers 테이블에 데이터 삽입 INSERT INTO customers (customer_id, customer_name, hobby) VALUES (1, N'손석구', N'영화배우'); INSERT INTO customers (customer_id, customer_name, hobby) VALUES (2, N'박은빈', N'활쏘기'); INSERT INTO customers (customer_id, customer_name) VALUES (3, N'김대우'); -- hobby 컬럼 값이 없음. 기본값 처리됨. GO SELECT * FROM customers; GO 결과 customer_id customer_name hobby ----------- ------------- --------------- 1 손석구 영화배우 2 박은빈 활쏘기 3 김대우 독서 (3개 행이 영향을 받음)
이렇게 기본값이 설정됩니다.
SSMS를 이용한 기본값 설정
SSMS에서도 기본값을 설정할 수 있습니다. 테이블 디자인에서 컬럼을 선택합니다.
이미지 - SSMS 기본값 설정
“기본값 또는 바인딩” 설정에 GETDATE()를 추가해 기본값을 설정합니다. 이렇게 현재 시간을 리턴하는 함수를 기본값으로 사용 가능합니다.
기본값은 비교적 많이 사용하는 개체입니다. 기본값을 이용해 가능한 NULL 값을 받지 않는 게 좋습니다. NULL 값 비교는 일반 데이터형과 다르게 처리됩니다. WHERE 절에서 “IS NULL”로 비교하거나, ISNULL() 함수, COALESCE() 함수를 따로 사용하여 복잡도가 높고, 동적 SQL 구문 적용이 어려워집니다. 테이블 디자인 시 항상 NOT NULL로 구성하고, 특수한 케이스가 아니라면 NULL을 허용하지 말고, 기본값을 적극 활용하세요.
SQL 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.