テーブル名の変更

広告

テーブル名の変更方法を確認します。書式は次の通りです。

ALTER TABLE tbl_name RENAME [TO] new_tbl_name;

tbl_nameで指定したテーブルの名前をnew_tbl_nameに変更します。

例えば次のように使います。

alter table salestable rename to salestable_back;

上記の場合、salestableテーブルの名前をsalestable_backに変更します。

サンプル

では実際に試してみます。次のようにテーブルを作成し、いくつかデータを追加します。

mysql> create table goods(id int, name varchar(10));

p18-1

ではgoodsテーブルの名前をapparelテーブルに変更します。

mysql> alter table goods rename to apparel;

p18-2

名前が変更されました。ではapparelテーブルのデータを取得してみます。

p18-3

変更前のデータがそのままでテーブル名だけ変更されていることが確認できます。

権限が設定されたテーブル

テーブルに対してユーザーに権限を設定してあるテーブル名を変更する場合は注意が必要です。テーブル名が変更されても権限は自動的に新しいテーブル名に変更となりませんので、手動で権限を変更する必要があります。

では実際に試してみます。'test'@'localhost'ユーザーに対して、「apparel」テーブルに対するSELECT権限を与えます。

mysql> grant select on sampledb.apparel to 'test'@'localhost';

p18-4

'test'@'localhost'ユーザーの権限を確認します。

p18-5

'test'@'localhost'ユーザーにapparelテーブルに対するSELECT権限が設定されていることが確認できます。

ではapparelテーブルの名前をfashionテーブルに変更します。

mysql> alter table apparel rename to fashion;

p18-6

では再度'test'@'localhost'ユーザーの権限を確認します。

p18-7

'test'@'localhost'ユーザーに設定されている権限はapparelテーブルに対する権限のままです。このようにテーブル名を変更しても、そのテーブルに対して設定されていた権限は自動的に更新されませんので注意して下さい。

( Written by Tatsuo Ikura )