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

MySQL에서 열의 NULL 레코드를 제거하는 쿼리 작성법

MySQL에서 특정 열에 저장된 NULL 레코드를 제거하려면 DELETE 명령어와 IS NULL 조건을 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.

DELETE FROM yourTableName WHERE yourColumnName IS NULL;

IS NULL 연산자는 해당 열의 값이 NULL인 행만 정확히 찾아내는 역할을 합니다. 주의할 점은 = NULL이 아닌 반드시 IS NULL을 사용해야 한다는 것입니다. NULL은 값 자체가 아니라 '값이 없음'을 의미하기 때문에 일반적인 비교 연산자로는 판별할 수 없습니다.

예제 테이블 생성하기

먼저 실습용 테이블을 생성해 보겠습니다.

mysql> create table removeNullRecordsDemo
    -> (
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.50 sec)

테이블에 데이터 삽입하기

다음은 INSERT 명령을 사용해 이름 데이터와 함께 의도적으로 NULL 값을 여러 개 삽입하는 쿼리입니다.

mysql> insert into removeNullRecordsDemo values('John');
Query OK, 1 row affected (0.14 sec)

mysql> insert into removeNullRecordsDemo values(null);
Query OK, 1 row affected (0.15 sec)

mysql> insert into removeNullRecordsDemo values('Larry');
Query OK, 1 row affected (0.19 sec)

mysql> insert into removeNullRecordsDemo values('Bob');
Query OK, 1 row affected (0.12 sec)

mysql> insert into removeNullRecordsDemo values(null);
Query OK, 1 row affected (0.13 sec)

mysql> insert into removeNullRecordsDemo values('David');
Query OK, 1 row affected (0.18 sec)

mysql> insert into removeNullRecordsDemo values(null);
Query OK, 1 row affected (0.22 sec)

전체 레코드 조회하기

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

mysql> select *from removeNullRecordsDemo;

실행 결과는 다음과 같습니다. 총 7개의 행 중 3개가 NULL임을 확인할 수 있습니다.

+-------+
| Name  |
+-------+
| John  |
| NULL  |
| Larry |
| Bob   |
| NULL  |
| David |
| NULL  |
+-------+
7 rows in set (0.00 sec)

NULL 레코드 삭제하기

이제 DELETE 명령과 IS NULL 조건을 사용해 Name 열의 NULL 레코드를 모두 제거해 보겠습니다.

mysql> delete from removeNullRecordsDemo where Name IS NULL;
Query OK, 3 rows affected (0.16 sec)

총 3개의 NULL 행이 성공적으로 삭제되었습니다.

삭제 결과 확인하기

다시 전체 레코드를 조회하여 NULL이 제거되었는지 확인해 보겠습니다.

mysql> select * from removeNullRecordsDemo;

실행 결과 NULL을 제외한 유효한 레코드만 남아 있는 것을 볼 수 있습니다.

+-------+
| Name  |
+-------+
| John  |
| Larry |
| Bob   |
| David |
+-------+
4 rows in set (0.00 sec)

마무리 및 참고 사항

이처럼 DELETE FROM 테이블명 WHERE 열명 IS NULL; 구문 하나로 NULL 레코드를 손쉽게 정리할 수 있습니다. 대량의 데이터를 다룰 때는 삭제 전 SELECT COUNT(*)로 해당 조건의 행 수를 미리 확인하고, 필요하다면 트랜잭션(START TRANSACTION, COMMIT, ROLLBACK)을 활용해 안전하게 작업하는 것이 좋습니다. 또한 애초에 NOT NULL 제약조건을 설정해 두면 NULL 값의 입력 자체를 방지할 수 있으므로, 테이블 설계 단계에서 이를 고려하는 것도 좋은 방법입니다.