본문 바로가기
DATABASE

[SQL] three-valued logic

by v쩡구v 2023. 2. 9.
반응형
SQL에서 NULL의 의미

 

SQL에서 NULL은 세 가지의 의미를 가진다.

- unknown : 알려지지 않은 값

- unavailable or withheld : 이용할 수 없는 값(비공개)

- N/A(not applicable) : 존재하지 않는 값(적용할 수 없는)

A와 B의 생일이 둘 다 NULL 상태인 경우 이때, A와 B의 생일이 동일하다고 볼 수 없다.
이 경우 둘의 생일이 업데이트가 되지 않았거나 비공개 상태일 경우이며
같을 수도 있고, 다를 수 도 있다고 볼 수 있다.

 

 

NULL과의 비교연산

 

SQL에서 NULL과 비교 연산을 하게 되면 UNKNOWN이란 결과가 나오게 된다.

- UNKNOWN : TRUE 일 수도 있고, FALSE 일 수도 있다는 의미를 가진다.

- three-valued logic : 비교/논리 연산의 결과이며 TRUE, FALSE, UNKNOWN을 가진다.

 

비교 연산 예 결과
1 = 1 TRUE
1 != 1 FALSE
1 = NULL UNKNOWN
1 != NULL
1 > NULL
1 <= NULL
NULL = NULL
NULL이라는 값이 실제로 유효한 값을 가질 수 있었다면 그 값이 어떤 값인지에 따라서
결과 값이 TRUE 이거나 FALSE 일 수도 있기 때문에 SQL에서는 UNKNOWN으로 처리한다.

= 한쪽에 NULL이 있으면 무조건 UNKNOWN 값이 나오게 된다

 

 

UNKNOWN을 포함한 논리연산

 

AND TRUE FALSE UNKNOWN / NULL
TRUE TRUE FALSE UNKNOWN
FALSE FALSE FALSE FALSE
UNKNOWN / NULL UNKNOWN FALSE UNKNOWN

AND는 두 피연산자가 TRUE 값을 가지고 있어야 TRUE를 반환하는 연산자이다.

TRUE AND UNKNOWN : UNKNOWN

 

OR TRUE FALSE UNKNOWN / NULL
TRUE TRUE TRUE TRUE
FALSE FALSE FALSE UNKNOWN
UNKNOWN / NULL TRUE UNKNOWN UNKNOWN

 

NOT  
TRUE FALSE
FALSE TRUE
UNKNOWN / NULL UNKNOWN
- where절에 있는 condition의 결과가 TRUE인 tuple만 선택된다.
- 즉, 결과가 FALSE 이거나 UNKNOWN이면 그 tuple은 선택되지 않는다.

 

 

NOT IN 사용 시

 

v NOT IN (v1, v2, v3)

v != v1 AND v != v2 AND v != v3

 

 

가정 결과
1 not in (2, 3, 4) TRUE
1 not in (1, 2, 3) FALSE
1 not in (1, 2, null) FALSE
1 not in (2, 3, null) UNKNOWN

 

 

반응형

댓글