INFORMATION_SCHEMA.VIEWSビューでビューの存在を確認する
SQL Serverでテーブルの存在を確認する方法
sys.tables ビューを使用する
方法
SELECT name
FROM sys.tables
WHERE name = 'テーブル名';
解説
sys.tables
ビューは、データベース内のすべてのテーブルに関する情報を格納しています。name
列はテーブル名を表します。上記のクエリは、指定されたテーブル名が sys.tables
ビューに存在するかどうかを確認します。
例
SELECT name
FROM sys.tables
WHERE name = 'Customers';
このクエリは、Customers
テーブルが存在するかどうかを確認します。
OBJECT_ID 関数を使用する
SELECT OBJECT_ID('テーブル名');
OBJECT_ID
関数は、指定されたオブジェクトの ID を返します。テーブルが存在する場合、ID が返されます。存在しない場合は、エラーが発生します。
SELECT OBJECT_ID('Customers');
EXISTS キーワードを使用する
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'テーブル名')
BEGIN
-- テーブルが存在する場合の処理
END
ELSE
BEGIN
-- テーブルが存在しない場合の処理
END
EXISTS
キーワードは、サブクエリが結果を返すかどうかを確認します。上記のクエリは、INFORMATION_SCHEMA.TABLES
ビューから指定されたテーブル名を取得するサブクエリを実行します。サブクエリが結果を返した場合、テーブルが存在すると判断されます。
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Customers')
BEGIN
-- テーブルが存在する場合の処理
END
ELSE
BEGIN
-- テーブルが存在しない場合の処理
END
このクエリは、Customers
テーブルが存在するかどうかを確認し、存在する場合は処理 A を、存在しない場合は処理 B を実行します。
TRY-CATCH ブロックを使用する
BEGIN TRY
SELECT * FROM テーブル名;
END TRY
BEGIN CATCH
-- テーブルが存在しない場合の処理
END CATCH
TRY-CATCH
ブロックは、エラーが発生した場合の処理を記述することができます。上記のクエリは、テーブル名
テーブルからデータを取得しようとします。テーブルが存在しない場合、エラーが発生し、CATCH
ブロック内の処理が実行されます。
BEGIN TRY
SELECT * FROM Customers;
END TRY
BEGIN CATCH
-- テーブルが存在しない場合の処理
END CATCH
上記の方法のいずれでも、SQL Serverでテーブルの存在を確認することができます。状況に合わせて適切な方法を選択してください。
-- sys.tables ビューを使用する
SELECT name
FROM sys.tables
WHERE name = 'Customers';
-- OBJECT_ID 関数を使用する
SELECT OBJECT_ID('Customers');
-- EXISTS キーワードを使用する
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Customers')
BEGIN
-- テーブルが存在する場合の処理
END
ELSE
BEGIN
-- テーブルが存在しない場合の処理
END
-- TRY-CATCH ブロックを使用する
BEGIN TRY
SELECT * FROM Customers;
END TRY
BEGIN CATCH
-- テーブルが存在しない場合の処理
END CATCH
これらのコードを参考に、状況に合わせて適切な方法を選択してください。
補足
上記の方法に加えて、以下のような方法もあります。
- INFORMATION_SCHEMA.VIEWS ビューを使用する (ビューの存在を確認する場合)
- sp_helpdb システムプロシージャを使用する
- sys.objects ビューを使用する
これらの方法は、上記の方法よりも詳細な情報を取得することができます。詳細は、SQL Server のドキュメントを参照してください。
他の方法
INFORMATION_SCHEMA.VIEWS ビューを使用する
SELECT name
FROM INFORMATION_SCHEMA.VIEWS
WHERE name = 'ビュー名';
INFORMATION_SCHEMA.VIEWS
ビューは、データベース内のすべてのビューに関する情報を格納しています。name
列はビュー名を表します。上記のクエリは、指定されたビュー名が INFORMATION_SCHEMA.VIEWS
ビューに存在するかどうかを確認します。
SELECT name
FROM INFORMATION_SCHEMA.VIEWS
WHERE name = 'CustomersView';
sp_helpdb システムプロシージャを使用する
EXEC sp_helpdb 'データベース名'
sp_helpdb
システムプロシージャは、指定されたデータベースに関する情報を表示します。出力には、テーブル名とビュー名のリストが含まれます。
EXEC sp_helpdb 'AdventureWorks2019'
このクエリは、AdventureWorks2019
データベース内のすべてのテーブルとビューの名前を表示します。
sys.objects ビューを使用する
SELECT name
FROM sys.objects
WHERE type = 'U' AND name = 'テーブル名';
SELECT name
FROM sys.objects
WHERE type = 'U' AND name = 'Customers';
sql-server t-sql sql-server-2005