Oracle 查询表和列注释指南
在 Oracle 数据库中,表和列的注释(备注)是数据库文档和开发中非常重要的信息。本文介绍如何通过系统字典表查询表名和列的注释,包括跨 schema 的查询方法。
1️⃣ 查询表的注释
表的注释存储在系统视图:
USER_TAB_COMMENTS
:当前用户拥有的表ALL_TAB_COMMENTS
:当前用户可访问的所有表DBA_TAB_COMMENTS
:数据库中所有表(需要 DBA 权限)
示例 SQL
-- 查询当前用户表的注释
SELECT table_name, comments
FROM user_tab_comments
WHERE table_name = UPPER('你的表名');
-- 查询所有可访问表的注释(跨用户)
SELECT owner, table_name, comments
FROM all_tab_comments
WHERE table_name = UPPER('你的表名');
字段说明
字段 | 描述 |
---|---|
OWNER | 表所属用户 |
TABLE_NAME | 表名 |
COMMENTS | 表注释(备注) |
2️⃣ 查询列的注释
列的注释存储在系统视图:
USER_COL_COMMENTS
:当前用户拥有表的列ALL_COL_COMMENTS
:当前用户可访问的表的列DBA_COL_COMMENTS
:数据库中所有列(需要 DBA 权限)
示例 SQL
-- 查询当前用户表的列注释
SELECT table_name, column_name, comments
FROM user_col_comments
WHERE table_name = UPPER('你的表名');
-- 查询所有可访问表的列注释(跨用户)
SELECT owner, table_name, column_name, comments
FROM all_col_comments
WHERE table_name = UPPER('你的表名');
字段说明
字段 | 描述 |
---|---|
OWNER | 表所属用户 |
TABLE_NAME | 表名 |
COLUMN_NAME | 列名 |
COMMENTS | 列注释(备注) |
3️⃣ 结合表和列注释查询
如果想一次性获取某张表及其所有列的注释,可以使用 JOIN
:
SELECT t.table_name,
t.comments AS table_comment,
c.column_name,
c.comments AS column_comment
FROM all_tab_comments t
LEFT JOIN all_col_comments c
ON t.owner = c.owner
AND t.table_name = c.table_name
WHERE t.table_name = UPPER('你的表名');
示例结果
TABLE_NAME | TABLE_COMMENT | COLUMN_NAME | COLUMN_COMMENT |
---|---|---|---|
EMPLOYEES | 员工表 | EMP_ID | 员工编号 |
EMPLOYEES | 员工表 | NAME | 员工姓名 |
EMPLOYEES | 员工表 | SALARY | 员工工资 |
4️⃣ 注意事项
USER_*
系列只显示当前用户拥有的对象ALL_*
系列显示当前用户可访问的对象(跨 schema)DBA_*
系列显示整个数据库的对象(需要 DBA 权限)- 表名和列名默认大写,查询时建议使用
UPPER()
函数