Skip to Content
Suffering builds character

4.NULL

NULL이란 정해지지 않은 값, 해당 사항이 없음, 알려지지 않은 값 등을 나타낼 때 사용

ex) 테이블에 값을 추가할 때 나중에 특정 조건에 따라 설정해야 해서 미리 설정할 수 없는 필드

1. Null의 특징

1-1. null과 null이 서로 같을 수 없음

rental 테이블에서 customer_id가 155번인 대여기록 중 rental_id, customer_id, return_date 열만 조회

sql
SELECT rental_id, customer_id, return_date FROM rental WHERE customer_id = 155;

rental 테이블에서 영화(film)를 반납하지 않은 대여기록 중 rental_id, customer_id, return_date 조회

sql
SELECT rental_id, customer_id, return_date FROM rental WHERE return_date = NULL;

→ return_date도 null이고, Null도 null이기 때문에 두 개의 null이 서로 같을 수 없다는 특징 때문에 해당되는 조건이 필터링(WHERE) 되지 않고 Empty set을 반환하게 됨

rental 테이블에서 영화(film)를 반납하지 않은 대여기록 중 rental_id, customer_id, return_date 조회

sql
SELECT rental_id, customer_id, return_date FROM rental WHERE return_date IS NULL;

→ 해당 필드가 Null인지 확인하기 위해서는 IS NULL 연산자를 사용함

rental 테이블에서 영화를 반납한 대여기록 중 rental_id, customer_id, return_date를 상위 50개만 조회

sql
SELECT rental_id, customer_id, return_date FROM rental WHERE return_date IS NOT NULL LIMIT 50;

→ IS NOT NULL 키워드 사용

rental 테이블에서 2005년 5월에서 8월 사이에 반납되지 않은 대여기록 중 rental_id, customer_id, return_date를 조회

sql
SELECT rental_id, customer_id, return_date FROM rental WHERE return_date NOT BETWEEN '2005-05-01' AND '2005-09-01';

→ 아까 조회한 null 데이터 기록은 포함되지 않았음

null까지 포함하기 위해서는 별도의 조건을 작성해야 함

sql
SELECT rental_id, customer_id, return_date FROM rental WHERE return_date IS NULL OR return_date NOT BETWEEN '2005-05-01' AND '2005-09-01';
Last updated on