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

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句を指定し忘れると全行が更新されてしまうため、必ず対象となる行を絞り込むよう注意しましょう。

  1. JavaのPreparedStatementを使ってMySQLテーブルにレコードを挿入する方法

    JavaのPreparedStatementを使用してMySQLのテーブルにレコードを挿入するには、まずINSERT文の雛形を作成し、値の部分をプレースホルダー(?)で置き換えます。SQLインジェクション対策やパフォーマンス向上の観点からも、この方法は推奨されています。1. INSERT文の基本構文レコード挿入用のSQLは、以下のような構文で記述します。String anyVariableName = INSERT INTO yourTableName(yourColumnName1, yourColumnName2, yourColumnName3, ...N) + VALUES (?, ?

  2. 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