핵심 인사이트 (3줄 요약)
- 본질: NULL은 값이 없다는 뜻이 아니라, 아직 모름(Unknown) 또는 해당 없음(Inapplicable)을 뜻하는 특수 마커다.
- 가치: SQL은 NULL을 위해 3값 논리(TRUE/FALSE/UNKNOWN)를 사용하므로 일반적인 비교와 다르게 동작한다.
- 판단: NULL은 =로 비교하지 말고 IS NULL로 검사해야 하며, 집계/조인에서도 주의를 기울여야 한다.
Ⅰ. 개요 및 필요성
데이터베이스에서 NULL은 0이나 빈 문자열과 다르다. 값이 없다는 의미가 아니라, 아직 알 수 없거나 넣을 수 없음을 표현한다.
이 차이를 모르고 SQL을 쓰면 비교, 집계, 조건문에서 예상과 다른 결과가 나온다.
- 📢 섹션 요약 비유: 상자 안에 "모름" 메모가 들어 있는 것이지, 상자가 비어 있다는 뜻은 아니다.
Ⅱ. 아키텍처 및 핵심 원리
Value
├─ Known
├─ Unknown
└─ Inapplicable
| 개념 | 의미 |
|---|---|
| NULL | 특수 마커 |
| 3-valued logic | TRUE / FALSE / UNKNOWN |
| IS NULL | NULL 여부 검사 |
SQL에서는 NULL = NULL도 TRUE가 아니라 UNKNOWN이 된다. 그래서 일반적인 2값 논리와 다르게 해석해야 한다.
- 📢 섹션 요약 비유: 모른다고 적힌 칸은 예/아니오로 바로 답할 수 없다.
Ⅲ. 비교 및 연결
| 값 | 의미 | NULL과 관계 |
|---|---|---|
| 0 | 숫자 값 | NULL 아님 |
| "" | 빈 문자열 | NULL 아님 |
| NULL | 미상/해당 없음 | 특수 마커 |
| 연산 | 결과 |
|---|---|
| = | UNKNOWN 가능 |
| IS NULL | 정확한 검사 |
| COALESCE | 대체값 지정 |
NULL은 집계 함수, 조인, 조건 필터에서 결과를 바꾸므로, 데이터 모델과 SQL 설계에서 반드시 고려해야 한다.
- 📢 섹션 요약 비유: 빈 접시와 "아직 안 받음" 표시를 같은 것으로 보면 안 된다.
Ⅳ. 실무 적용 및 기술사 판단
체크리스트
- NULL과 0/빈 문자열을 구분하는가?
- IS NULL / IS NOT NULL을 사용했는가?
- 집계 함수의 NULL 처리 방식을 아는가?
- 조인과 필터에서 UNKNOWN 결과를 고려했는가?
- NULL 허용 여부를 모델링 단계에서 결정했는가?
안티패턴
- NULL을 일반 값처럼 비교하는 설계
- 의미 없는 빈 문자열과 NULL을 혼동하는 설계
- 3값 논리를 무시하는 설계
- NULL 허용 규칙 없이 테이블만 만드는 설계
기술사 관점에서는 NULL을 데이터 결측만이 아니라 도메인과 업무 의미를 함께 담는 개념으로 봐야 한다.
- 📢 섹션 요약 비유: "없음"과 "아직 모름"은 서로 다르다.
Ⅴ. 기대효과 및 결론
NULL을 정확히 이해하면 SQL 조건과 집계 결과를 더 안전하게 예측할 수 있다. 결국 데이터 품질과 쿼리 해석이 안정된다.
결론적으로 NULL은 0이나 공백이 아니라, 알려지지 않음과 해당 없음의 표시다.
- 📢 섹션 요약 비유: 비어 있는 칸과 표시만 남은 칸은 다르다.
관련 개념 맵
NULL
↓
3-valued Logic
↓
SQL Comparison
↓
Data Quality
관련 키워드 및 발전 흐름도
Unknown Value
↓
NULL
↓
Three-valued Logic
↓
Query Semantics
어린이를 위한 3줄 비유 설명
아직 모르는 답이 있을 수 있어요.
그건 0이 아니라 모른다는 표시예요.
NULL은 그런 특별한 표시예요.