MySQLで行の値をデフォルト値(DEFAULT)に戻す方法をわかりやすく解説
はじめに
MySQLでは、UPDATE文のSET句に「DEFAULT」キーワードを指定するだけで、行の値をその列に設定されたデフォルト値へ簡単に戻すことができます。本記事では、サンプルテーブルを作成し、実際にデータを操作しながら、具体的な手順を順番に解説していきます。
デモ用テーブルを作成する
まず、動作確認のためのサンプルテーブル「defaultDemo」を作成しましょう。
mysql> create table defaultDemo
-> (
-> Id int
-> );
Query OK, 0 rows affected (0.48 sec)
テーブルにレコードを挿入する
続いて、INSERTコマンドを使ってテーブルにデータを追加していきます。
mysql> insert into defaultDemo values(10);
Query OK, 1 row affected (0.25 sec)
mysql> insert into defaultDemo values(20);
Query OK, 1 row affected (0.13 sec)
mysql> insert into defaultDemo values(30);
Query OK, 1 row affected (0.14 sec)
mysql> insert into defaultDemo values(40);
Query OK, 1 row affected (0.11 sec)
mysql> insert into defaultDemo values(80);
Query OK, 1 row affected (0.18 sec)
mysql> insert into defaultDemo values(90);
Query OK, 1 row affected (0.14 sec)
mysql> insert into defaultDemo values(100);
Query OK, 1 row affected (0.10 sec)
登録済みのレコードを確認する
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from defaultDemo;
実行結果は以下の通りです。
+------+
| Id |
+------+
| 10 |
| 20 |
| 30 |
| 40 |
| 80 |
| 90 |
| 100 |
+------+
7 rows in set (0.00 sec)
DEFAULTキーワードで行をデフォルト値に戻す
ここからが本題です。「UPDATE テーブル名 SET 列名 = default」という形式で記述すると、該当する行の値をデフォルト値にリセットできます。
以下のクエリでは、Idが45より大きい行だけをデフォルト値に更新しています。
mysql> update defaultDemo set Id=default where Id > 45;
Query OK, 3 rows affected (0.39 sec)
Rows matched: 3 Changed: 3 Warnings: 0
なお、今回作成したId列には明示的なデフォルト値が設定されていないため、戻り先はNULLになります。特定の値をデフォルトとして設定したい場合は、テーブル作成時に「Id int DEFAULT 0」のようにDEFAULT句を指定しておきましょう。
更新結果を確認する
もう一度SELECT文を実行して、テーブルの内容をチェックします。
mysql> select *from defaultDemo;
実行結果は以下の通りです。
+------+
| Id |
+------+
| 10 |
| 20 |
| 30 |
| 40 |
| NULL |
| NULL |
| NULL |
+------+
7 rows in set (0.00 sec)
このように、Idが45より大きかった3行(80・90・100)がNULL(デフォルト値)に更新されていることが確認できます。
まとめ
MySQLでは、UPDATE文とDEFAULTキーワードを組み合わせることで、行の値を列のデフォルト値に簡単に戻せます。WHERE句と組み合わせれば、条件に一致する行だけを選択的にリセットすることも可能です。ただし、デフォルト値が明示されていない列の場合はNULLがセットされる点に注意してください。
-
MySQLで行を列の値ごとに配列形式でグループ化する方法
MySQLで行を配列のようにグループ化したい場合は、GROUP_CONCAT() 関数と ORDER BY 句を組み合わせて使用します。この記事では、実際にテーブルを作成し、データを挿入してから、列の値ごとに行をまとめるクエリを実行する手順を具体的に解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable -> ( -> Id int, -> FirstName varchar(20) -> );Query OK, 0 rows affected (0.7
-
MySQLで列の値の先頭に000(ゼロ埋め)を追加する方法
MySQLで列の値に000(ゼロ)を追加するには?MySQLで数値の先頭に「000」のようなゼロを追加して表示したい場合は、ZEROFILL属性を使用します。ZEROFILLを指定した列では、設定された表示幅に満たない桁数が自動的に0で埋められます。まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable1913 ( Code int(4) ZEROFILL AUTO_INCREMENT NOT NULL, PRIMARY KEY(Code) ); Query OK, 0 rows affected (0.00