DB에서 subquery와 null의 의미에 대해 알아보자

박경현·2023년 8월 29일
0

오늘은 여기 좀 더 복잡한 데이터 조회 요청이 들어왔을 때 subquery로 처리하는 방법과
NULL이 DB에서 조금 다른 의미를 가지고 있다는 것을 적어보려고 한다!!

NULL의 의미

흔히 우리가 아는 프로그래밍 언어에서 NULL은 안에 들어있는게 없는 빈 공간을 의미한다

하지만 DB에서 null은 단순히 비어있다를 의미하지 않는다!

DB에서 NULL

  1. unknown
  2. unavailable (공개하지 않은 즉 이용할 )
  3. not applicable (적용할 수 없는)

만약 누군가의 생일 데이터가 null이라면 이건 그 사람이 아직 생일을 작성하지 않았거나
생일을 공개하기 싫어서 공개 안한거일수도 있다!

NULL = NULL ?

만약 임직원 id가 14,15인 사람의 생일이 null이다!
이건 14와 15가 생일이 같은지 아닌지 알 수가 없다!!

고로 이건 unknown이라고 표현한다!

select id from employee where birth_date=NULL;

NULL은 같은지 안 같은지 확인이 안되서 =인 비교 연산을 사용하면 안된다

select id from employee where birth_date is NULL;

이렇게 is를 써서 null이 있는지 확인하는게 맞는 표현법이다!

Three Value Logic

true, false 뿐만 아니라 unknown도 있다!

차고로 where 절에서 선택할때는 true인거만 선택한다! 애매한 unknown과 false는 선택에서 제외!

v not in (v1,v2,v3) -> 만약 v1 v2 v3중 하나가 null이라면?
3 not in (1,3, null) -> false
3 not in (1,2, null) -> unknown -> 즉 알 수 없다!

Subquery를 이용한 조회 요청 처리 방법

예제 풀이 - 1

id가 14인 임직원보다 생일이 빠른 임직원의 id, 이름, 생일 알기

일단 id가 14인 임직원의 생일을 봐보자

그리고 생일을 비교해야하므로 저 조회한 데이터의 생일보다 빠르면 된다!

subquery

서브 쿼리란 메인 쿼리 안에 하나의 쿼리를 더 넣어서 좀 더 정교한 데이터 요청을 처리하는 것을 말한다!

이렇게 하면 두가지 쿼리를 합쳐서 하나의 결과를 도출하게 된다!
항상 서브 쿼리는 ()로 감싸야 오류가 안난다!!!

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글