네, MySQL에는 NOT EQUAL(같지 않음) 연산자가 존재하며, <> 연산자 형태로 사용할 수 있습니다. 참고로 != 연산자도 동일한 기능을 수행합니다.
NOT EQUAL 기본 문법
SELECT * FROM yourTableName WHERE yourColumnName <> yourValue;
예제 테이블 생성하기
위 문법을 실제로 이해하기 위해 예제 테이블을 먼저 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table DoesNotEqualDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(20),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.98 sec)데이터 삽입하기
INSERT 명령을 사용하여 테이블에 여러 레코드를 삽입합니다. 이때 NULL 값과 빈 문자열('')도 함께 넣어 NOT EQUAL 연산의 특성을 확인해 보겠습니다.
mysql> insert into DoesNotEqualDemo(Name) values(NULL);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DoesNotEqualDemo(Name) values('John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DoesNotEqualDemo(Name) values('Carol');
Query OK, 1 row affected (0.43 sec)
mysql> insert into DoesNotEqualDemo(Name) values('Bob');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DoesNotEqualDemo(Name) values('');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DoesNotEqualDemo(Name) values('Larry');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DoesNotEqualDemo(Name) values(NULL);
Query OK, 1 row affected (0.10 sec)전체 레코드 조회하기
SELECT 문을 사용하여 테이블의 모든 레코드를 출력합니다.
mysql> select *from DoesNotEqualDemo;
실행 결과는 다음과 같습니다.
+----+-------+ | Id | Name | +----+-------+ | 1 | NULL | | 2 | John | | 3 | Carol | | 4 | Bob | | 5 | | | 6 | Larry | | 7 | NULL | +----+-------+ 7 rows in set (0.00 sec)
NULL과 빈 문자열 제외하고 조회하기
다음은 Name 값이 NULL도 아니고 빈 문자열도 아닌 모든 레코드를 조회하는 쿼리입니다.
mysql> select *from DoesNotEqualDemo where Name <> 'NULL' and Name <> '';
실행 결과는 다음과 같습니다.
+----+-------+ | Id | Name | +----+-------+ | 2 | John | | 3 | Carol | | 4 | Bob | | 6 | Larry | +----+-------+ 4 rows in set (0.00 sec)
주의 사항: NULL 비교 시 IS NOT NULL 사용
위 예제에서 주목할 점은 SQL에서 NULL은 일반적인 비교 연산자(<>, !=)로 비교할 수 없다는 것입니다. NULL과의 비교는 항상 UNKNOWN을 반환하기 때문에, 실무에서는 다음과 같이 작성하는 것이 더 정확하고 권장되는 방식입니다.
mysql> select *from DoesNotEqualDemo
-> where Name IS NOT NULL and Name <> '';결과는 위와 동일하게 John, Carol, Bob, Larry 4개의 행이 출력됩니다. 따라서 NULL 값을 제외할 때는 반드시 IS NOT NULL을 함께 사용하는 것이 안전합니다.