あるスキーマのテーブル構造(プライマリーキーなど)を出力するSQLです
プライマリーキーがちゃんと当たってるかなど確認で使っています
他のSQLも組み合わせるともっとよくなるかもですね
→2015/10/24 更新
テーブルのコメントと別スキーマに同じ名前でPKがセットされてると重複してしまったので修正しました。
※↓のエリア内文字切れてるのでカーソルあてて出てくるエリアの右端の斜め右上線をクリックすると全体化されます
--あるスキーマのテーブル構造を出力するSQL SELECT T.TABLE_NAME, TC.COMMENTS, C.COLUMN_NAME AS "COLUMN", CASE WHEN PK.COLUMN_POSITION IS NOT NULL THEN PK.COLUMN_POSITION ELSE NULL END AS "PK", C.DATA_TYPE AS "型", CASE WHEN C.DATA_PRECISION IS NOT NULL THEN C.DATA_PRECISION || ',' || C.DATA_SCALE ELSE TO_CHAR(C.DATA_LENGTH) END AS "長さ", C.NULLABLE AS "NULL", C.DATA_DEFAULT AS "初期値", CC.COMMENTS AS "コメント" FROM ALL_TABLES T INNER JOIN ALL_TAB_COLUMNS C ON T.OWNER = C.OWNER AND T.TABLE_NAME = C.TABLE_NAME INNER JOIN ALL_COL_COMMENTS CC ON T.OWNER = CC.OWNER AND T.TABLE_NAME = CC.TABLE_NAME AND C.COLUMN_NAME = CC.COLUMN_NAME LEFT JOIN ( SELECT IDX.TABLE_OWNER, IDX.INDEX_NAME, CONST.TABLE_NAME, IDX.COLUMN_NAME, IDX.COLUMN_POSITION FROM ALL_IND_COLUMNS IDX INNER JOIN ALL_CONSTRAINTS CONST ON IDX.INDEX_NAME = CONST.CONSTRAINT_NAME AND CONST.CONSTRAINT_TYPE = 'P' AND CONST.OWNER = 'ここにスキーマ名' ) PK ON T.OWNER = PK.TABLE_OWNER AND T.TABLE_NAME = PK.TABLE_NAME AND C.COLUMN_NAME = PK.COLUMN_NAME INNER JOIN ALL_TAB_COMMENTS TC ON T.OWNER = TC.OWNER AND T.TABLE_NAME = TC.TABLE_NAME WHERE T.OWNER = 'ここにスキーマ名' ORDER BY T.TABLE_NAME, C.COLUMN_ID