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

MySQLテーブルのNULL列に値を設定・更新する方法

MySQLでNULL列に値を設定するには?

MySQLのテーブルに含まれるNULL(空)の列に後から値を設定したい場合は、IS NULL 条件とUPDATE文を組み合わせることで実現できます。この記事では、実際のサンプルコードを使いながら、NULL列へ値を入力する手順をわかりやすく解説します。

1. サンプルテーブルを作成する

まずは商品価格(ProductPrice)、数量(ProductQuantity)、合計金額(TotalAmount)を持つテーブルを作成しましょう。

mysql> create table DemoTable
(
    ProductPrice int,
    ProductQuantity int,
    TotalAmount int
);
Query OK, 0 rows affected (1.22 sec)

2. テーブルにレコードを挿入する

次に、INSERT文を使ってレコードを挿入します。ここでは意図的に TotalAmount 列を指定せず、NULLのまま登録している点に注目してください。

mysql> insert into DemoTable(ProductPrice,ProductQuantity) values(100,2);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(ProductPrice,ProductQuantity) values(500,4);
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(ProductPrice,ProductQuantity) values(1000,10);
Query OK, 1 row affected (0.21 sec)

3. 現在のデータを確認する

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

mysql> select *from DemoTable;

実行結果は以下の通りです。TotalAmount 列がすべて NULL になっています。

+--------------+-----------------+-------------+
| ProductPrice | ProductQuantity | TotalAmount |
+--------------+-----------------+-------------+
|          100 |               2 |        NULL |
|          500 |               4 |        NULL |
|         1000 |              10 |        NULL |
+--------------+-----------------+-------------+
3 rows in set (0.00 sec)

4. IS NULL を使ってNULL列を更新する

いよいよNULL列に値を設定します。WHERE句で TotalAmount IS NULL と条件を指定し、該当する行のみに対して「単価 × 数量」の計算結果を代入するのがポイントです。

mysql> update DemoTable set TotalAmount=(ProductPrice*ProductQuantity) where
TotalAmount IS NULL;
Query OK, 3 rows affected (0.20 sec)
Rows matched: 3 Changed: 3 Warnings: 0

5. 更新結果を確認する

もう一度テーブルの中身を確認してみましょう。

mysql> select *from DemoTable;

実行結果を見ると、NULLだった TotalAmount 列に正しく計算結果が設定されていることがわかります。

+--------------+-----------------+-------------+
| ProductPrice | ProductQuantity | TotalAmount |
+--------------+-----------------+-------------+
|          100 |               2 |         200 |
|          500 |               4 |        2000 |
|         1000 |              10 |       10000 |
+--------------+-----------------+-------------+
3 rows in set (0.00 sec)

まとめ

NULL列に値を設定する際の基本構文は以下の通りです。

UPDATE テーブル名 SET 列名 = 値 WHERE 列名 IS NULL;

= NULL ではなく必ず IS NULL を使う点が重要です。MySQLでは NULL は比較演算子での等価判定ができないため、= NULL と書いても条件に一致しません。IS NULL 条件を活用すれば、既存データの補完や一括更新も安全かつ効率的に行えます。

  1. MySQLでカスタム列に複数の値を設定する方法|UNION ALLの使い方を実例で解説

    はじめにMySQLでカスタム列(計算結果を出力する列)に複数の値を持たせたい場合、UNION ALLを利用すると簡単に実現できます。本記事では、実際にテーブルを作成し、UNION ALLを使って1つの列から複数の計算結果を取得する手順を、サンプルコードと実行結果あわせて詳しく解説します。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1987 ( UserValue int ); Query OK, 0 rows affected (2.90 sec)レコードの挿入INSERT文を使って、

  2. MySQLで列にENUM型を設定する方法

    ```html MySQLでは、テーブルを作成する際に、あらかじめ決められた文字列のリストから値を選ばせたい列に対してENUM型を設定できます。ENUMは、指定した候補値以外のデータが登録されるのを防ぎたい場合に便利なデータ型です。ここでは、実際にテーブルを作成しながら基本的な使い方を見ていきましょう。ENUM型を含むテーブルを作成するまず、学生の点数と合否ステータスを管理するテーブルを作成します。「StudentStatus」列には「First」「Second」「Fail」の3つの値のみを許可するENUM型を設定しています。mysql> create table DemoTable20