システムストアドプロシージャ「sp_rename」を使用することで、
・テーブル名の変更
・カラム名(列名)の変更
等ができます!
※上記以外の変更もできます。制約名など。
システムストアドプロシージャ「sp_rename」とは
SQL Serverが提供しているストアドプロシージャです。
以下を変更する場合は、このストアドプロシージャを使用します。
・テーブル名
・カラム名(列名)
以下を変更する場合は、このストアドプロシージャの使用を控えたほうが良いそうです。
・ストアド プロシージャ名
・トリガー名
・ユーザー定義関数名
・ビュー名
テーブル名を変更する
テーブル名を変更する場合の構文は以下となります。
--テーブル名変更の構文
exec sp_rename 変更前のテーブル名, 変更後のテーブル名
ここでは例として、
・「sales」テーブルの名前を
・「sales_new」へ
変更するSQLを実行します。
また変更前後で対象のテーブル名を確認するSQLを実行します。
--変更前 確認
SELECT name FROM sys.tables
WHERE name in ('sales','sales_new')
--テーブル名を変更
exec sp_rename sales, sales_new
--変更後 確認
SELECT name FROM sys.tables
WHERE name in ('sales','sales_new')
カラム名(列名)を変更する
カラム名(列名)を変更する場合の構文は以下となります。
--カラム名変更の構文
exec sp_rename 'テーブル名.変更前のカラム名(列名)', '変更後のカラム名(列名)'
ここでは例として、「sales_new」テーブルの
・「price」カラム(列名)を
・「price_en」カラム(列名)へ
変更するSQLを実行します。
また変更前後で対象のカラム名(列名)を確認するSQLを実行します。
--変更前 確認
SELECT TOP(1) * FROM sales_new
--カラム名(列名)を変更
exec sp_rename 'sales_new.price', 'price_en'
--変更後 確認
SELECT TOP(1) * FROM sales_new
備考
sp_renameを実行すると以下のメッセージが出力されますが、気にしなくて大丈夫です。
注意: オブジェクト名の任意の部分を変更すると、スクリプトやストアド プロシージャが中断する可能性があります。