NULL은 0이 아니다! SQL에서 NULL이 가진 의미와 주의점
728x90
반응형
SMALL
SQL을 처음 접할 때 가장 혼동하기 쉬운 개념 중 하나가 바로 NULL
입니다. 많은 분들이 NULL
을 숫자 0이나 빈 문자열로 오해하지만, 실제로는 값이 존재하지 않음을 의미합니다.
NULL은 어떤 의미인가요?
NULL
은 값이 존재하지 않음을 나타냅니다.- 숫자 0(
0
)은 실제 값이고,NULL
은 값 자체가 없음입니다. - 빈 문자열(
''
)도NULL
과 다릅니다. 빈 문자열은 값이지만, 비어있는 값일 뿐입니다.
NULL을 비교할 때 주의할 점
일반적인 비교 연산자(=
, !=
)로는 NULL
값을 정확히 비교할 수 없습니다. 예를 들어 다음 쿼리는 아무 결과도 반환하지 않습니다.
SELECT * FROM employees WHERE commission_pct = NULL;
이유는 NULL = NULL
은 참이 아니라 알 수 없음(UNKNOWN)이 되기 때문입니다. NULL
비교는 반드시 IS NULL
또는 IS NOT NULL
을 사용해야 합니다.
SELECT * FROM employees WHERE commission_pct IS NULL;
집계 함수와 NULL
COUNT(*)
는 모든 행을 세지만COUNT(column)
은 해당 컬럼이 NULL이 아닌 값만 셉니다.SUM
,AVG
,MAX
,MIN
같은 집계 함수도NULL
은 무시하고 계산합니다.
실무에서 자주 발생하는 실수
- 조건절에
= NULL
사용 → 항상 결과가 없음 - 조인 시
NULL
값이 있는 컬럼 누락 → 원하는 결과 누락 - 정렬(SORT) 결과가 예상과 다름 →
NULLS FIRST
또는NULLS LAST
명시 필요
SQL에서 NULL
은 단순한 "빈 값"이 아닌, 존재하지 않는 상태로 간주됩니다. 쿼리 작성 시 NULL
의 의미를 정확히 이해하고 조건절이나 집계 함수에서 적절히 처리하는 것이 매우 중요합니다.
#SQL #NULL #값비교 #ISNULL #쿼리실수 #기초정리 #데이터베이스
728x90
반응형
LIST
'SQL 기초 정리' 카테고리의 다른 글
LEFT JOIN 결과가 예상과 다를 때? 누락된 데이터의 진짜 원인 (0) | 2025.04.11 |
---|---|
SELECT *를 쓰면 왜 안 좋을까? 실무에서 컬럼을 명시하는 이유 (0) | 2025.04.10 |
WHERE 절 조건의 순서가 성능에 영향을 줄까? (0) | 2025.04.10 |
INNER JOIN과 OUTER JOIN, 뭐가 다를까? 실무에서 꼭 알아야 할 차이점 (0) | 2025.04.10 |
GROUP BY와 ORDER BY의 차이는 뭘까? 비슷해 보이지만 전혀 다른 역할 (0) | 2025.04.09 |