MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで空白行やNULLの行を削除する方法【DELETE文の使い方】

MySQLでテーブル内の空白行を削除したい場合は、DELETEコマンドを使用します。この記事では、空白(空文字列)の行だけでなく、NULLが格納された行もまとめて削除する方法を、実際のSQL例とともにわかりやすく解説します。

基本構文

空白行およびNULL行を削除するための基本構文は以下の通りです。

delete from yourTableName where yourColumnName='' OR yourColumnName IS NULL;

上記の構文では、yourColumnNameが空文字列('')である行と、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カラムと、生徒名を格納する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が格納されています。これら4行が削除対象となります。

空白行とNULL行を削除する

ここで、冒頭で紹介した構文を使って、空白行とNULL行をまとめて削除します。

mysql> delete from deleteRowDemo where StudentName='' OR StudentName IS NULL;
Query OK, 4 rows affected (0.18 sec)

「4 rows affected」と表示されており、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で空白行を削除する際は、DELETE文のWHERE句で「カラム名 = ''」と「カラム名 IS NULL」をOR条件で組み合わせるのが基本です。NULLの判定には= NULLではなくIS NULLを使う必要がある点に注意してください。この方法を覚えておけば、データクレンジングやメンテナンス作業がスムーズに行えます。

  1. Excelで空白行を削除する3つの方法|マクロ不要で誰でもできる簡単テクニック

    Excelを使っていると、データの中に空白行が混ざってしまうことはよくあります。どんな種類のデータを扱っていても、ファイルのあちこちに空白行が散在しているケースは少なくありません。 行数が数千行に及ぶ場合、空白行を手作業で一つずつ削除するのは非常に手間がかかり、事実上不可能と言えます。ネット上でよく紹介されている対処法はExcelマクロを使うものですが、マクロに慣れていない人にとってはハードルが高く、うまく動作しない場合に自分のファイルに合わせてコードを修正するのも容易ではありません。 この記事では、マクロを使わずにExcelの空白行を削除できる複数の方法と、それぞれのメリット・デメリットを詳

  2. Excelで空白行を削除する6つの方法|手動からVBAまで徹底解説

    大きなスプレッドシートを扱っていると、見やすさや理解しやすさのために、意図的に空白行を挿入することがよくあります。多くの人にとって空白行は便利なものですが、人によっては作業の妨げになり、非常に煩わしく感じることもあるでしょう。また、Excelソフトの不具合によって空白行が生成されるケースもあります。さらに、Excelファイルの転送時や社内データベースからのデータエクスポート時などにも空白行が発生することがあります。この記事では、Excelで空白行を削除するためのさまざまな方法を、初心者の方にもわかりやすく解説します。方法1:空白行を手動で選択して削除する最もシンプルな方法は、空白行を手動で選択