데이터 모델링의 이해

09. NULL 속성 — SQLD 최다 함정, 연산·비교·집계 정리

CBT 전자문제집 편집팀
#SQLD##IS NULL#3값논리#COUNT

NULL0이나 공백이 아니라 "값이 없음(미정)" 을 뜻합니다. SQLD에서 가장 자주·헷갈리게 나오는 부분으로, 연산·비교·집계에서 NULL이 어떻게 동작하는지 정확히 알아야 합니다.

이 단원, 시험에서 어디에 나오나

  • 제1과목 「데이터 모델링의 이해」의 '데이터 모델과 SQL' 세부항목입니다.
  • SQL 실행결과를 예측하게 하는 함정형 문제가 단골입니다(특히 집계·비교).

① 연산과 비교 — 3값 논리

NULL의 연산과 비교 도식. 산술연산에 NULL이 들어가면 결과는 NULL, 비교는 UNKNOWN이 되어 IS NULL을 써야 한다

그림 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을 뺀다

수당이 100·NULL·300인 세 행에서 COUNT(*)=3, COUNT(수당)=2, AVG=200이 되는 도식

그림 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 치환.

참고 출처

CBT 전자문제집 편집팀

자격증 개념과 기출 유형을 쉽게 정리합니다.

관련 글