ORACLE 数据字典、分组查询、多表查询

ORACLE 数据字典、分组查询、多表查询

 

 

一、Oracle数据字典

数据字典是oracle存放有关数据库信息的地方,其用途是用来描述数据的。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。

Oracle中的数据字典有静态和动态之分。静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。以下分别就这两类数据字典来论述。

user_* 

该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)

user_objects用户对象信息

ORACLE 数据字典、分组查询、多表查询_第1张图片 

user_source数据库用户的所有资源对象信息

user_segments用户的表段信息

user_tables用户的表对象信息

user_tab_columns用户的表列信息

user_constraints用户的对象约束信息

user_sys_privs当前用户的系统权限信息

user_tab_privs当前用户的对象权限信息

user_col_privs当前用户的表列权限信息

user_role_privs当前用户的角色权限信息

user_indexes用户的索引信息

user_ind_columns用户的索引对应的表列信息

user_cons_columns用户的约束对应的表列信息

user_clusters用户的所有簇信息

user_clu_columns用户的簇所包含的内容信息

user_cluster_hash_expressions散列簇的信息

 

all_*

该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)

all_users数据库所有用户的信息

ORACLE 数据字典、分组查询、多表查询_第2张图片 

 

all_objects数据库所有的对象的信息

all_def_audit_opts所有默认的审计设置信息

all_tables所有的表对象信息

all_indexes所有的数据库对象索引的信息

 

dba_*

该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)

dba_users数据库用户信息

ORACLE 数据字典、分组查询、多表查询_第3张图片 

 

dba_segments表段信息

dba_extents数据区信息

dba_objects数据库对象信息

dba_tablespaces数据库表空间信息

dba_data_files数据文件设置信息

dba_temp_files临时数据文件信息

dba_rollback_segs回滚段信息

dba_ts_quotas用户表空间配额信息

dba_free_space数据库空闲空间信息

dba_profiles数据库用户资源限制信息

dba_sys_privs用户的系统权限信息

dba_tab_privs用户具有的对象权限信息

dba_col_privs用户具有的列对象权限信息

dba_role_privs用户具有的角色信息

dba_audit_trail审计跟踪记录信息

dba_stmt_audit_opts审计设置信息

dba_audit_object对象审计结果信息

dba_audit_session会话审计结果信息

dba_indexes用户模式的索引信息

 

 

二、分组查询

语法:

select [distinct]*|分组字段 [别名] [,分组字段2 [别名]],...] |统计函数

from 表名称 [别名], [表名称 [别名],...]

[where 条件(s)]

[group by 分组字段1[,分组字段2,...]]

[order by 排序字段 [asc|desc]] [,排序字段 [asc|desc],...]];

例:

SELECT DEPARTMENT_ID,AVG(SALARY)

FROM EMPLOYEES

GROUP BY department_id;

从表EMPLOYEES中以department_id分组

查询DEPARTMENT_ID,和AVG(SALARY)

 

ORACLE 数据字典、分组查询、多表查询_第4张图片 

having子句

SELECT DEPARTMENT_ID,MAX(SALARY)

FROM EMPLOYEES

GROUP BY DEPARTMENT_ID

HAVING MAX(SALARY) > 8000;

从表EMPLOYEES中以department_id分组

查询DEPARTMENT_ID,和MAX(SALARY)

显示MAX(SALARY)>8000的数据

ORACLE 数据字典、分组查询、多表查询_第5张图片 

 

三、多表查询(连接查询)

外连接

左外连接

左边的表是主表

SELECT e.last_name, e.department_id, d.department_name

FROM   employees e,departments d

where e.department_id = d.department_id(+);

ORACLE 数据字典、分组查询、多表查询_第6张图片 

右外连接

右边的表是主表

SELECT e.last_name, e.department_id, d.department_name

FROM   employees e,departments d

where e.department_id(+) = d.department_id;

ORACLE 数据字典、分组查询、多表查询_第7张图片 

 

四、union

UNION 指令的目的是将两个 SQL 语句的结果合并起来,可以查看你要的查询结果.

例如:

select id from a

union all

select id from b;

 

ORACLE 数据字典、分组查询、多表查询_第8张图片 

 

select id from a

union

select id from b;

ORACLE 数据字典、分组查询、多表查询_第9张图片 

 

五、intersect

取交集

select id from a

intersect

select id from b;

ORACLE 数据字典、分组查询、多表查询_第10张图片 

 

 

六、minus

在进行两个表格或者两个查询结果的时候,返回在第一个表格/查询结果中与第二个表格/查询结果不相同的记录。

select id from a

minus

select id from b;

ORACLE 数据字典、分组查询、多表查询_第11张图片 

select id from b

minus

select id from a;

ORACLE 数据字典、分组查询、多表查询_第12张图片 

 

七、SAVEPOINT

保存点savepoint是事务中的一点,通过rollback可以返回到

某个保存点。一个事务中可以有多个保存点。一旦事务提交,

该事务中的保存点会自动被删除,那么无论刚才做了多少个

保存点,都统统没有了。

设置保存点 savepoint 保存点名

ORACLE 数据字典、分组查询、多表查询_第13张图片 

取消部分事务 rollback to 保存点名

ORACLE 数据字典、分组查询、多表查询_第14张图片 

取消全部事务 rollback

ORACLE 数据字典、分组查询、多表查询_第15张图片 

 

 

你可能感兴趣的:(oracle,database)