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

MySQLでNULLのフィールドを特定の値に一括更新する方法(IS NULL句の使い方)

はじめに

MySQLでは、IS NULL演算子とUPDATE文を組み合わせることで、NULLになっているフィールドだけを特定の値で効率的に更新できます。NULLは「=」や「!=」では比較できないため、必ずIS NULLを使う点がポイントです。

この記事では、実際のサンプルコードを使いながら、NULLのレコードだけを別の値で更新する手順をわかりやすく解説します。

1. テーブルを作成する

まず、テスト用のテーブルを作成しましょう。ここでは学生のスコアを格納する StudentScore カラムを持つテーブルを作成します。

mysql> create table DemoTable
(
    StudentScore int
);
Query OK, 0 rows affected (0.47 sec)

2. サンプルデータを挿入する

次に、INSERT文を使って数件のレコードを追加します。意図的にNULLのデータも混ぜて挿入します。

mysql> insert into DemoTable values(89);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(NULL);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(45);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(NULL);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(56);
Query OK, 1 row affected (0.14 sec)

3. 挿入したデータを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+--------------+
| StudentScore |
+--------------+
|           89 |
|         NULL |
|           45 |
|         NULL |
|           56 |
+--------------+
5 rows in set (0.00 sec)

このように、5件のうち2件がNULLになっていることが確認できます。

4. NULLのレコードだけを更新する

ここからが本題です。WHERE句にIS NULLを指定することで、NULLの行だけを対象にUPDATEを実行できます。以下の例では、NULLのスコアを「30」に更新しています。

mysql> update DemoTable set StudentScore=30 where StudentScore IS NULL;
Query OK, 2 rows affected (0.34 sec)
Rows matched: 2 Changed: 2 Warnings: 0

「Rows matched: 2 Changed: 2」と表示されているように、2件のNULLレコードが正しく更新されました。

5. 更新後のデータを確認する

もう一度SELECT文を実行して、結果を確認してみましょう。

mysql> select *from DemoTable;

実行結果:

+--------------+
| StudentScore |
+--------------+
|           89 |
|           30 |
|           45 |
|           30 |
|           56 |
+--------------+
5 rows in set (0.00 sec)

元々NULLだった2件のレコードが「30」に置き換わり、それ以外の値(89・45・56)はそのまま維持されていることがわかります。

まとめ

MySQLでNULLのフィールドを特定の値に更新したい場合は、以下の構文を使用します。

UPDATE テーブル名 SET カラム名 = 値 WHERE カラム名 IS NULL;
  • = NULL ではなく IS NULL を使うこと(NULLは等価比較できないため)
  • 逆にNULL以外を対象にする場合は IS NOT NULL を使用する
  • 条件を指定せずにUPDATEを実行すると全レコードが更新されるため、WHERE句の書き忘れに注意

IS NULLを活用すれば、欠損値の補完や初期値の一括設定なども安全かつ簡単に行えます。

  1. JavaでMySQLデータベースのレコードを更新する方法【UPDATE文の使い方を実例で解説】

    MySQLデータベースのテーブルに格納されたデータを更新するには、UPDATEコマンドを使用します。本記事では、UPDATE文の基本構文から、実際にテーブルを作成し、Java(JDBC)経由でレコードを更新するまでの一連の手順を、サンプルコード付きで詳しく解説します。 UPDATE文の基本構文 MySQLで既存のデータを更新する場合、以下の構文を使用します。 update テーブル名 set カラム名1 = 値1, ....N where 条件; where句で条件を指定しないと、テーブル内のすべてのレコードが更新されてしまうため注意が必要です。 ステップ1:テーブルの作成 まずは更新用のサン

  2. MySQLでGROUP BYのように特定の1行だけ更新する方法|ORDER BYとLIMITを活用したUPDATE文の書き方

    MySQLでは、UPDATE文の中でGROUP BYを直接使用することができません。しかし、「同じ値を持つ複数のレコードの中から、最初の1行だけを更新したい」というケースは実際の開発でよく発生します。 そんなときに役立つのが、ORDER BYとLIMITを組み合わせたUPDATE文です。この記事では、サンプルテーブルを使いながら、その具体的な手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、従業員情報を格納するテーブル「DemoTable2018」を作成します。テーブルには、自動採番される主キー「EmployeeId」、従業員名「EmployeeName」、給与「Emp