MySQL, NULL 주의 사항

paikpaik·2023년 7월 16일
0

DB, SQL(MySQL)

목록 보기
7/9
post-thumbnail

NULL

SQL에서 NULL의 의미

  • unknown
  • unavailable or withheld
  • not applicable
  • NULL을 조회할때는 = 을 사용하면 안됨!(사용X)
  • NULL을 조회할때는 IS, IS NOT 를 사용해야 함!

NULL과 Three-Valued Logic

NULL과 SQL three-valued logic

  • 이러한 조회를 한다고 했을때 NULL과 비교연산을 하면 false라고 생각하기 쉽지만 false가 아니다!
  • SQL에서 NULL과 비교 연산을 하게 되면 그 결과는 UNKNOWN이다.
  • UNKNOWN은 'TRUE 일수도 있고 FALSE일 수도 있다'라는 의미이다.
  • three-valued logic : 비교/논리 연산의 결과로 TRUE, FALSE, 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이라면?
  • 해결방법은 다양하지만 3가지 정도가 있다.
    1. NOT NULL constraints를 걸어두기
    1. subquery에서 NOT NULL 체크
    1. NOT IN을 NOT EXISTS로 바꾸기
출처 : 쉬운코드
profile
매일 앞으로 나아가는 개발자

0개의 댓글