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

MySQLのカラム(フィールド)をデフォルト値にリセットする方法

MySQLでは、カラム(フィールド)の値をデフォルト値に戻したい場面がよくあります。その方法は大きく分けて2つあり、ひとつは「DEFAULT」キーワードを使う方法、もうひとつは「DEFAULT()」関数を使う方法です。本記事では、それぞれの構文と具体的な使用例をわかりやすく解説します。

デフォルト値へのリセット方法は2種類

方法1:DEFAULTキーワードを使う

最もシンプルな書き方は、SET句でDEFAULTキーワードを指定する方法です。基本構文は以下のとおりです。

UPDATE yourTableName SET yourColumnName = DEFAULT WHERE yourCondition;

方法2:DEFAULT()関数を使う

DEFAULT()関数は、引数に指定したカラムのデフォルト値を返します。こちらの構文は以下のとおりです。

UPDATE yourTableName SET yourColumnName = DEFAULT(yourColumnName) WHERE yourCondition;

どちらの方法でも結果は同じですが、DEFAULT()関数の方はカラム名を明示的に書くため、コードの意図が伝わりやすいというメリットがあります。

検証用テーブルの準備

それでは、実際の動きを確認してみましょう。まずはサンプルテーブルを作成します。

テーブルの作成

mysql> create table Default_Demo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> Name varchar(20),
    -> Age int,
    -> Salary float,
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.73 sec)

なお、AgeカラムとSalaryカラムには明示的なデフォルト値を設定していないため、この場合のデフォルト値はNULLになります。

レコードの挿入

次に、INSERT文でいくつかデータを追加します。

mysql> insert into Default_Demo(Name,Age,Salary) values('John',23,405.56);
Query OK, 1 row affected (0.18 sec)
mysql> insert into Default_Demo(Name,Age,Salary) values('Carol',25,1000.98);
Query OK, 1 row affected (0.22 sec)
mysql> insert into Default_Demo(Name,Age,Salary) values('Larry',21,987.24);
Query OK, 1 row affected (0.09 sec)
mysql> insert into Default_Demo(Name,Age,Salary) values('Sam',24,986.10);
Query OK, 1 row affected (0.17 sec)
mysql> insert into Default_Demo(Name,Age,Salary) values('Mike',22,10000.50);
Query OK, 1 row affected (0.17 sec)
mysql> insert into Default_Demo(Name,Age,Salary) values('David',26,100.45);
Query OK, 1 row affected (0.20 sec)

登録内容の確認

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

mysql> select *from Default_Demo;

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

+----+-------+------+---------+
| Id | Name  | Age  | Salary  |
+----+-------+------+---------+
|  1 | John  |   23 | 405.56  |
|  2 | Carol |   25 | 1000.98 |
|  3 | Larry |   21 | 987.24  |
|  4 | Sam   |   24 | 986.1   |
|  5 | Mike  |   22 | 10000.5 |
|  6 | David |   26 | 100.45  |
+----+-------+------+---------+
6 rows in set (0.00 sec)

ケース1:DEFAULTキーワードでAgeカラムをリセットする

まずはDEFAULTキーワードを使い、Id=6のレコードのAgeカラムをデフォルト値に戻します。

mysql> update Default_Demo set Age=Default where Id=6;
Query OK, 1 row affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0

更新後、テーブルの内容を確認してみましょう。

mysql> select *from Default_Demo;

実行結果:

+----+-------+------+---------+
| Id | Name  | Age  | Salary  |
+----+-------+------+---------+
|  1 | John  |   23 | 405.56  |
|  2 | Carol |   25 | 1000.98 |
|  3 | Larry |   21 | 987.24  |
|  4 | Sam   |   24 | 986.1   |
|  5 | Mike  |   22 | 10000.5 |
|  6 | David | NULL | 100.45  |
+----+-------+------+---------+
6 rows in set (0.00 sec)

Id=6のレコードを見ると、Ageカラムがデフォルト値であるNULLに更新されていることがわかります。

ケース2:DEFAULT()関数でSalaryカラムをリセットする

続いて、DEFAULT()関数を使ってId=6のレコードのSalaryカラムをデフォルト値にリセットします。

mysql> update Default_Demo set Salary=Default(Salary) where Id=6;
Query OK, 1 row affected (0.21 sec)
Rows matched: 1 Changed: 1 Warnings: 0

Id=6のレコードを抽出して確認します。

mysql> select *from Default_Demo where Id=6;

実行結果:

+----+-------+------+--------+
| Id | Name  | Age  | Salary |
+----+-------+------+--------+
|  6 | David | NULL | NULL   |
+----+-------+------+--------+
1 row in set (0.00 sec)

Salaryカラムもデフォルト値のNULLに正常に更新されました。

まとめ

MySQLでカラムをデフォルト値にリセットするには、「DEFAULTキーワード」と「DEFAULT()関数」の2つの方法が使えます。どちらもUPDATE文のSET句で指定するだけで簡単に実行でき、明示的にデフォルト値が定義されていないカラムの場合はNULLが適用されます。特定のユーザーの設定値を初期状態に戻したい場合などに活用できる便利な機能なので、ぜひ覚えておきましょう。

  1. MySQLで列(カラム)の値を置き換える方法|UPDATE文の使い方を解説

    MySQLでテーブルの特定の列(カラム)の値を置き換えたい場合には、UPDATE文を使用します。WHERE句で対象のレコードを指定することで、該当する行だけを安全に更新できます。この記事では、実際のSQLサンプルを使いながら、列の値を置き換える手順を順番に解説していきます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score int ); Query

  2. MySQLでフィールド値に含まれるカンマの数をカウントする方法

    MySQLでフィールド値に含まれるカンマの数をカウントする方法カンマ区切りで保存されたデータから、カンマがいくつ含まれているかを調べたいケースは意外と多くあります。MySQLではLENGTH()関数とREPLACE()関数を組み合わせることで、シンプルなクエリひとつでカンマの個数をカウントできます。基本構文以下がカンマをカウントするための基本構文です。select length(対象カラム名) - length(replace(対象カラム名, ,, )) as エイリアス名 from テーブル名;このクエリの仕組みは非常にシンプルです。元の文字列の長さから、カンマをすべて削除した文字列の長さを