공부 기록/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