1. ホーム
  2. sql

[解決済み] 1つのSQLクエリでデータベースからすべてのテーブルを削除する方法は?

2022-04-06 01:38:07

質問

すべてのテーブルを削除するために、すべてのテーブルの名前を入力したくありません。1つのクエリで可能でしょうか?

どのように解決するのですか?

を使用します。 情報_スキーマ.テーブル ビューでテーブルのリストを取得します。select文でDropスクリプトを生成し、Dynamic SQLでDropします。

DECLARE @sql NVARCHAR(max)=''

SELECT @sql += ' Drop table ' + QUOTENAME(TABLE_SCHEMA) + '.'+ QUOTENAME(TABLE_NAME) + '; '
FROM   INFORMATION_SCHEMA.TABLES
WHERE  TABLE_TYPE = 'BASE TABLE'

Exec Sp_executesql @sql

Sys.Tables バージョン

DECLARE @sql NVARCHAR(max)=''

SELECT @sql += ' Drop table ' + QUOTENAME(s.NAME) + '.' + QUOTENAME(t.NAME) + '; '
FROM   sys.tables t
       JOIN sys.schemas s
         ON t.[schema_id] = s.[schema_id]
WHERE  t.type = 'U'

Exec sp_executesql @sql

もし foreign Keys テーブル間で定義されている場合、まず以下のクエリを実行します。 無効化 すべて foreign keys がデータベースに存在する場合。

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

詳しくはこちら こちらをご覧ください .