← 개념서모바일 버전
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(*) vs COUNT(col).
  • COALESCE는 ANSI 표준.
  • NULLS FIRST/LAST로 정렬 위치 고정.

8. 요약 체크리스트

  • NULL의 의미와 3-Value Logic을 안다.
  • IS NULL 비교가 필요한 이유를 설명한다.
  • COALESCE와 NVL의 차이를 안다.
  • 집계 함수별 NULL 처리를 구분한다.