공부 기록/Database
Three-Valued Logic
yurison
2023. 5. 4. 10:48
Null
Null의 의미
- unknown : 알 수 없음
- unavailable or withheld : 비공개
- not applicable : 해당사항 없음
Null의 사용
(X) SELECT id FROM employee WHERE birth_date = NULL;
(O) SELECT id FROM employee WHERE birth_date IS NULL;
Three-Valued Logic
- SQL에서 NULL과 비교 연산을 하게 되면 결과는 UNKNOWN이다.
- UNKNOWN은 TRUE일 수도 있고 FALSE일 수도 있다는 의미
- Three-valued Logic : 비교/논리 연산의 결과로 TRUE, FALSE, UNKNOWN을 가진다.
1 = NULL -> UNKNOWN
1 != NULL -> UNKNOWN
1 > NULL -> UNKNOWN
1 <= NULL -> UNKNOWN
NULL = NULL -> UNKNOWN
- TRUE and UNKNOWN -> UNKNOWN
FALSE and UNKNOWN -> FALSE
UNKNOWN and UNKNOWN -> UNKNOWN - TRUE or UNKNOWN -> TRUE
FALSE or UNKNOWN -> UNKNOWN
UNKNOWN or UNKNOWN -> UNKNOWN - not UNKNOWN -> UNKNOWN
not in 사용 시 주의 사항
3 not in (1, 2, NULL)
→ 3 != 1 → TRUE
→ 3 != 2 → TRUE
→ 3 ? NULL → UNKNOWN
결과는 UNKNOWN