728x90
반응형
SMALL
이 글은 다음 유튜브 영상을 참조해 작성했습니다.
NULL
SQL에서 NULL의 의미
- unknown
알려지지 않았다.
- unavailable or withheld
본인의 정보를 공개하지 않은 경우(정보를 이용할 수 없다)
- not applicable
적용이 불가한 경우(해당사항이 없는 경우)
위 쿼리문은 Empty set을 리턴하지만 이 결과가 맞다고 생각하면 안된다.
우선 NULL과 비교연산자로 = 기호를 사용하면 안된다.
mysql> SELECT id FROM employee WHERE birth_date IS NULL;
위 쿼리문과 같이 IS라는 키워드를 사용해야 한다.
IS의 반대의 경우 IS NOT키워드를 사용하면 된다.
NULL과 Three-Valued Logic
- SQL에서 NULL과 비교 연산을 하게 되면 그 결과는 UNKNOWN이다
- UNKNWON은 '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 |
AND | TRUE | FALSE | UNKNOWN |
TRUE | TRUE | FALSE | UNKNOWN |
FALSE | FALSE | FALSE | FALSE |
UNKNOWN | UNKNOWN | FALSE | UNKNOWN |
OR | TRUE | FALSE | UNKNOWN |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | UNKNOWN |
UNKNOWN | TRUE | UNKNOWN | UNKNOWN |
NOT | |
TRUE | FALSE |
FALSE | TRUE |
UNKNOWN | UNKNOWN |
WHERE절의 condition(s)
- where절에 있는 condition(s)의 결과가 TRUE인 tuple(s)만 선택 된다
- 즉, 결과가 FALSE거나 UNKNOWN이면 tuple은 선택되지 않는다.
NOT IN 사용 시 주의 사항
v NOT IN (v1, v2, v3)는 아래와 같은 의미이다
v != v1 AND v != v2 AND v != v3
만약 v1, v2, v3중에 하나가 NULL이라면?
NOT IN 예제 | 결과 |
3 not in (1,2,4) | TRUE |
3 not in (1,2,3) | FALSE |
3 not in (1,3,NULL) | FALSE |
3 not in (1,2,NULL) | UNKNOWN |
728x90
반응형
LIST