Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 NULL 값 다루기: IS NULL과 IS NOT NULL 완벽 가이드

MySQL에서 NULL 값 처리하기: IS NULL과 IS NOT NULL

MySQL에서 NULL 값을 조회하거나 필터링할 때는 두 가지 전용 연산자를 사용합니다.

  • IS NULL — 값이 NULL인 행을 찾을 때 사용
  • IS NOT NULL — 값이 NULL이 아닌 행을 찾을 때 사용

NULL은 '값이 없음' 또는 '알 수 없음'을 의미하는 특수한 상태입니다. 따라서 일반적인 비교 연산자(=, !=)로는 NULL을 판별할 수 없으며, 반드시 위 연산자를 사용해야 합니다.

개념을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table NULL_Demo
-> (
-> UserId int,
-> UserName varchar(20),
-> UserAddress varchar(20)
-> );
Query OK, 0 rows affected (0.67 sec)

예제: 데이터 삽입

INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 삽입해 보겠습니다. 쿼리는 다음과 같습니다.

mysql> insert into NULL_Demo values(12345,'John',NULL);
Query OK, 1 row affected (0.16 sec)
mysql> insert into NULL_Demo values(2345,'Carol','UK');
Query OK, 1 row affected (0.35 sec)
mysql> insert into NULL_Demo values(233444,NULL,NULL);
Query OK, 1 row affected (0.60 sec)
mysql> insert into NULL_Demo values(NULL,NULL,NULL);
Query OK, 1 row affected (0.27 sec)

SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from NULL_Demo;

출력 결과

+--------+----------+-------------+
| UserId | UserName | UserAddress |
+--------+----------+-------------+
| 12345 | John | NULL |
| 2345 | Carol | UK |
| 233444 | NULL | NULL |
| NULL | NULL | NULL |
+--------+----------+-------------+
4 rows in set (0.00 sec)

위 결과에서 일부 컬럼에 NULL 값이 포함되어 있는 것을 확인할 수 있습니다. 이제 IS NULL과 IS NOT NULL을 실제로 활용하는 쿼리 예제를 살펴보겠습니다.

Case 1 — IS NOT NULL 사용 예제

UserId와 UserName 조건에 더해, UserAddress가 NULL이 아닌 레코드만 조회하는 쿼리입니다.

mysql> select *from NULL_Demo where UserId = 2345 AND UserName = 'Carol' AND UserAddress IS NOT NULL;

위 쿼리에서 설정한 조건에 맞는 NOT NULL 레코드가 다음과 같이 출력됩니다.

+--------+----------+-------------+
| UserId | UserName | UserAddress |
+--------+----------+-------------+
| 2345 | Carol | UK |
+--------+----------+-------------+
1 row in set (0.00 sec)

Case 2 — IS NULL 사용 예제

UserName이 'John'이면서 UserAddress가 NULL인 레코드를 조회하는 쿼리입니다.

mysql> select *from NULL_Demo where UserName = 'John' AND UserAddress IS NULL;

위 쿼리에서 설정한 조건에 맞는 NULL 레코드가 다음과 같이 출력됩니다.

+--------+----------+-------------+
| UserId | UserName | UserAddress |
+--------+----------+-------------+
| 12345 | John | NULL |
+--------+----------+-------------+
1 row in set (0.00 sec)

핵심 정리

MySQL에서 NULL 값을 조회할 때는 = NULL이나 != NULL과 같은 비교 연산자가 아닌, IS NULLIS NOT NULL을 사용해야 합니다. NULL은 하나의 값이 아니라 '알 수 없는 상태'를 나타내기 때문에 일반적인 비교 연산으로는 판별할 수 없습니다. 이 원칙만 기억하면 NULL이 포함된 데이터도 정확하게 필터링하고 조회할 수 있습니다.