oracle学习笔记

发布 2021-05-11 22:49:28 阅读 1446

实例是基于oracle下hr用户下的表进行的!

1:(+外连接

查询所有员工和相对应的部门,(有的员工没有部门,所以就不能用等值连接了!)

'+'号的位置是,哪个表中的数据少,+号就写在**!

select 员工名称 , 部门名称 from employees e ,departments d where

2:(h**ing)统计函数中h**ing的用法。 百科关于h**ing的介绍:

统计所有员工所在的部门包含员工的数据,并取得部门员工数大于6的部门编号。

如果在分组统计的情况下还需要对分组后的数据进行再次过滤那么需要用到h**ing字句,实例如下。

1):select c from employees e group by

2):select c from employees e h**ing count(*)6 group by

执行结果如下图:

3:merge的用法(语法示例,没办法直接运行sql),从每日销售表里取得数据去更新每月销售表。如果匹配到数据则更新月度销售表里的销售数量,如果匹配不到,则在月份统计表中新加入一条记录!

merge into month_sales

using (select tyear,tmonth,itemid,sum(itemnum) salnum

from day_sales

group by tyear,tmonth,itemid) a

on (month_ and month_ =and month_

when matched then

update set

month_ =

when not matched then

insert (tyear,tmount ,itemid,itemnum)

values (

4:(union,union all,intersect,minus)集合操作,取交集,并集,差集!

union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

select * from employees e where rownum<10

unionselect * from employees e where rownum<5

union all,对两个结果集进行并集操作,包括重复行,不进行排序;

select * from employees e where rownum<10

union all

select * from employees e where rownum<5

intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

select * from employees e where rownum<10

intersect

select * from employees e where rownum<5

minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。规则是第一个集合减第二个集合,并且第一个集合一定得完全包括第二个集合,就是说第一个集合必须是第二个集合的父集合!

select * from employees e where rownum<10

minusselect * from employees e where rownum<5

5:树查询--自身关联查询,其中level是表示显示层级。关于此类查询的帖子。

向下查询所有子节点,关键语法标红

显示层级开始查询的条件查询遍历自身id=父节点id

select from employees estart with connect by prior

向上查询所有父节点父节点id=自身id

select from employees e start with connect by prior

6:rollup() 给分组统计加入按照分组的字段进行排序并加上统计总数的效果。用法为 rollup(分组的字段)

例子为根据部门统计用户数量。

第二章图中,在分组统计的末尾又加了一行,数据为所有统计数量的总和,并根据department_id 进行了升序排列。

select from employees e group by

select from employees e group by rollup(

7:over(),使得聚合函数可以分布在每一行数据里 ,其中round()函数为四舍五入。

例子:查看姓名,薪水,平均薪水,个人和平均薪水的差额。

select round(**g( 平均 , round(**g( 差额 from employees e

例子:查看姓名,薪水,部门编号,部门平均薪水,公司平均薪水。

关键:**g( over(partition by order by desc))

按照部门统计平均薪资并按照个人当前薪资倒序排列数据。

select 姓名, 薪水, 部门编号,round(**g( over(partition by order by desc)) 部门平均并内部降序,round(**g( over())公司平均。

from employees e

8: 行转列 ,在system用户下测试help表成功。

对象权限 : grant select on to system;

select from help h

select from help e group by

9:decode()函数,逻辑判断函数,示例为判断status的状态,然后返对应显示的字符串。

select decode(status, 0, 'ready', 如果struts==0,显示'ready'

1, 'wait', 如果struts==1,显示'wait'

'dot')-如果都不匹配,默认显示'dot'

ORACLE学习笔记

rac real application clusters 真实应用集群。ohs oracle http server sga system global area 系统全局区,是系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。实例 存取和控制数据数...

Oracle学习笔记

参数文件 记录了控制文件的位置,控制文件是一个非常小的二进制文件,最大。可以增长到 64mb,控制文件包括如下主要信息 数据库的名字,检查点信息,数据库创建的时间戳 所有的数据文件,联机日志文件,归档日志文件信息 备份信息等 有了这些信息,oracle 就知道那些文件是数据文件,现在的重做日志文件是...

ORACLE学习笔记

目录。oracla管理 1 1.登录sqlplus 1 1.1.sysdba 身份登陆 1 1.2.普通用户登陆sqlplus 1 2.常用命令 1 3.格式化提示符 2 4.查看系统状态 2 4.1.查看实例状态 2 4.2.查看表 2 5.关闭 启动 2 6.创建表空间 3 7.用户和权限 3 ...