ALTER TABLE ステートメントを使用してテーブル名を変更する
SQL Serverでテーブル名を変更する方法
方法 1: オブジェクト エクスプローラーを使用する
これは、最も簡単な方法です。
- オブジェクト エクスプローラーで、名前を変更するテーブルを右クリックします。
- ショートカット メニューから [デザイン] を選択します。
- [表示] メニューの [プロパティ] をクリックします。
- [プロパティ] ウィンドウの [オブジェクト名] ボックスに、テーブルの新しい名前を入力します。
- [OK] をクリックします。
方法 2: RENAME ステートメントを使用する
T-SQL の RENAME ステートメントを使用して、テーブル名を変更することもできます。
RENAME TABLE 旧テーブル名 TO 新テーブル名;
例:
RENAME TABLE dbo.Customers TO dbo.NewCustomers;
ALTER TABLE 旧テーブル名 RENAME TO 新テーブル名;
ALTER TABLE dbo.Customers RENAME TO dbo.NewCustomers;
注意事項
- テーブル名を変更すると、そのテーブルに関連するすべてのオブジェクトの名前も変更されます。
- テーブル名を変更する前に、そのテーブルを使用しているすべてのアプリケーションを停止する必要があります。
- テーブル名を変更すると、テーブルのデータは変更されません。
- テーブル名を変更する前に、データベースのバックアップを取ることをお勧めします。
USE AdventureWorks2019;
-- テーブル名を変更する前に、テーブルを使用しているすべてのアプリケーションを停止する必要があります。
RENAME TABLE Person.Contact TO Person.NewContact;
-- テーブル名を変更すると、そのテーブルに関連するすべてのオブジェクトの名前も変更されます。
SELECT name
FROM sys.objects
WHERE name LIKE '%Contact%';
-- テーブル名を変更すると、テーブルのデータは変更されません。
SELECT *
FROM Person.NewContact;
USE AdventureWorks2019;
-- テーブル名を変更する前に、テーブルを使用しているすべてのアプリケーションを停止する必要があります。
ALTER TABLE Person.Contact RENAME TO NewContact;
-- テーブル名を変更すると、そのテーブルに関連するすべてのオブジェクトの名前も変更されます。
SELECT name
FROM sys.objects
WHERE name LIKE '%Contact%';
-- テーブル名を変更すると、テーブルのデータは変更されません。
SELECT *
FROM Person.NewContact;
- 上記のサンプルコードは、AdventureWorks2019 データベースを使用しています。
SQL Serverでテーブル名を変更するその他の方法
方法 4: SSMS のテーブル デザイナーを使用する
- SQL Server Management Studio (SSMS) で、データベースに接続します。
- テーブルを右クリックし、[テーブル デザイナーを開く] を選択します。
- テーブル デザイナーで、[テーブル名] ボックスに、テーブルの新しい名前を入力します。
- [ファイル] メニューの [保存] を選択します。
方法 5: Transact-SQL スクリプトを使用する
-- 接続するデータベース名
USE DatabaseName;
-- テーブル名を変更する前に、テーブルを使用しているすべてのアプリケーションを停止する必要があります。
BEGIN TRY
EXEC sp_rename 'dbo.OldTableName', 'NewTableName';
END TRY
BEGIN CATCH
DECLARE @ErrorMessage VARCHAR(MAX);
SELECT @ErrorMessage = ERROR_MESSAGE();
RAISERROR(@ErrorMessage, 16, 1);
END CATCH;
- 上記のスクリプトは、
sp_rename
ストアド プロシージャを使用しています。
方法 6: PowerShell を使用
# 接続するデータベース名
$DatabaseName = 'DatabaseName'
# テーブル名を変更する前に、テーブルを使用しているすべてのアプリケーションを停止する必要があります。
try {
Invoke-Sqlcmd -Query "EXEC sp_rename 'dbo.OldTableName', 'NewTableName'" -Database $DatabaseName
}
catch {
Write-Error $_.Exception.Message
}
- 上記のスクリプトは、
Invoke-Sqlcmd
コマンドレットを使用しています。 - PowerShell を使用するには、PowerShell をインストールする必要があります。
方法 7: .NET Framework を使用
using System;
using System.Data.SqlClient;
class Program
{
static void Main(string[] args)
{
// 接続するデータベース名
string databaseName = "DatabaseName";
// テーブル名を変更する前に、テーブルを使用しているすべてのアプリケーションを停止する必要があります。
using (SqlConnection connection = new SqlConnection(string.Format("Data Source=localhost;Initial Catalog={0};Integrated Security=True", databaseName)))
{
connection.Open();
SqlCommand command = new SqlCommand("EXEC sp_rename 'dbo.OldTableName', 'NewTableName'", connection);
command.ExecuteNonQuery();
}
}
}
- 上記のコードは、
SqlConnection
クラスとSqlCommand
クラスを使用しています。 - .NET Framework を使用するには、.NET Framework をインストールする必要があります。
SQL Serverでテーブル名を変更するには、いくつかの方法があります。
sql-server rename alter-table