MySQLで既存のテーブルの新しいカラムにデータを挿入する方法
MySQLで既存のテーブルの新しいカラムにデータを挿入する方法
MySQLでは、ALTER TABLE文で既存のテーブルに新しいカラム(列)を追加し、その後UPDATE文を使うことで、追加したカラムにデータを挿入できます。本記事では、具体的な手順を実行例とともにわかりやすく解説します。
ステップ1:テーブルを作成する
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(100)
);
Query OK, 0 rows affected (0.47 sec)
AUTO_INCREMENTを指定しているため、Idカラムには自動的に連番が採番されます。
ステップ2:レコードを挿入する
INSERT文を使って、テーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Name) values('Bob');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Name) values('Adam');
Query OK, 1 row affected (0.28 sec)ステップ3:登録内容を確認する
SELECT文ですべてのレコードを表示し、正しく登録されているか確認します。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+----+------+
| Id | Name |
+----+------+
| 1 | John |
| 2 | Bob |
| 3 | Adam |
+----+------+
3 rows in set (0.00 sec)
ステップ4:新しいカラムを追加する
次に、ALTER TABLE ... ADD COLUMN構文で新しいカラムを追加します。ここでは性別を格納するためのGenderカラムを、ENUM型で定義しています。
mysql> alter table DemoTable add column Gender ENUM('MALE','FEMALE');
Query OK, 0 rows affected (0.55 sec)
Records :0 Duplicates : 0 Warnings : 0なお、新しく追加されたカラムには、既存のすべての行に対してNULLが自動的に設定される点に注意してください。
ステップ5:新しいカラムにデータを挿入する
既存のテーブルの新しいカラムにデータを挿入するには、UPDATE文を使用します。ここでは、Idが2の行(Bob)のGenderに「FEMALE」を設定します。
mysql> update DemoTable set Gender='FEMALE' where Id=2;
Query OK, 1 row affected (0.13 sec)
Rows matched - 1 Changed - 1 Warnings - 0
ステップ6:更新結果を確認する
もう一度テーブルの内容を確認してみましょう。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+----+------+--------+
| Id | Name | Gender |
+----+------+--------+
| 1 | John | NULL |
| 2 | Bob | FEMALE |
| 3 | Adam | NULL |
+----+------+--------+
3 rows in set (0.00 sec)
Id=2の行のみGenderカラムに「FEMALE」が挿入され、それ以外の行はNULLのままになっていることがわかります。
まとめ
既存のテーブルへのカラム追加はALTER TABLE ADD COLUMN、そのカラムへのデータ挿入は条件を指定したUPDATE文で行います。WHERE句を指定し忘れると全行が更新されてしまうため、必ず対象となる行を絞り込むよう注意しましょう。
-
JavaのPreparedStatementを使ってMySQLテーブルにレコードを挿入する方法
JavaのPreparedStatementを使用してMySQLのテーブルにレコードを挿入するには、まずINSERT文の雛形を作成し、値の部分をプレースホルダー(?)で置き換えます。SQLインジェクション対策やパフォーマンス向上の観点からも、この方法は推奨されています。1. INSERT文の基本構文レコード挿入用のSQLは、以下のような構文で記述します。String anyVariableName = INSERT INTO yourTableName(yourColumnName1, yourColumnName2, yourColumnName3, ...N) + VALUES (?, ?
-
MySQLへのINSERT時にカラム(列)をスキップすることはできる?
MySQLへのINSERT時にカラムをスキップすることはできる? 結論から言うと、AUTO_INCREMENTが設定されたカラムであれば、INSERT時にそのカラムをスキップし、代わりにNULLを指定することが可能です。MySQL側で自動的に連番が採番されるためです。 1. テーブルの作成 まずは、最初のカラムにAUTO_INCREMENTを設定したサンプルテーブルを作成しましょう。 mysql> CREATE TABLE DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirs