Oracle数据库元数据查询
元数据被称为数据的数据,类似于数据总览,mysql的元数据存储在 information_schema 数据库中(大多数都是如此),而oracle存储在数据字典中也类似information_schema数据库
数据字典的生成
-
数据字典是在数据库创建时,由Oracle数据库服务器自动创建的,存放在数据文件中,包括基表和视图两部分。
-
数据字典无法直接阅读,看不到数据字典但是可以通过sql查询出来。
-
数据字典数据由Oracle数据库服务器维护
数据字典的内容
- 所有模式对象的定义,包括表,视图,索引,族,同义词,序列号,存储过程,函数触发器等
- 数据库的逻辑结构和物理结构,如数据文件和重做文件的信息等。
- 用户信息
数据字典视图的分类
- DBA_*** 该视图包含数据库整个对象信息,只能由数据库管理员查看
- ALL_*** 包含某个用户所能看到的全部数据库信息
- USER_*** 包含当前用户访问的数据库对象信息
表元数据查询
获取表名称
-- 获取表名称
SELECT * FROM user_tables -- 包含当前用户访问的数据库对象信息
SELECT * FROM all_tables -- 包含某个用户所能看到的全部数据库信息
SELECT * FROM dba_tables -- 该视图包含数据库整个对象信息,只能由数据库管理员查看
WHERE owner = '用户名'
以下sql全部使用 user_权限 all_dba_都差不多
获取表注释
-- user_tab_comments 关于表注释的表
SELECT
t.TABLE_NAME,
tc.COMMENTS
FROM
USER_TABLES t,
user_tab_comments tc
WHERE
t.TABLE_NAME = tc.TABLE_NAME
获取表字段
-- user_tab_columns 关于表字段信息的表
SELECT
t.TABLE_NAME,
t.COLUMN_NAME,
t.DATA_TYPE,
t.DATA_LENGTH,
t.NULLABLE,
c.COMMENTS
FROM
user_tab_columns t,
user_col_comments c
WHERE
t.table_name = c.table_name
AND t.COLUMN_NAME = c.COLUMN_NAME
AND t.table_name = '****'
获取字段注释
-- user_col_comments 关于表字段的注释
SELECT
*
FROM
user_col_comments
WHERE
table_name = '****';
获取表的索引
-- user_indexes 关于表的索引的表
SELECT
t.*,
i.index_type
FROM
user_ind_columns t,
user_indexes i
WHERE
t.index_name = i.index_name
AND t.table_name = '****'
获取表的主键
-- user_constraints 关于主键信息的表
SELECT
cc.*
FROM
user_cons_columns cc,
user_constraints cs
WHERE
cc.constraint_name = cs.constraint_name
AND cs.constraint_type = 'P'
AND cc.table_name = 'TD_BANKTYPE'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?