SQLでテーブルを簡単に削除できます。 DROP TABLE myTable
を使用するだけです ここで、myTable
ドロップするテーブルの名前です。このメソッドを使用して、T-SQLスクリプトを介してSQLServerにテーブルをドロップできます。
ただし、テーブルが実際に存在しない場合はエラーが発生します。つまり、最初にテーブルの存在を確認しない限り。
以下は、T-SQLを使用して、テーブルを削除する前にテーブルが存在するかどうかを確認する4つの方法です。
オプション1:IF EXISTS
条項
SQL Server 2016以降を使用する場合は、IF EXISTS
を使用できます。 DROP TABLE
の句 テーブルを削除する前に、テーブルの存在を確認するステートメント:
DROP TABLE IF EXISTS t1;
これにより、t1
というテーブルが削除されます 存在する場合。
テーブルが存在する(したがって削除される)ときに上記のステートメントを実行した結果は次のとおりです。
Commands completed successfully.
そして、すぐにステートメントを再度実行すると(つまり、テーブルが存在しない場合)、次のようになります。
Commands completed successfully.
同じ出力。したがって、テーブルが存在するかどうかに関係なく、ステートメントは正常に実行されます。
IF EXISTS
を使用せずにテーブルを削除しようとするとどうなりますか。 条項:
DROP TABLE t1;
結果:
Msg 3701, Level 11, State 5, Line 1 Cannot drop the table 't1', because it does not exist or you do not have permission.
オプション2:オブジェクトIDを確認する
または、OBJECT_ID()
を使用することもできます テーブルを削除する前に、テーブルの存在を確認する関数:
IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO
上記の例では、オブジェクトIDでdbo.t1
を確認しています。 テーブル。 OBJECT_ID()
の2番目の引数 探しているオブジェクトのタイプを指定します。この場合、U
を使用します 、これは「ユーザー定義テーブル」用です。
OBJECT_ID()
スキーマスコープのオブジェクトのデータベースオブジェクト識別番号を返します。オブジェクトが存在する場合、NULLは返されないため、テーブルを削除できます。オブジェクトがない場合 存在するか、アクセスできない場合、関数はNULLを返し、DROP TABLE
ステートメントは実行されません。
オプション3:クエリinformation_schema.tables
テーブルがすでに存在するかどうかを確認する別の方法は、information_schema.tables
をクエリすることです。 ビュー:
IF EXISTS (
SELECT * FROM information_schema.tables
WHERE table_schema = 'dbo' AND table_name = 't1')
DROP TABLE dbo.t1;
これは前の例と同様のことをします。テーブルの存在をチェックし、存在しない場合にのみテーブルを作成します。
オプション4:クエリsys.tables
sys.tables
にクエリを実行することもできます システムカタログビュー:
IF EXISTS (
SELECT * FROM sys.tables t
JOIN sys.schemas s ON (t.schema_id = s.schema_id)
WHERE s.name = 'dbo' AND t.name = 't1')
DROP TABLE dbo.t1;
SQL Serverには、テーブルの存在を確認する他の多くの方法が用意されています。例については、SQLServerにテーブルが存在するかどうかを確認する6つの方法を参照してください。