CS/SQL

SQL에서 null의 의미

lovelyunsh 2024. 5. 27. 21:00

서론

SQL에서 null은 단순히 없다가 아닌 여러 의미를 가지고 있고 연산 수행을 할 때 주의해서 사용해야 함.

 

 

SQL에서 null의 의미

SQL에서 null은 3가지 의미를 가짐.

 

null의 의미

  • unknown - 알 수 없음
  • unavailable or withheld - 공개 하지 않음
  • not applicable - 적용할 수 없음

→ 생일이 null 인 두 row의 생일은 같을까? 정보를 모르는 거지 같은게 아님.

 

그렇기 때문에 = 과 같은 비교 연산으로 확인 불가능

select * from employee where birth_date = NULL; X
select * from employee where birth_date is NULL; O

그래서 나온 개념이 UNKNOWN

 

 

SQL three-valued logic

→ SQL은 비교/논리 연산의 결과로 TRUE, FALSE, UNKNOWN 3가지를 가진다.

 

여기서 주의사항이 나타난다.

not in연산을 할 때 null이 포함되어 있다면 항상 UNKNOWN 이므로 원하는 결과가 나오지 않음.

 

예제를 들어보자.

 

생일이 2000년 이후인데 dept_id가 null인 데이터가 있을 경우, 여기서 나올 수 있는 결과는 unknown, false 뿐

true가 절대 나오지 못하기 때문에 항상 result 결과로 아무것도 나오지 않는다.

 

이 문제를 해결하려면 서브쿼리 안의 조건에 E.dept_id is not null 과 같은 조건을 추가 해주어야 한다.

 

SQL의 논리 연산 결과표

위 글은 쉬운코드님의 데이터베이스 영상을 토대로 정리한 내용입니다.

https://www.youtube.com/watch?v=aL0XXc1yGPs&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=1