해당 강의를 보고 정리한 내용입니다.
SQL에서의 NULL의 의미와 어떤식으로 동작하는 지 살펴보겠습니다.
unknown
데이터의 존재 여부는 알려져 있지만 실제 값은 아직 알려지지 않은 경우에 해당합니다. 예를 들어, 고객의 생년월일 정보가 NULL인 경우 해당 고객의 생년월일이 아직 확인되지 않았다는 뜻입니다.
unavailable or withheld
예를 들어, 고객의 전화번호가 NULL인 경우 해당 고객이 전화번호를 공개하지 않겠다는 뜻으로 사용될 수 있습니다.
not applicable
예를 들어, 개인의 집 전화번호가 NULL인 경우 해당 개인이 집에 전화기 자체를 가지고 있지 않을 수 있습니다.
SQL에서 NULL과 비교 연산을 수행하면 결과는 항상 UNKNOWN입니다. 즉, NULL이 어떤 값과 비교되더라도 그 결과는 "true일 수도 있고 false일 수도 있다"는 것을 의미합니다.
Three-Valued Logic은 세 가지 값, 즉 true, false, UNKNOWN을 가지는 논리 연산을 나타냅니다. 비교 연산을 수행할 때 두 값 중 하나라도 NULL이면 연산의 결과는 항상 UNKNOWN이 됩니다. 이로 인해 비교 연산의 결과는 true, false, UNKNOWN 세 가지 중 하나가 될 수 있습니다.
NOT IN 조건을 사용할 때 주의가 필요합니다. 만약 NOT IN 조건의 서브쿼리 결과에 null이 포함되어 있다면, 해당 WHERE 조건의 결과는 항상 false나 UNKNOWN이 됩니다. 이는 NOT IN이 AND 조건으로 동작하기 때문입니다.
예를 들어, 만약 실제로 2000년대생이 없는 부서가 존재한지만 NOT IN 조건에서 NULL이 존재하기 때문에 WHERE 조건의 결과는 항상 false나 UNKNOWN 되므로 해당 부서가 반환되지 않아 결과적으로 반환 값이 없는 문제가 발생할 수 있습니다.