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

MySQLでテーブルのカラムのデフォルト値を変更する方法|CHANGE句の使い方を解説

MySQLでカラムのデフォルト値を変更するには?

MySQLテーブルのカラムに設定されたデフォルト値を変更するには、ALTER TABLE文のCHANGE句を使用します。基本構文は以下の通りです。

ALTER TABLE テーブル名 CHANGE カラム名 カラム名 データ型 NOT NULL DEFAULT デフォルト値;

CHANGE句では、既存のカラム名と新しいカラム名の両方を指定する必要があります。カラム名を変更しない場合は、同じカラム名を2回記述します。

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

実際の動作を確認するため、まずはサンプル用のテーブルを作成しましょう。以下がそのクエリです。

mysql> create table DefaultDemo
    -> (
    -> ArrivalTime timestamp
    -> );
Query OK, 0 rows affected (0.65 sec)

現在のテーブル構造を確認する

DESCコマンドでテーブル構造を確認できます。

mysql> desc DefaultDemo;

実行結果は以下の通りです。現時点ではデフォルト値がNULLに設定されていることがわかります。

+-------------+-----------+------+-----+---------+-------+
| Field       | Type      | Null | Key | Default | Extra |
+-------------+-----------+------+-----+---------+-------+
| ArrivalTime | timestamp | YES  |     | NULL    |       |
+-------------+-----------+------+-----+---------+-------+
1 row in set (0.11 sec)

デフォルト値をCURRENT_TIMESTAMPに変更する

次に、デフォルト値として現在の日時を表すCURRENT_TIMESTAMPを設定するよう、カラム定義を変更します。

mysql> ALTER TABLE DefaultDemo CHANGE ArrivalTime ArrivalTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
Query OK, 0 rows affected (1.71 sec)
Records: 0 Duplicates: 0 Warnings: 0

デフォルト値の動作を確認する

INSERT文で値を指定せずにレコードを挿入し、デフォルト値が正しく適用されるかをチェックします。

mysql> insert into DefaultDemo values();
Query OK, 1 row affected (0.15 sec)

登録されたデータを表示してみましょう。

mysql> select * from DefaultDemo;

実行結果は以下の通りです。値を明示的に指定しなくても、挿入時点の日時が自動的に記録されていることが確認できます。

+---------------------+
| ArrivalTime         |
+---------------------+
| 2018-12-07 11:31:00 |
+---------------------+
1 row in set (0.00 sec)

補足:MODIFY句との違い

MySQLでは、MODIFY句を使っても同様にカラム定義を変更できます。CHANGE句はカラム名の変更も可能である一方、MODIFY句はカラム名を変えずに定義だけを変更する場合に便利です。

ALTER TABLE DefaultDemo MODIFY ArrivalTime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

また、リテラル値(固定値)へデフォルト値を変更するだけであれば、ALTER TABLE ... ALTER COLUMN ... SET DEFAULT 値という簡潔な構文も利用できます。用途に応じて使い分けるとよいでしょう。

  1. MySQLで列(カラム)を分割する方法!SUBSTRING_INDEX関数の使い方を徹底解説

    MySQLで列を分割するには?SUBSTRING_INDEX関数の基本MySQLで1つの列に格納された文字列を区切り文字で分割したい場合、SUBSTRING_INDEX()関数を使用します。この記事では、アンダースコア(_)で区切られた氏名データを分割する具体例を通じて、その使い方をわかりやすく解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(40) -> );Query OK, 0 rows affected (1.

  2. PythonでMySQLのテーブルに新しい列(カラム)を追加する方法

    既存のテーブルに後から新しい列を追加したい場面は少なくありません。例えば、「Students(学生)」というテーブルに「Name(名前)」「Age(年齢)」「Roll no(出席番号)」といった列があるとします。ここに、新しく「Address(住所)」という列を追加したい場合、どうすればよいのでしょうか。このようなときに活躍するのがALTERコマンドです。ALTERコマンドは、データベース内の列を変更・削除・更新するためのコマンドで、ADD句と組み合わせることで、テーブルに新しい列を追加することもできます。構文ALTER TABLE table_name ADD new_column_name