기초 SQL입문

NULL 처리

SQL에서 NULL은 "값이 없음"을 의미하며, 일반적인 비교 연산과 다른 규칙이 적용된다

정의

NULL은 "값이 없다"는 뜻으로, 0이나 빈 문자열과는 완전히 다르다. 예를 들어 전화번호를 모르는 고객의 phone 컬럼은 NULL이다. NULL을 비교할 때는 = 가 아닌 IS NULL / IS NOT NULL을 써야 한다. WHERE phone = NULL은 절대 결과가 안 나온다.

왜 중요한가?

NULL은 SQL에서 가장 흔한 실수의 원인. = 로 비교하면 결과가 항상 비어버리고, 합계/평균 같은 계산에서도 NULL은 자동으로 제외된다. NULL을 0으로 취급하면 통계가 어긋날 수 있어 의미를 정확히 알아야 한다.

틀리기 쉬운 포인트

  • !WHERE col = NULL은 항상 결과가 비어있습니다. NULL = NULL도 TRUE가 아니라 UNKNOWN입니다. 반드시 IS NULL을 사용하세요.
  • !AVG, SUM 등 집계 함수는 NULL을 무시합니다. 10, NULL, 30의 AVG는 (10+30)/2 = 20이지, (10+0+30)/3이 아닙니다.
  • !COALESCE(컬럼, 기본값)으로 NULL을 대체할 수 있습니다. NVL은 오라클 전용이고, IFNULL은 MySQL 전용이므로 표준인 COALESCE를 권장합니다.

예시

SELECT name, COALESCE(phone, '연락처 없음') AS phone
FROM employees
WHERE email IS NOT NULL;

성능 포인트

!B-tree 인덱스는 NULL 미저장. IS NULL이 자주 쓰이면 함수 기반 인덱스를 검토하라.

관련 개념

관련 문제 풀어보기

관련 카테고리