NULL is Unknown

NULL은 빈 값이 아니라, 비교할 확정 값이 없다는 표시다

0과 빈 문자열은 값입니다. NULL은 값이 아직 없거나 알 수 없다는 상태라서 비교 결과가 TRUE/FALSE로 닫히지 않고 Unknown이 됩니다.

숫자 값
0

확정된 숫자

점수나 수량이 실제로 0이라는 뜻입니다.

0 = 0
TRUE
문자 값
''

길이가 0인 문자열

대부분의 DBMS에서는 비어 있음이 확정된 문자열 값입니다.

'' = ''
TRUE
미확정 상태
NULL

값을 알 수 없음

알 수 없음, 아직 없음, 해당 없음 같은 미확정 상태를 나타냅니다.

NULL = NULL
Unknown

SQL 조건식은 세 결과를 가질 수 있다

TRUE 조건 만족
FALSE 조건 불만족
Unknown NULL 때문에 판단 불가

NULL은 비교가 아니라 상태로 검사한다

department = NULL 비교 결과가 Unknown이라 WHERE에서 선택되지 않습니다.
department IS NULL 값을 비교하지 않고 NULL 상태인지 직접 검사합니다.
NULL + 10 모르는 값에 계산을 해도 결과는 여전히 NULL입니다.
주의: 표준 SQL과 많은 DBMS에서 빈 문자열은 NULL과 다르지만, Oracle은 빈 문자열을 NULL처럼 취급합니다.