STUDY/database

[MySQL]데이터 조회(3) NULL

까미이모 2023. 11. 27. 16:37

SQL 에서 NULL의 의미

  • unknown
  • unavailable or withheld (공개X)
  • not applicable (적용불가 해당사항없음)

사용예시

  • IS NULL
  • IS NOT NULL
SELECT id FROM employee WHERE birth_date IS NULL; -- IS NOT NULL

NULL과 SQL three-valued logic

  • SQL에서 NULL과 비교 연산을 하게 되면 그 결과는 UNKNOWN이다
  • UNKNOWN은 'TRUE 일수도 있고 FALSE일 수도 있다'라는 의미이다
  • three-valued logic : 비교/논리 연산의 결과로 TRUE, FALSE, UNKNOWN을 가진다

 

WHERE 절의 conditions

  • WHERE 절에 있는 conditions의 결과가 TRUE인 tuple만 선택된다
  • 즉 결과가 FALSE거나 UNKNOWN이면 tuple은 선택되지 않는다

 

NOT IN 사용 시 주의사항

v NOT IN (M1, V2, V3)는 아래와 같은 의미이다

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

만약 v1, v2, v3 중에 하나가 NULL이라면? 결과는 UNKNOWN이 될수 있다.

 

해결방안

  • is not null 조건 추가
  • not exists로 변경

'STUDY > database' 카테고리의 다른 글

[MySQL] 데이터 조회(5) group by  (0) 2023.11.27
[MySQL] 데이터조회(4) JOIN  (0) 2023.11.27
[MySQL] 데이터 조회(2) subquery  (0) 2023.11.27
[MySQL] 데이터 조회(1)  (1) 2023.11.27
[MySQL] 데이터 추가, 수정, 삭제  (0) 2023.11.23