カレントスキーマの全テーブルの全カラムを一覧するSQL

次の情報も一緒に取得。

  • カラムの型
  • 主キーかどうか
  • NOT NULL制約列かどうか
SELECT
    A.TABLE_NAME
   ,A.COLUMN_NAME
   ,A.COLUMN_ID
   ,A.DATA_TYPE
   ,A.DATA_LENGTH
   ,A.DATA_PRECISION
   ,A.DATA_SCALE
   ,SQ1.CONSTRAINT_TYPE
/*
   ,CASE NVL(SQ1.CONSTRAINT_TYPE,'')
      WHEN 'P' THEN 1
      ELSE 0
    END PKEY
*/
   ,A.NULLABLE
/*
   ,CASE NVL(A.NULLABLE,'')
      WHEN 'N' THEN 1
      ELSE 0
    END NOTNULL
*/
FROM
    USER_TAB_COLUMNS A
   ,(SELECT
        B.TABLE_NAME
       ,B.COLUMN_NAME
       ,C.CONSTRAINT_TYPE
    FROM
        USER_CONS_COLUMNS B
       ,USER_CONSTRAINTS C
    WHERE
        B.OWNER = C.OWNER
    AND B.TABLE_NAME = C.TABLE_NAME
    AND B.CONSTRAINT_NAME = C.CONSTRAINT_NAME
    AND C.CONSTRAINT_TYPE = 'P'
    ) SQ1
WHERE
    A.TABLE_NAME = SQ1.TABLE_NAME(+)
AND A.COLUMN_NAME = SQ1.COLUMN_NAME(+)
ORDER BY
    A.TABLE_NAME
   ,A.COLUMN_ID