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

MySQL에서 빈 행(공백 및 NULL) 데이터를 삭제하는 방법

MySQL에서 빈 행(blank row)이나 NULL 값을 가진 행을 삭제하려면 DELETE 명령어를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 공백 문자열('')과 NULL 값이 저장된 행을 한 번에 제거하는 방법을 단계별로 살펴보겠습니다.

기본 문법

빈 행과 NULL 행을 함께 삭제하는 기본 문법은 다음과 같습니다.

DELETE FROM yourTableName WHERE yourColumnName = '' OR yourColumnName IS NULL;

위 조건은 컬럼 값이 빈 문자열('')인 경우와 NULL인 경우 모두를 포함하여 삭제합니다. MySQL에서는 빈 문자열과 NULL이 서로 다른 값으로 취급되기 때문에, 두 조건을 OR로 연결해야 완전하게 처리할 수 있습니다.

예제 테이블 생성

개념을 이해하기 위해 먼저 테스트용 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> CREATE TABLE deleteRowDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName varchar(20)
    -> );
Query OK, 0 rows affected (0.57 sec)

Id는 자동 증가(AUTO_INCREMENT)되는 기본 키이며, StudentName에는 학생 이름이 저장됩니다.

테스트 데이터 삽입

INSERT 명령어를 사용해 일부 레코드를 삽입합니다. 의도적으로 빈 문자열과 NULL 값도 함께 넣었습니다.

mysql> INSERT INTO deleteRowDemo(StudentName) VALUES('John');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO deleteRowDemo(StudentName) VALUES('');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO deleteRowDemo(StudentName) VALUES('');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO deleteRowDemo(StudentName) VALUES(NULL);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO deleteRowDemo(StudentName) VALUES('Carol');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO deleteRowDemo(StudentName) VALUES('Bob');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO deleteRowDemo(StudentName) VALUES('');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO deleteRowDemo(StudentName) VALUES('David');
Query OK, 1 row affected (0.35 sec)

현재 데이터 확인

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

mysql> SELECT * FROM deleteRowDemo;

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

+----+-------------+
| Id | StudentName |
+----+-------------+
| 1  | John        |
| 2  |             |
| 3  |             |
| 4  | NULL        |
| 5  | Carol       |
| 6  | Bob         |
| 7  |             |
| 8  | David       |
+----+-------------+
8 rows in set (0.00 sec)

출력 결과를 보면 Id가 2, 3, 7인 행은 빈 문자열('')이고, Id가 4인 행은 NULL 값이 저장되어 있는 것을 확인할 수 있습니다.

빈 행 및 NULL 행 삭제 실행

이제 빈 문자열 행과 NULL 행을 모두 삭제하는 쿼리를 실행합니다.

mysql> DELETE FROM deleteRowDemo WHERE StudentName='' OR StudentName IS NULL;
Query OK, 4 rows affected (0.18 sec)

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

삭제 후 결과 확인

다시 SELECT 문으로 테이블을 조회하여 결과를 확인해 보겠습니다.

mysql> SELECT * FROM deleteRowDemo;

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

+----+-------------+
| Id | StudentName |
+----+-------------+
| 1  | John        |
| 5  | Carol       |
| 6  | Bob         |
| 8  | David       |
+----+-------------+
4 rows in set (0.00 sec)

빈 문자열과 NULL 값을 가진 행들이 모두 제거되고, 유효한 이름이 있는 행만 남아있는 것을 확인할 수 있습니다.

정리

MySQL에서 빈 행을 삭제할 때 핵심은 = ''(빈 문자열 조건)와 IS NULL(NULL 조건)을 OR 연산자로 함께 사용하는 것입니다. 두 조건 중 하나만 사용하면 나머지 유형의 빈 데이터가 그대로 남게 되므로 주의해야 합니다.