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

MySQL에서 조건부 NOT NULL을 다루는 방법: IS NULL과 IS NOT NULL 활용법

MySQL에서 조건부 NOT NULL 조건을 처리할 때는 <>(같지 않음)나 = 연산자를 사용하면 안 됩니다. NULL은 MySQL에서 특수한 값으로 취급되기 때문에, 반드시 IS NULLIS NOT NULL 속성을 사용해야 합니다.

테스트용 테이블 생성하기

조건부 NOT NULL의 동작 방식을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table ConditionalNotNullDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> SendMessage longtext,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.62 sec)

샘플 데이터 삽입하기

INSERT 명령어를 사용하여 테이블에 몇 개의 레코드를 추가합니다. NULL 값과 일반 문자열 값을 함께 넣어 두 가지 경우를 모두 확인할 수 있도록 구성했습니다.

mysql> insert into ConditionalNotNullDemo(SendMessage) values(NULL);
Query OK, 1 row affected (0.16 sec)
mysql> insert into ConditionalNotNullDemo(SendMessage) values('Hi');
Query OK, 1 row affected (0.15 sec)
mysql> insert into ConditionalNotNullDemo(SendMessage) values('Hello');
Query OK, 1 row affected (0.20 sec)
mysql> insert into ConditionalNotNullDemo(SendMessage) values(NULL);
Query OK, 1 row affected (0.18 sec)

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from ConditionalNotNullDemo;

실행 결과는 다음과 같습니다.

+----+-------------+
| Id | SendMessage |
+----+-------------+
|  1 | NULL        |
|  2 | Hi          |
|  3 | Hello       |
|  4 | NULL        |
+----+-------------+
4 rows in set (0.00 sec)

이제 IS NULL과 IS NOT NULL 속성의 실제 사용 예제를 살펴보겠습니다.

사례 1: IS NULL로 NULL 값만 조회하기

NULL인 메시지만 필터링하고 싶다면 IS NULL 속성을 사용합니다. 쿼리는 다음과 같습니다.

mysql> select *from ConditionalNotNullDemo where SendMessage IS NULL;

실행 결과:

+----+-------------+
| Id | SendMessage |
+----+-------------+
|  1 | NULL        |
|  4 | NULL        |
+----+-------------+
2 rows in set (0.00 sec)

사례 2: IS NOT NULL로 유효한 값만 조회하기

IS NOT NULL 속성을 사용하면 NULL이 아닌 유효한 메시지만 조회할 수 있습니다. 즉, 실제 값이 들어 있는 행만 출력됩니다. 쿼리는 다음과 같습니다.

mysql> select *from ConditionalNotNullDemo where SendMessage IS NOT NULL;

실행 결과:

+----+-------------+
| Id | SendMessage |
+----+-------------+
|  2 | Hi          |
|  3 | Hello       |
+----+-------------+
2 rows in set (0.03 sec)

정리

NULL은 '값이 없음'을 의미하는 특수한 상태이기 때문에 일반적인 비교 연산자(=, <>)로는 판별할 수 없습니다. 따라서 MySQL에서 NULL 여부를 조건으로 걸 때는 반드시 IS NULL(NULL인 행 조회) 또는 IS NOT NULL(NULL이 아닌 행 조회)을 사용해야 한다는 점을 기억하세요.