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

MySQL에서 NULL 값 조회 시 비교 연산자(=)를 사용할 수 없는 이유와 IS NULL 연산자 활용법

NULL 조회에 비교 연산자(=)를 사용할 수 없는 이유

MySQL에서 =(비교 연산자)를 사용해 NULL 값을 조회할 수 없는 이유는, NULL은 값(value)이 아니기 때문입니다. NULL은 '값이 존재하지 않음' 또는 '알 수 없음'을 의미하는 특수한 상태일 뿐, 실제 데이터 값이 아닙니다. 따라서 일반적인 값 비교 방식으로는 NULL과 비교할 수 없습니다.

테이블에서 NULL이 포함된 행을 가져오려면 반드시 IS NULL 연산자를 사용해야 합니다. 아래 예제는 'employee' 테이블의 데이터를 통해 이를 보여줍니다.

예제: IS NULL 연산자 사용

mysql> Select * from Employee WHERE Salary IS NULL;

+----+-------+--------+
| ID | Name  | Salary |
+----+-------+--------+
| 7  | Aryan | NULL   |
| 8  | Vinay | NULL   |
+----+-------+--------+

2 rows in set (0.00 sec)

위 쿼리는 IS NULL 연산자를 사용하여 Salary 열이 NULL인 행들을 정상적으로 반환합니다.

예제: 비교 연산자(=) 사용 시 문제점

mysql> Select * from employee where salary = NULL;
Empty set (0.00 sec)

반면 위 쿼리는 = 비교 연산자를 사용했기 때문에 결과가 없는 빈 집합(Empty set)을 반환합니다. 그 이유는 앞서 설명했듯이 NULL은 값이 아니므로 등호(=)로 비교할 수 없기 때문입니다.

정리

NULL 여부를 확인할 때는 다음 규칙을 기억하세요:

  • IS NULL: 값이 NULL인 행을 조회할 때 사용
  • IS NOT NULL: 값이 NULL이 아닌 행을 조회할 때 사용
  • = NULL 또는 != NULL: 항상 빈 결과를 반환하므로 절대 사용 금지