NULL 은 0이나 공백이 아니라 "값이 없음(미정)" 을 뜻합니다. SQLD에서 가장 자주·헷갈리게 나오는 부분으로, 연산·비교·집계에서 NULL이 어떻게 동작하는지 정확히 알아야 합니다.
이 단원, 시험에서 어디에 나오나
- 제1과목 「데이터 모델링의 이해」의 '데이터 모델과 SQL' 세부항목입니다.
- SQL 실행결과를 예측하게 하는 함정형 문제가 단골입니다(특히 집계·비교).
① 연산과 비교 — 3값 논리
그림 1. 산술연산에 NULL이 섞이면 결과도 NULL, 비교(= NULL)는 UNKNOWN이라 IS NULL을 써야 합니다. (자작 도식)
- 산술연산:
1000 + NULL = NULL— NULL이 섞이면 결과는 무조건 NULL. - 비교연산:
수당 = NULL→ 참이 아니라 UNKNOWN. 그래서 결과에 안 잡힙니다. - NULL 판별: 반드시
IS NULL/IS NOT NULL을 씁니다.
3값 논리 = 참 · 거짓 · UNKNOWN. WHERE 조건이 UNKNOWN이면 그 행은 결과에서 빠집니다.
② 집계 함수는 NULL을 뺀다
그림 2. 집계는 NULL을 제외합니다. AVG의 분모도 NULL을 뺀 개수라 400÷2=200입니다. (자작 도식)
- 집계 함수(SUM·AVG·MAX·MIN)는 NULL을 제외 하고 계산합니다.
- COUNT(*) = NULL 포함 전체 행 수.
- COUNT(칼럼) = 그 칼럼이 NULL인 행은 빼고 셈.
- 수당이
[100, NULL, 300]→AVG(수당) = 400 ÷ 2 = 200(분모가 3이 아님).
③ NULL 처리 함수
NVL(A, B): A가 NULL이면 B (Oracle). 표준은COALESCE.COALESCE(a, b, c): 앞에서부터 처음 만나는 NULL이 아닌 값 반환.NULLIF(A, B): A=B면 NULL, 다르면 A.
자주 틀리는 함정
= NULL로 NULL을 찾으려 함 → 결과 0건.IS NULL써야 함.AVG분모 를 전체 행 수로 계산 → NULL 제외 개수로 나눠야 함.COUNT(*)와COUNT(칼럼)을 같다고 착각 → 칼럼에 NULL 있으면 값이 다름.- NOT IN (…, NULL) → 전체가 UNKNOWN이 되어 결과 0건.
한 장 정리 (암기 카드)
- NULL = 값 없음(0·공백 아님), 3값 논리(참·거짓·UNKNOWN).
- 산술에 NULL → 결과 NULL. 비교는
IS NULL로만. - 집계는 NULL 제외.
COUNT(*)=전체 /COUNT(칼럼)=NULL 제외. COALESCE=처음 non-NULL,NVL=Oracle 치환.
참고 출처
- 시험 과목·출제기준: 한국데이터산업진흥원(KDATA) 데이터자격검정 (2026년 7월 확인)
- NULL의 3값 논리·집계 동작은 ANSI SQL 표준에 근거하며, 본문 설명·예시·도식은 자작입니다.