SELECT
utc.column_id AS 列順,
utc.column_name AS 列名,
CASE
WHEN pk.column_name IS NOT NULL THEN '○' -- 主キー
ELSE ''
END AS 主キー,
utc.data_type AS データ型,
utc.data_length AS 長さ,
utc.data_precision AS 整数部桁,
utc.data_scale AS 少数部桁,
CASE
WHEN utc.nullable = 'N' THEN 'NOT NULL'
ELSE ''
END AS "NOT NULL",
utc.data_default AS 初期値,
ucc.comments AS 備考
FROM
user_tab_columns utc
LEFT JOIN user_col_comments ucc
ON utc.table_name = ucc.table_name
AND utc.column_name = ucc.column_name
LEFT JOIN (
SELECT
acc.column_name
FROM
user_constraints ac
JOIN user_cons_columns acc
ON ac.constraint_name = acc.constraint_name
WHERE
ac.table_name = UPPER(:table_name)
AND ac.constraint_type = 'P' -- Primary Key(主キー)
) pk
ON utc.column_name = pk.column_name
WHERE
utc.table_name = UPPER(:table_name)
ORDER BY
utc.column_id;
SELECT
utc.column_id AS 列順,
utc.column_name AS 列名,
CASE
WHEN pk.column_name IS NOT NULL THEN '○' -- 主キー(PK:Primary Key)
ELSE ''
END AS 主キー,
utc.data_type AS データ型,
utc.data_length AS 長さ,
utc.data_precision AS 整数部桁,
utc.data_scale AS 少数部桁,
CASE
WHEN utc.nullable = 'N' THEN 'NOT NULL' -- NOT NULL 制約あり
ELSE ''
END AS "NOT NULL",
utc.data_default AS 初期値,
ucc.comments AS 備考
FROM
user_tab_columns utc
LEFT JOIN user_col_comments ucc
ON utc.table_name = ucc.table_name
AND utc.column_name = ucc.column_name
LEFT JOIN (
SELECT
acc.table_name,
acc.column_name
FROM
user_constraints ac
JOIN user_cons_columns acc
ON ac.constraint_name = acc.constraint_name
WHERE
ac.constraint_type = 'P' -- P = Primary Key(主キー制約)
) pk
ON utc.table_name = pk.table_name
AND utc.column_name = pk.column_name
WHERE
utc.table_name = 'CUSTOMER' -- ★ここを対象テーブル名(大文字)に書き換える
ORDER BY
utc.column_id;
SELECT
atc.owner AS スキーマ名,
atc.table_name AS テーブル名,
atc.column_id AS 列順,
atc.column_name AS 列名,
CASE
WHEN pk.column_name IS NOT NULL THEN '○' -- 主キー(PK:Primary Key)
ELSE ''
END AS 主キー,
atc.data_type AS データ型,
atc.data_length AS 長さ,
atc.data_precision AS 整数部桁,
atc.data_scale AS 少数部桁,
CASE
WHEN atc.nullable = 'N' THEN 'NOT NULL' -- NOT NULL 制約あり
ELSE ''
END AS "NOT NULL",
atc.data_default AS 初期値,
acc.comments AS 備考
FROM
all_tab_columns atc
LEFT JOIN all_col_comments acc
ON atc.owner = acc.owner
AND atc.table_name = acc.table_name
AND atc.column_name = acc.column_name
LEFT JOIN (
SELECT
acc.owner,
acc.table_name,
acc.column_name
FROM
all_constraints ac
JOIN all_cons_columns acc
ON ac.owner = acc.owner
AND ac.constraint_name = acc.constraint_name
WHERE
ac.constraint_type = 'P' -- P = Primary Key(主キー制約)
) pk
ON atc.owner = pk.owner
AND atc.table_name = pk.table_name
AND atc.column_name = pk.column_name
WHERE
atc.owner = 'APPUSER' -- ★ここに対象スキーマ名(ユーザー名、大文字)を書く
AND atc.table_name = 'CUSTOMER' -- ★ここに対象テーブル名(大文字)を書く
ORDER BY
atc.owner,
atc.table_name,
atc.column_id;