1.只查看某个特定表的字段名
SELECT column_name, data_type, data_length
FROM user_tab_columns
WHERE table_name = '你的表名' -- 注意大写
ORDER BY column_id;
2.查看当前用户下所有表的字段名
SELECT table_name, column_name, data_type, data_length
FROM user_tab_columns
ORDER BY table_name, column_id;
说明:
table_name: 表名
column_name: 字段名
data_type: 数据类型(如 VARCHAR2, NUMBER)
data_length: 数据长度
若需要格式化字段展示,可使用如下SQL:
SELECT table_name || '.' || column_name AS full_column_name,
data_type || '(' || data_length || ')' AS data_type_length
FROM user_tab_columns
ORDER BY table_name, column_id;
3.查看所有用户的表字段名(你有权限访问的)
SELECT owner, table_name, column_name, data_type, data_length
FROM all_tab_columns
ORDER BY owner, table_name, column_id;
4.查看数据库中所有表的字段名(需要 DBA 权限)
SELECT owner, table_name, column_name, data_type, data_length
FROM dba_tab_columns
ORDER BY owner, table_name, column_id;
5.查看当前用户下字段名、数据类型及长度
SELECT
table_name,
column_name,
-- 格式化数据类型 + 长度/精度
CASE
WHEN data_type IN ('CHAR', 'VARCHAR2', 'NCHAR', 'NVARCHAR2') THEN
data_type || '(' ||
CASE char_used
WHEN 'C' THEN char_length || ' CHAR'
WHEN 'B' THEN data_length || ' BYTE'
END || ')'
WHEN data_type = 'NUMBER' THEN
CASE
WHEN data_precision IS NULL THEN 'NUMBER'
WHEN data_scale = 0 THEN 'NUMBER(' || data_precision || ')'
ELSE 'NUMBER(' || data_precision || ',' || data_scale || ')'
END
ELSE
data_type
END AS formatted_data_type,
-- 实际存储长度(以字节为单位)
data_length AS actual_length_bytes
FROM
user_tab_columns
ORDER BY
table_name, column_id;
若需格式化显示字段长度,可使用如下SQL:
SELECT
table_name,
column_name,
-- 格式化数据类型(去掉 BYTE/CHAR)
CASE
WHEN data_type IN ('CHAR', 'VARCHAR2', 'NCHAR', 'NVARCHAR2') THEN
data_type || '(' ||
CASE char_used
WHEN 'C' THEN char_length
WHEN 'B' THEN data_length
END || ')'
WHEN data_type = 'NUMBER' THEN
CASE
WHEN data_precision IS NULL THEN 'NUMBER'
WHEN data_scale = 0 THEN 'NUMBER(' || data_precision || ')'
ELSE 'NUMBER(' || data_precision || ',' || data_scale || ')'
END
ELSE
data_type
END AS formatted_data_type,
-- 实际字节长度(定义层面上的)
data_length AS actual_length_bytes
FROM
user_tab_columns
ORDER BY
table_name, column_id;
6.查询前用户下所有表的字段名称、字段长度、是否允许为空
SELECT
table_name,
column_name,
data_type,
CASE
WHEN data_type IN ('CHAR', 'VARCHAR2', 'NCHAR', 'NVARCHAR2') THEN
char_length
WHEN data_type = 'NUMBER' THEN
data_precision
ELSE
data_length
END AS length,
CASE
WHEN nullable = 'Y' THEN '是'
ELSE '否'
END AS is_nullable
FROM
user_tab_columns
ORDER BY
table_name, column_id;
若需格式化显示长度,可使用如下SQL:
SELECT
table_name,
column_name,
CASE
WHEN data_type IN ('CHAR', 'VARCHAR2', 'NCHAR', 'NVARCHAR2') THEN
data_type || '(' ||
CASE char_used
WHEN 'C' THEN char_length
WHEN 'B' THEN data_length
ELSE data_length
END || ')'
WHEN data_type = 'NUMBER' THEN
CASE
WHEN data_precision IS NULL THEN 'NUMBER'
WHEN data_scale = 0 THEN 'NUMBER(' || data_precision || ')'
ELSE 'NUMBER(' || data_precision || ',' || data_scale || ')'
END
ELSE data_type
END AS data_type_length,
CASE
WHEN nullable = 'Y' THEN '是'
ELSE '否'
END AS is_nullable
FROM
user_tab_columns
ORDER BY
table_name, column_id;