Oracle 查询表和列注释指南

发表于 2025-09-20 15:23:58 分类于 默认分类 阅读量 39

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_NAMETABLE_COMMENTCOLUMN_NAMECOLUMN_COMMENT
EMPLOYEES员工表EMP_ID员工编号
EMPLOYEES员工表NAME员工姓名
EMPLOYEES员工表SALARY员工工资

4️⃣ 注意事项

  1. USER_* 系列只显示当前用户拥有的对象
  2. ALL_* 系列显示当前用户可访问的对象(跨 schema)
  3. DBA_* 系列显示整个数据库的对象(需要 DBA 权限)
  4. 表名和列名默认大写,查询时建议使用 UPPER() 函数