SQL에서의 NULL

백엔드·2023년 8월 31일
1

들어가며

해당 강의를 보고 정리한 내용입니다.

SQL에서의 NULL의 의미와 어떤식으로 동작하는 지 살펴보겠습니다.

SQL에서의 NULL

  • unknown

    데이터의 존재 여부는 알려져 있지만 실제 값은 아직 알려지지 않은 경우에 해당합니다. 예를 들어, 고객의 생년월일 정보가 NULL인 경우 해당 고객의 생년월일이 아직 확인되지 않았다는 뜻입니다.

  • unavailable or withheld

    예를 들어, 고객의 전화번호가 NULL인 경우 해당 고객이 전화번호를 공개하지 않겠다는 뜻으로 사용될 수 있습니다.

  • not applicable

    예를 들어, 개인의 집 전화번호가 NULL인 경우 해당 개인이 집에 전화기 자체를 가지고 있지 않을 수 있습니다.

NULL과 Three-Valued Logic


SQL에서 NULL과 비교 연산을 수행하면 결과는 항상 UNKNOWN입니다. 즉, NULL이 어떤 값과 비교되더라도 그 결과는 "true일 수도 있고 false일 수도 있다"는 것을 의미합니다.

Three-Valued Logic은 세 가지 값, 즉 true, false, UNKNOWN을 가지는 논리 연산을 나타냅니다. 비교 연산을 수행할 때 두 값 중 하나라도 NULL이면 연산의 결과는 항상 UNKNOWN이 됩니다. 이로 인해 비교 연산의 결과는 true, false, UNKNOWN 세 가지 중 하나가 될 수 있습니다.

WHERE절의 condition(s)

  • WHERE 절에 있는 조건식(condition)의 결과가 true인 튜플만 선택됩니다. 따라서 조건식의 결과가 false이거나 UNKNOWN인 경우 해당 튜플은 선택되지 않습니다.

NOT IN 사용 시, null이 있을 경우

NOT IN 조건을 사용할 때 주의가 필요합니다. 만약 NOT IN 조건의 서브쿼리 결과에 null이 포함되어 있다면, 해당 WHERE 조건의 결과는 항상 false나 UNKNOWN이 됩니다. 이는 NOT IN이 AND 조건으로 동작하기 때문입니다.

예를 들어, 만약 실제로 2000년대생이 없는 부서가 존재한지만 NOT IN 조건에서 NULL이 존재하기 때문에 WHERE 조건의 결과는 항상 false나 UNKNOWN 되므로 해당 부서가 반환되지 않아 결과적으로 반환 값이 없는 문제가 발생할 수 있습니다.

profile
백엔드 개발자

0개의 댓글