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

MySQL에서 NULL 및 NOT NULL 레코드 조회 시 특정 값 하나만 제외하는 방법

MySQL에서 NULL 레코드를 조회하려면 IS NULL을 사용하고, 특정 값을 제외하려면 != 연산자를 사용하면 됩니다. !=<> 연산자의 별칭(alias)으로, 두 연산자는 완전히 동일하게 동작합니다.

테이블 생성하기

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    PlayerName varchar(40)
);
Query OK, 0 rows affected (0.50 sec)

데이터 삽입하기

INSERT 명령을 사용하여 테이블에 여러 레코드를 삽입합니다. 이때 의도적으로 NULL 값도 함께 넣어 두겠습니다.

mysql> insert into DemoTable(PlayerName) values('Adam');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(PlayerName) values(NULL);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(PlayerName) values('Sam');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(PlayerName) values('Mike');
Query OK, 1 row affected (0.08 sec)

전체 레코드 확인하기

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

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----+------------+
| Id | PlayerName |
+----+------------+
|  1 | Adam       |
|  2 | NULL       |
|  3 | Sam        |
|  4 | Mike       |
+----+------------+
4 rows in set (0.00 sec)

특정 값 하나를 제외한 NULL 및 NOT NULL 레코드 조회하기

'Sam'이라는 단일 레코드는 제외하면서 나머지 NULL 및 NOT NULL 레코드를 모두 표시하는 쿼리는 다음과 같습니다.

mysql> select *from DemoTable
    where PlayerName!='Sam'
    or PlayerName IS NULL;

실행 결과는 아래와 같습니다.

+----+------------+
| Id | PlayerName |
+----+------------+
|  1 | Adam       |
|  2 | NULL       |
|  4 | Mike       |
+----+------------+
3 rows in set (0.00 sec)

핵심 포인트 정리

여기서 주목할 점은 WHERE 조건에 OR PlayerName IS NULL을 반드시 함께 작성해야 한다는 것입니다. SQL에서 NULL은 비교 연산자(=, !=)로 비교할 수 없기 때문에, PlayerName != 'Sam' 조건만 사용하면 NULL인 행은 결과에서 자동으로 제외됩니다. 따라서 NULL 레코드까지 포함하여 조회하려면 IS NULL 조건을 OR로 결합해 주어야 원하는 결과를 얻을 수 있습니다.