MySQL에서 NULL 값 조회하기
MySQL에서 특정 열의 값이 NULL인 행을 선택하려면 WHERE 절과 함께 IS NULL 연산자를 사용해야 합니다. 주의할 점은 = NULL이 아닌 반드시 IS NULL을 사용해야 한다는 것입니다. NULL은 '값이 없음'을 의미하는 특수한 상태이기 때문에 일반적인 비교 연산자로는 비교할 수 없습니다.
기본 문법
NULL 값을 가진 행을 조회하는 기본 문법은 다음과 같습니다.
SELECT * FROM yourTableName WHERE yourColumnName IS NULL;
예제로 이해하기
먼저 개념을 이해하기 위해 간단한 테이블을 생성해 보겠습니다.
mysql> create table NULLDemo1 -> ( -> StudentId int, -> StudentName varchar(100) -> ); Query OK, 0 rows affected (1.48 sec)
다음으로 테이블에 레코드를 삽입합니다. 일부 학생의 ID는 의도적으로 NULL로 입력했습니다.
mysql> insert into NULLDemo1 values(NULL,'John'); Query OK, 1 row affected (0.25 sec) mysql> insert into NULLDemo1 values(100,'Johnson'); Query OK, 1 row affected (0.38 sec) mysql> insert into NULLDemo1 values(NULL,'Carol'); Query OK, 1 row affected (0.25 sec) mysql> insert into NULLDemo1 values(101,'Sam'); Query OK, 1 row affected (0.25 sec)
SELECT 문을 사용하여 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from NULLDemo1;
실행 결과는 다음과 같습니다. John과 Carol의 StudentId가 NULL로 저장된 것을 볼 수 있습니다.
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | NULL | John | | 100 | Johnson | | NULL | Carol | | 101 | Sam | +-----------+-------------+ 4 rows in set (0.00 sec)
IS NULL 조건 적용하기
이제 앞서 소개한 문법을 실제 테이블에 적용하여 StudentId가 NULL인 행만 선택해 보겠습니다.
mysql> select *from NULLDemo1 where StudentId IS NULL;
실행 결과, StudentId가 NULL인 두 개의 행만 정상적으로 조회되었습니다.
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | NULL | John | | NULL | Carol | +-----------+-------------+ 2 rows in set (0.00 sec)
참고 사항
반대로 NULL이 아닌 행을 조회하고 싶다면 IS NOT NULL을 사용하면 됩니다. 또한 NULL 값은 집계 함수나 조인 시 예상치 못한 결과를 초래할 수 있으므로, 데이터 조회 시 NULL 처리 로직을 항상 염두에 두는 것이 좋습니다.