MySQLの既存テーブルにデフォルト値を指定した列を追加する方法
ALTER TABLE文でデフォルト値付きの列を追加する
既存のテーブルに新しい列を追加するときは ALTER TABLE 文を使用しますが、このとき DEFAULT 句を組み合わせることで、追加する列にデフォルト値を設定することもできます。
基本構文
ALTER TABLE テーブル名 ADD (列名 データ型 DEFAULT 'デフォルト値');
構文のポイントは以下のとおりです。
- テーブル名: 列を追加したい既存テーブルの名前を指定します。
- 列名・データ型: 新しく追加する列の名前と型(VARCHAR、INT など)を指定します。
- DEFAULT: INSERT時に値が指定されなかった場合に自動的に格納される初期値を指定します。文字列の場合はシングルクォート(')で囲みます。
実行例
次の例では、ALTERコマンドを使用して、「Student」テーブルに「City」というVARCHAR型の列を、デフォルト値「DELHI」と一緒に追加しています。
mysql> ALTER TABLE Student ADD(City VARCHAR(10) DEFAULT 'DELHI'); Query OK, 5 rows affected (0.33 sec) Records: 5 Duplicates: 0 Warnings: 0
DESCRIBEコマンドで設定を確認する
列を追加した後、DESCRIBEコマンドを実行すると、各列の構成を一覧で確認できます。「City」列の Default 欄に「DELHI」と表示されていれば、デフォルト値が正しく設定されています。
mysql> DESCRIBE Student; +---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | RollNO | int(11) | YES | | NULL | | | Name | varchar(20) | YES | | NULL | | | Class | varchar(15) | YES | | NULL | | | Grade | varchar(10) | YES | | NULL | | | Address | varchar(25) | YES | | NULL | | | Phone | int(11) | YES | | NULL | | | Email | varchar(20) | YES | | NULL | | | City | varchar(10) | YES | | DELHI | | +---------+--------------+------+-----+---------+-------+ 8 rows in set (0.04 sec)
補足:DEFAULT句を使うメリット
- INSERT時に特定の列の値を入力し忘れても、自動的に初期値が格納されるため、データの欠損を防げます。
- 登録日時のように共通の初期値を持たせたい列(例:
DEFAULT CURRENT_TIMESTAMP)にも応用できます。 - 既に存在する行に対してもデフォルト値が適用されますが、テーブルの規模によっては処理に時間がかかる場合があるため、本番環境では注意して実行しましょう。
-
MySQLで一時テーブルの列(カラム)を一覧表示する方法
MySQLで一時テーブル(TEMPORARY TABLE)の列を一覧表示するには、まず対象となる一時テーブルを作成しておく必要があります。ここでは例として、学生の詳細情報を格納する複数の列を持つ一時テーブルを作成してみましょう。mysql> CREATE TEMPORARY TABLE DemoTable745 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(100), StudentAge int, StudentAddress varchar(100),
-
MySQLで通貨記号付きの列値を合計する方法
MySQLで通貨記号付きの列値を合計する方法 MySQLでは、「€200.00」のように通貨記号が含まれた文字列データでも、集計関数SUM()とREPLACE()関数を組み合わせることで合計を求めることができます。ここでは、実際にテーブルを作成し、通貨記号付きの価格データを合計する手順を解説します。 1. サンプルテーブルの作成 まず、価格を格納するためのテーブルを作成します。 mysql> create table DemoTable616 (Price varchar(100)); Query OK, 0 rows affected (0.59 sec) 2. レコードの挿入 I