読者です 読者をやめる 読者になる 読者になる

B-Teck!

お仕事からゲームまで幅広く

【SQL/SQLServer】作成済みテーブル等の一覧を取得する/存在するかを確認する

テーブルが作成済みかを判定する仕組みを調べたのでメモ

実行環境

テーブル等の一覧を取得する

SQL Serverで作成されているオブジェクトは全て[DB名称].dbo.sysobjectsというシステムテーブルに保存される。
そのため、下記のようなSQLで内容を見ることができる

SELECT
    *
FROM
    --[DB名称].dbo.sysobjects
    TEST.dbo.sysobjects

sys.sysobjects (Transact-SQL)

  • オブジェクトの種類一部抜粋
xtype オブジェクトの種類
P ストアド プロシージャ
TF テーブル関数
U ユーザー テーブル
V ビュー

上記に記載されている通り、それぞれのオブジェクトの種類もxtypeフィールドに格納されているので、 対象の一覧を取得することができる。

SELECT
    *
FROM
    --[DB名称].dbo.sysobjects
    TEST.dbo.sysobjects
WHERE
    --ストアド プロシージャ
    xtype = 'P'
    --テーブル関数
    --xtype = 'TF'
    --ユーザテーブル
    --xtype = 'U'
    --ビュー
    --xtype = 'V'    

作成済みテーブル等が存在するかを確認する

オブジェクトの種類と一緒に、オブジェクトの名称も同じテーブルに保存されているため、
下記ようなSQLで存在を確認することができる。

SELECT
   CASE 
      WHEN COUNT(name) > 0 THEN 'True' 
      ELSE 'False'
   END 
FROM
    --[DB名称].dbo.sysobjects
    TEST.dbo.sysobjects
WHERE
    --ユーザテーブル
    xtype = 'U'
    --名称
    AND name = 'Table_1'