【MySQL】複数の表の名前を変更する!ERROR 1050 (42S01): Table already exists

この記事は約5分で読めます。
ポートフォリオ制作実績

複数の表(テーブル)の名前を一斉に変更するためにはどうしたらよいのでしょうか。

一つ一つの表(テーブル)の名前を変更するのは手間がかかる。。。

 

 

その場合は「rename table [変更前の表の名前1] to [変更後の表の名前1], [変更前の表の名前2] to [変更後の表の名前2]・・・;」を使ってプログラミングしてみましょう。

 

スポンサーリンク

【MySQL】複数の表(テーブル)の名前を変更するためのソースコード

実際に表を作成して確かめてみましょう。

database1に以下のソースコードを使ってコマンドを入力して実行し、表を2つ作りましょう。1つ目のソースコードを既に入力している場合は入力しないでOKです。

mysql> use database1;

mysql> create table hyou1 (food varchar(20), sanchi varchar(20),price int, shomikigen date);

mysql> create table hyou2 (gazou varchar(20), size double, satsueibi date);

表の作り方は以下で確認してください。
https://updowntech.com/programming/create-table/

続いてdatabase1にあるすべての表を確認してみましょう。
今回はこちらの表の名前をまとめて変更します。

mysql> show tables;
+---------------------+
| Tables_in_database1 |
+---------------------+
| hyou1               |
| hyou2               |
+---------------------+

ちなみにそれぞれの表(テーブル)の列(フィールド)は以下の通りです。

mysql> show fields from hyou1;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| food | varchar(20) | YES | | NULL | |
| sanchi | varchar(20) | YES | | NULL | |
| price | int | YES | | NULL | |
| shomikigen | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> show fields from hyou2;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| gazou | varchar(20) | YES | | NULL | |
| size | double | YES | | NULL | |
| satsueibi | date | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

複数の表の名前を変更するためのソースコードは以下です。

コマンドを実行してみましょう。入力したらEnter キーです。

mysql> rename table hyou1 to new_hyou1, hyou2 to new_hyou2;
Query OK, 0 rows affected (0.01 sec)

rename table [変更前の表の名前1] to [変更後の表の名前1], [変更前の表の名前2] to [変更後の表の名前2];

 

以下のソースコードのコマンドを実行して確認してみましょう。入力したらEnter キーです(以下変更後の表)。

mysql> show tables;
+---------------------+
| Tables_in_database1 |
+---------------------+
| new_hyou1           |
| new_hyou2           |
+---------------------+
2 rows in set (0.01 sec)

無事に表の名前が複数まとめて一括して変更されています。

なお、既に存在している名前の表が重複すると以下のようなエラーメッセージが出力されます。

ERROR 1050 (42S01): Table 'hyou2' already exists

気をつけましょう。

 

 

 

タイトルとURLをコピーしました