Microsoft SQL Server
キーワードを削除
サーチ…
前書き
DropキーワードはさまざまなSQLオブジェクトで使用できますが、このトピックではデータベースオブジェクトとさまざまな使い方の簡単な例を示します。
備考
ドロップテーブル
DROP TABLEコマンドは、表定義、すべてのデータ、索引、トリガー、制約および関連する許可を除去します。
テーブルを削除する前に、そのテーブルを参照するオブジェクト(ビュー、ストアドプロシージャ、その他のテーブル)があるかどうかを確認する必要があります。
FOREIGN KEYによって別のテーブルによって参照されるテーブルを削除することはできません。まずそれを参照するFOREIGN KEYを削除する必要があります。
ビューまたはストアドプロシージャによって参照されるテーブルを削除することはできますが、テーブルを削除した後はビューまたはストアドプロシージャは使用できなくなります。
構文
DROP TABLE [ IF EXISTS ] [ database_name . [ schema_name ] . | schema_name . ]
table_name [ ,...n ] [ ; ]
-
IF EXISTS
- 存在する場合のみテーブルをIF EXISTS
する -
database_name
- テーブルが格納されているデータベースの名前を指定する -
schema_name
- テーブルが存在するスキーマの名前を指定する -
table_name
- 削除する表の名前を指定する
例
現在のデータベースとデフォルトのスキーマdboからTABLE_1という名前のテーブルを削除します。
DROP TABLE Table_1;
データベースHRおよびデフォルトスキーマdboからTABLE_1を使用してテーブルを削除します。
DROP TABLE HR.Table_1;
データベースHRおよびスキーマ外部からTABLE_1を使用してテーブルを削除します。
DROP TABLE HR.external.TABLE_1;
データベースを削除する
DROP DATABASEコマンドは、現在のSQL Serverインスタンスからの状態(オフライン、読み取り専用、疑わしいなど)に関係なく、データベースカタログを削除します。
データベーススナップショットが最初に削除される必要があるため、関連付けられたデータベーススナップショットがある場合、データベースを削除することはできません。
データベース・ドロップは、ストアド・プロシージャ 'sp_detach_db'を使用しないかぎり、データベースによって使用されるすべての物理ディスク・ファイル(オフラインでない場合を除く)を削除します。
データベーススナップショットドロップは、SQL Serverインスタンスからスナップショットを削除し、そのスナップショットでも使用されている物理ファイルを削除します。
ドロップされたデータベースは、(データベーススナップショットからではなく)バックアップをリストアすることによってのみ再作成できます。
構文
DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ] [;]
-
IF EXISTS
- 存在する場合のみテーブルをIF EXISTS
する -
database_name
- 削除するデータベースの名前を指定します。 -
database_snapshot_name
- 削除するデータベーススナップショットを指定します。
例
単一のデータベースを削除します。
DROP DATABASE Database1;
複数のデータベースの削除
DROP DATABASE Database1, Database2;
スナップショットの削除
DROP DATABASE Database1_snapshot17;
データベースが存在する場合の削除
DROP DATABASE IF EXISTS Database1;
テンポラリテーブルを削除する
SQLサーバーには、2種類の一時テーブルがあります。
-
##GlobalTempTable
GlobalTempTableは、すべてのユーザーのセッション間で切断される一時表の一種です。 -
#LocalTempTable
一時タブ - 現在のスコープにのみ存在する一時テーブルのタイプです(実際のプロセスでのみ - 現在のプロセスのIDをSELECT @@SPID
取得できます)
一時テーブルの削除処理は、通常のテーブルと同じです。
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name
SQL Serverの前に2016:
IF(OBJECT_ID('tempdb..#TempTable') is not null)
DROP TABLE #TempTable;
SQL Server 2016:
DROP TABLE IF EXISTS #TempTable