NULL 은 0 도, 빈 문자열도, false 도 아님
NULL 은 DB 가 "몰라" 라고 말하는 방식. 숫자 0 아님. 빈 문자열 아님. boolean false 아님. 값의 부재 — 채워진 적 없는 폼의 빈칸.
NULL 은 전염성
NULL 포함된 모든 연산이 NULL 반환. 5 + NULL 은 NULL. 'hi' || NULL 은 NULL. NULL = NULL 은 NULL (true 아님!). 그래서 모든 NULL 체크는 IS NULL / IS NOT NULL, 절대 = NULL 아님.
기본은 NOT NULL
'몰라' 상태를 진짜로 표현해야 할 게 아니면 모든 컬럼을 NOT NULL. 필요 없는 곳에 NULL 허용 = "NULL 이면 어떡해?" 의 부담을 데이터 모든 소비자에게 — 그리고 그들은 잊어버려.
IS DISTINCT FROM 연산자
NULL-safe equality (NULL 이 일반 값처럼 동작) 필요하면 IS DISTINCT FROM 이랑 IS NOT DISTINCT FROM. NULL = NULL 을 TRUE 로 처리, 다른 곳선 FALSE — 예측 가능, 스크립트 가능, 3-값 로직 없음.