안녕하세요. 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에서도 기본값을 설정할 수 있습니다. 테이블 디자인에서 컬럼을 선택합니다. 

 

76-1-SSMS-기본값설정.png

이미지 - SSMS 기본값 설정

 

“기본값 또는 바인딩” 설정에 GETDATE()를 추가해 기본값을 설정합니다. 이렇게 현재 시간을 리턴하는 함수를 기본값으로 사용 가능합니다.


기본값은 비교적 많이 사용하는 개체입니다. 기본값을 이용해 가능한 NULL 값을 받지 않는 게 좋습니다. NULL 값 비교는 일반 데이터형과 다르게 처리됩니다. WHERE 절에서 “IS NULL”로 비교하거나,  ISNULL() 함수, COALESCE() 함수를 따로 사용하여 복잡도가 높고, 동적 SQL 구문 적용이 어려워집니다. 테이블 디자인 시 항상 NOT NULL로 구성하고, 특수한 케이스가 아니라면 NULL을 허용하지 말고, 기본값을 적극 활용하세요.
 

 

SQL 강좌 책 구매

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

 

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

책구매링크.png

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 22128
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12259
2274 SQL강좌: 8-3. 저장 프로시저 - 매개변수(파라미터) 코난(김대우) 2023.08.18 48
2273 SQL강좌: 8-2. 저장 프로시저 - 생성과 실행 코난(김대우) 2023.08.18 43
2272 SQL강좌: 8-1. 저장 프로시저(Stored Procedure) - 소개 코난(김대우) 2023.08.18 53
2271 SQL강좌: 7-10. 실무에서 뷰 사용 코난(김대우) 2023.08.18 31
2270 SQL강좌: 7-9. 인덱싱된 뷰(Indexed View) file 코난(김대우) 2023.08.18 36
2269 SQL강좌: 7-8. 분할 뷰(Partitioned View) file 코난(김대우) 2023.08.18 25
2268 SQL강좌: 7-7. 뷰에서 데이터 수정 코난(김대우) 2023.08.18 27
2267 SQL강좌: 7-6. 뷰에서 뷰 생성 코난(김대우) 2023.08.18 26
2266 SQL강좌: 7-5. 뷰 옵션 코난(김대우) 2023.08.18 19
2265 SQL강좌: 7-4. 뷰 삭제 코난(김대우) 2023.08.18 12
2264 SQL강좌: 7-3. 뷰 수정 코난(김대우) 2023.08.18 27
2263 SQL강좌: 7-2. 뷰 생성 file 코난(김대우) 2023.08.18 27
2262 SQL강좌: 7-1. 뷰(VIEW) 소개 코난(김대우) 2023.08.18 39
2261 SQL강좌: 6-9. 데이터 무결성 - 데이터 무결성 주의사항 file 코난(김대우) 2023.08.18 39
2260 SQL강좌: 6-8. 데이터 무결성 - 트리거(TRIGGER) file 코난(김대우) 2023.08.18 65
2259 SQL강좌: 6-7. 데이터 무결성 - 사용자 정의 형식(User-Defined Type - UDT) 코난(김대우) 2023.08.18 26
» SQL강좌: 6-6. 데이터 무결성 - 기본값(DEFAULT) file 코난(김대우) 2023.08.18 18
2257 SQL강좌: 6-5. 데이터 무결성 - 규칙(RULE) 코난(김대우) 2023.08.18 29
2256 SQL강좌: 6-4. 데이터 무결성 - 체크 제약(CHECK Constraint) file 코난(김대우) 2023.08.18 37
2255 SQL강좌: 6-3. 데이터 무결성 - 기본 키(Primary Key) 제약, UNIQUE 제약, 외래 키(Foreign Key) 제약 file 코난(김대우) 2023.08.18 53





XE Login