오래 못 할 짓 하지 않기

[ 데이터베이스 ] 6. NULL / 3 valued logic 본문

3학년 1학기/데이터베이스(DB)

[ 데이터베이스 ] 6. NULL / 3 valued logic

쫑알bot 2023. 12. 31. 18:37
728x90

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인 튜플을 피할 수 있다.

 

 

(출처)

유튜브 쉬운코드