数据库中经常会用到查看 表结构,列名,字段注释等功能,mysql中是information_schema,那么oracle中有该功能么,如何查?
必须有啊,视图就可以。

文章目录

  • ​​oracle视图的前缀​​
  • ​​查看所有视图​​
  • ​​查看所有表​​
  • ​​查看列(字段)​​
  • ​​dba_data_files数据文件表: 表空间存放文件,名称,字节大小,块大小等​​
  • ​​dba_users用户表: 用户名,所属表空间,有效期,创建时间等​​
  • ​​dba_role_privs用户授权角色​​
  • ​​dba_sys_privs 用户权限表 用户名,权限,是否有管理权限​​

oracle视图的前缀

语法

描述

dba_*

dba 拥有的 或 可以访问的所有对象

all_*

某用户 拥有的 或 可以访问的所有的对象

user_*

某用户拥有的所有对象(必须是拥有者)

owner字段,在dba_*,all_*里面才会出现。
user_*里面没owner字段,因为user_前缀 相当于已经加了 where owner=‘当前用户名’ 条件了。

查看所有视图

select * from all_views where VIEW_NAME like '%USER_TABLE%';

_views视图主要字段就2个:

字段

含义

备注

OWNER

拥有者

如sys是系统管理员,zhangsan是自定义的用户

VIEW_NAME

视图名称

如 USER_TABLES(当前用户_表视图),

-

-

-

查看所有表

以下2种都可以查到,对比一下(各有各的应用场景):

表名

描述

user_tables

有个很关键的字段是​​NUM_ROWS​​(该表大概的条数)。

应用场景: 统计下所有的表,大概有多少条。

查表名列名时不推荐: 因为没有列名字段,用​​user_tab_columns​​更好。

user_tab_columns

表名,字段名,字段类型,字段长度等都可查询

select TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_columns

查看列(字段)

毫无疑问,用user_tab_columns ,查表查列一个表通通搞定。

select TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_columns

dba_data_files数据文件表: 表空间存放文件,名称,字节大小,块大小等

select *  from dba_data_files  ; 
file_name
tablespace_name
bytes
blocks

dba_users用户表: 用户名,所属表空间,有效期,创建时间等

select * from dba_users   ; 
username 用户名
default_tablespace 默认表空间
expiry_date 有效期
created 创建时间

dba_role_privs用户授权角色

select * from dba_role_privs;
grantee
granted_role
admin_option
default_role

dba_sys_privs 用户权限表 用户名,权限,是否有管理权限

select *  from dba_sys_privs  ; 
-- 只有3个字段
grantee 用户
privilege 权限
admin_option 是否有管理权限 YES/NO DBA用户是yes