1과목 · 데이터 모델링의 이해·8장
NULL의 이해
NULL 의미, 연산 규칙, IS NULL·NVL·COALESCE 비교, 집계에서의 동작을 정리합니다.
1. NULL이란
"값이 없음 / 알 수 없음 / 적용 불가"를 표현하는 특수 표식. 0도 아니고 빈 문자열도 아닙니다.
2. NULL 연산 3대 규칙
산술·연결
SELECT 10 + NULL; -- NULL
SELECT 'a' || NULL; -- NULL
비교
WHERE bonus = NULL; -- 결과 0건 (UNKNOWN)
WHERE bonus IS NULL; -- 올바른 방식
논리 (3-Value Logic)
| A | B | A AND B | A OR B |
|---|---|---|---|
| T | N | N | T |
| F | N | F | N |
3. NULL 처리 함수
SELECT NVL(comm, 0) + sal; -- Oracle
SELECT IFNULL(comm, 0) + sal; -- MySQL
SELECT COALESCE(comm, 0) + sal; -- ANSI
SELECT NVL2(comm, 'Y', 'N'); -- Oracle
SELECT NULLIF(a, b); -- a=b면 NULL
COALESCE= 첫 NOT NULL 반환 (ANSI 표준).
4. 집계에서의 NULL
COUNT(*)— 모두 (NULL 포함).COUNT(col)— NOT NULL만.SUM/AVG/MIN/MAX— NULL 무시.
-- 10명 중 3명만 bonus 있을 때
COUNT(*) -- 10
COUNT(bonus) -- 3
AVG(bonus) -- 3명 평균
5. 정렬에서 NULL
| DBMS | ASC | DESC |
|---|---|---|
| Oracle/PG | 마지막 | 먼저 |
| MySQL | 먼저 | 마지막 |
ORDER BY bonus ASC NULLS FIRST;
6. NOT NULL / DEFAULT
CREATE TABLE member (
id BIGINT PRIMARY KEY,
email VARCHAR(200) NOT NULL,
points INT NOT NULL DEFAULT 0
);
7. 자주 출제되는 포인트
= NULL대신IS NULL.- 산술에 NULL 섞이면 결과 NULL.
COUNT(*)vsCOUNT(col).- COALESCE는 ANSI 표준.
- NULLS FIRST/LAST로 정렬 위치 고정.
8. 요약 체크리스트
- NULL의 의미와 3-Value Logic을 안다.
- IS NULL 비교가 필요한 이유를 설명한다.
- COALESCE와 NVL의 차이를 안다.
- 집계 함수별 NULL 처리를 구분한다.