오래 못 할 짓 하지 않기
[ 데이터베이스 ] 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인 튜플을 피할 수 있다.
(출처)
유튜브 쉬운코드
'3학년 1학기 > 데이터베이스(DB)' 카테고리의 다른 글
[ 데이터베이스 ] 8. 데이터 조회 - Group/ Aggregate / Order (0) | 2024.01.03 |
---|---|
[ 데이터베이스 ] 7. Join (좀 어려움 ㅠ) (0) | 2024.01.02 |
[ 데이터베이스 ] 5. Subquery (0) | 2023.12.31 |
[ 데이터베이스 ] 4. SQL 활용 ( 추가/수정/삭제 ) (0) | 2023.12.30 |
[ 데이터베이스 ] 3. SQL (0) | 2023.12.28 |