give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

OracleやSQL Serverでテーブルやストアドの一覧を取得する

たまに仕事で使う時があるので、自分用の備忘録として書いておきます。
なお、これらのSQLを発行する際は特別な権限が必要な場合があります。

SQL Serverでテーブルやストアドの一覧を取得する

目的のデータベースにて以下のSQLを実行します。
typeが略称になっていて分かりにくいので、自分用に再分類しています。

SELECT  name,
        type,
        case type
                when 'AF' then 'Function' --集計関数 (CLR)
                when 'C' then 'Constraint' --CHECK 制約
                when 'D' then 'Constraint' --DEFAULT (制約またはスタンドアロン)
                when 'F' then 'Constraint' --FOREIGN KEY 制約
                when 'FN' then 'Function' --SQL スカラ関数
                when 'FS' then 'Function' --アセンブリ (CLR) スカラ関数
                when 'FT' then 'Function' --アセンブリ (CLR) テーブル値関数
                when 'IF' then 'Function' --SQL インライン テーブル値関数
                when 'IT' then 'Table' --内部テーブル
                when 'K' then 'Constraint' --PRIMARY KEY 制約
                when 'P' then 'Procedure' --SQL ストアド プロシージャ
                when 'PC' then 'Procedure' --アセンブリ (CLR) ストアド プロシージャ
                when 'PG' then 'Plan Guide' --プラン ガイド
                when 'PK' then 'Constraint' --PRIMARY KEY 制約
                when 'R' then 'Rule' --ルール (旧形式、スタンドアロン)
                when 'RF' then 'Procedure' --レプリケーション フィルタ プロシージャ
                when 'S' then 'Table' --システム ベース テーブル
                when 'SN' then 'Synonym' --シノニム
                when 'SQ' then 'Service Queue' --サービス キュー
                when 'TA' then 'Trigger' --アセンブリ (CLR) DML トリガ
                when 'TF' then 'Function' --SQL テーブル値関数
                when 'TR' then 'Trigger' --SQL DML トリガ
                when 'U' then 'Table' --テーブル (ユーザー定義)
                when 'UQ' then 'Constraint' --UNIQUE 制約
                when 'V' then 'View' --ビュー
                when 'X' then 'Procedure' --拡張ストアド プロシージャ
                else '[UNKNOWN]'
        end as type_name
FROM    sysobjects
ORDER BY upper(name) 


なお、インスタンスに存在するデータベースの一覧を取得する際は以下のSQLを実行します。

SELECT  name
FROM    sys.databases           
ORDER BY upper(name)


どうでもいいですけど、インスタンスとかデータベースとか、SQL Serverの専門用語は初めて見た人が混乱しそうな名前が付いている気がします。。。

参考サイト

SQL Server内のシステム情報に関連するその他のテーブル
http://msdn.microsoft.com/en-us/library/ms187997.aspx


テーブル定義(カラム名とかデータ型とか)もうまくやれば取得できるかも
http://cs.albis.jp/blogs/ms-18e/archive/2006/04/05/94.aspx

Oracleでテーブルやストアドの一覧を取得する

以下のようなSQLを実行します。
Oracleのobject_typeは読めば分かるような文字列が表示されていたはずです。

SELECT  owner,
        object_name,
        object_type
FROM    all_objects
ORDER BY owner,
         object_name