[ 데이터베이스 ] 6. NULL / 3 valued logic
NULL
1) Unknown
: True 일 수도 있고, False일 수도 있다.
알 수 없음
2) Unavailable or withheld
: 사용 불가
3) not applicable
: 애초에 해당사항 X
ex) 휴대폰 번호 칸이 NULL임 , 알고보니 폰이 없음
Attribute value가 NULL일 경우
14와 15의 생일이 둘 다 NULL ! = 14와 15의 생일은 같다.
Value 가 NULL인 데이터를 찾기
Select id from employee Where birth_date = null;
이러면 아무것도 안 나옴
Select id from employee Where birth_date is null;
이래야 birth date가 NULL인 값들을 볼 수 있다.
Three-Valued Logic
: 비교/ 논리 연산의 결과가
TRUE / FALSE / UNKNOWN 을 가진다는 의미
NULL은 어떤 비교 연산을 해도 NULL이다.
이유 : NULL의 값 이 어떤 것으로 나오는지에 따라 달라지기 때문에
AND일 때
True and Unknown = UNKNOWN
False and Unknown = 어찌됐든 이미 False가 있으므로 false
OR도 마찬가지.
위 연산 결과를 잘 알아야 하는 이유
Select하거나 그와 같은 연산을 할 때
Where 절에 있는 Condition 결과가 True인 Tuple만 선택하기 때문에
〓 False 이거나 Unknown인 tuple은 선택되지 않는다.
주로 우리가 주의해야 하는 상황 중에 하나는 Not In을 사용할 때이다.
이럴 때 아래와 같은 경우가 나올 수 있다.
마지막 예를 풀어 써보면
( 3 != 1 ) And ( 3 != 2 ) And (3 != NULL )
= T and T and Unknown
= Unknown
이러기 위해서는 Where 조건에 IS NOT NULL 도 추가해준다면 NULL인 튜플을 피할 수 있다.
(출처)
유튜브 쉬운코드