【ORACLE】テーブルの定義、列名一覧、名前(コメント)、DDLの確認方法


ここではORACLEデータベースで、テーブルの定義、列名の一覧、名前(コメント)、DDLの確認方法を紹介しています。

テーブルの一覧やサイズを確認する方法は↓で紹介しています。
>>【ORACLE】テーブルの一覧やサイズを確認するSQL

テーブルの定義

テーブルの定義を確認する方法をいくつか紹介します。

DESCRIBEでテーブルの構造を確認するSQL

テーブルの定義を確認するときに最もよく使うのがDESCRIBEです。DESCRIBEを使うことで列名、NOTNULL制約の有無、データ型が確認できます。

DESCRIBEの基本構文は次の通りです。

DESCRIBE テーブル名;

次のSQLでは、TAB1テーブルの列名、NOTNULL制約の有無、データ型を一覧で確認することが出来ます。

DESCRIBE tab1;

DESCRIBEはDESCと短縮して使うこともできます。

DESC tab1;

列名の一覧

DBA_TAB_COLUMNSを使うことで、テーブルのもつ列の一覧を確認することが出来ます。

テーブルの持つ列の情報を参照することが出来ます。

select
    a.table_name
from
    dba_tab_columns a
where
    a.owner = 'user1'
    and a.table_name = 'tab1'
;

テーブルの列に付与したコメントの一覧はDBA_COL_COMMENTSで取得することが出来ます。

次のSQLでは、USER1の所有するTABLE1テーブルのもつカラムの一覧を取得しています。

select
    a.table_name
    ,a.column_name
    ,a.comments
from
    dba_col_comments a
where
    a.owner = 'user1'
    and a.table_name = 'table1'
;

列の持つ意味は次の通りです。
 ・TABLE_NAME
  テーブルの名前
 ・COLUMN_NAME
  列名
 ・COMMENTS
  列のコメント

カラム名からテーブルを検索する方法

DBA_TAB_COLUMNSから任意のカラム名をもつテーブルを検索することもできます。

次のSQLでは、オーナーがUSER1でCOL1とう名称のカラムを含むテーブルの一覧を取得しています。

select
    a.table_name
from
    dba_tab_columns a
where
    a.owner = 'user1'
    and a.column_name = 'col1'
;

カラムのコメントで検索する方法

カラムのコメントで検索するには、dba_col_commentsも同時に使います。

次のSQLでは、オーナーがUSER1で、列のコメントが「登録日」となっている列を含むテーブルの一覧を取得しています。

select
    a.table_name
from
    dba_tab_columns a
where
    a.owner = 'user1'
    and a.column_name in (select
                              b.column_name
                          from
                              dba_col_comments b
                          where
                              b.owner = 'user1'
                              and b.comments = '登録日';

テーブルの名前(コメント)

テーブルの名前は、DBA_TAB_COMMENTSというビューで確認することが出来ます。
もちろん他のビューやテーブルと結合可能なので、DBA_TABLESなどと組み合わせて、テーブルの名前付きの一覧を作成することも可能です。

select
    a.table_name
    ,a.table_type
    ,a.comments
from
    dba_tab_comments a
where
    a.owner = 'user1'
    and a.table_name = 'table1'
;

DDL文

テーブルのDDL文(CREATE文)を取得するにはDBMS_METADATAパッケージのGET_DDLファンクションを使います。

DBMS_METADATAのGET_DDLファンクションはSQLでも呼び出すことが出来ます。

select
    dbms_metadata.GET_DDL(
                           object_type=>'TABLE' --オブジェクトのタイプ
                           ,name=>'table1' --オブジェクト名
                           ,schema=>'user1' --スキーマ名
                         )
from
    dual
;