oracle的单行函数和聚合函数

–使用集合函数
– Union,并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序;
– Union All,全集(不去重) 对两个结果集进行并集操作,包括重复行,不进行排序 ;
– Intersect,交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
–Minus,差集(减去重复) 对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序

select * from emp where deptno = 30
Union
select * from emp where sal > 2000;
select * from emp where deptno = 30
Union All
select * from emp where sal > 2000;

–查询不存在员工的部门的部门编号

select deptno from dept
Minus
select distinct deptno from emp;

–like 模糊匹配 %任意个任意字符 _一个任意字符

select * from emp where ename like 'SMITH';  --精确匹配

–查询公司中员工姓名 以A开头的员工信息

select * from emp where ename like 'A%';

–查询公司中员工姓名 第二个字符为A的员工信息

select * from emp where ename like '_A%';

–查询公司中员工姓名 中存在%的员工 escape(‘a’); 转义字符

select * from emp where ename like '%\%%' escape('\');

–事务的提交和回滚(重要)
commit;
rollback;

–函数
–内置函数和自定义函数
–单行函数 : 一条记录返回一个结果的
–多行函数|组函数|聚合函数 : 多条记录返回一条结果的

– 当前时间

select distinct sysdate from emp;
select sysdate from dual;
select current_date from dual;

– in (值1,值2,值3…) 当对一个字段的多个值进行等值匹配,可以使用in
– 查询工资为i 1500, 2000, 2500, 5000的员工的信息

select * from emp where sal=1500 or sal=2000 or sal=2500 or sal=5000;
select * from emp where sal in (1500 ,2000 ,2500 ,5000);

–子查询
把一个查询作为另一个查询的条件

select *
  from emp
 where deptno in
       (select deptno from dept where dname in ('SALES', 'ACCOUNTING'));

–exists(结果集) 存在既保留,存在即合法
–select 数据 from 数据来源 where exists(结果集)
–从from中拿出一条数据 去where 中进行判断 ,如果exists(结果集)中有值,当前这一条就保留|满足条件,如果exists(结果集)中没有值,当前这一条就不保留
–结果:查询出所有的结果

select *
  from emp
 where exists
 (select deptno from dept where dname in ('SALES', 'ACCOUNTING'));

–结果:空的

select * from emp where exists (select * from emp where deptno = 40);

–排序: 先确定结果集然后对于结果集中的数据进行排序
–select 数据 from 数据来源 where 条件 order by 排序字段1,排序字段…; desc 降序 asc升序(默认)

-- from where select order by
select * from emp where deptno = 30 order by sal desc,empno asc;
select * from emp where deptno = 30 order by comm nulls first;  --所有的nulls值最先first|最后显示last

–组函数|聚合函数|多行函数 : 对结果集进行组函数计算
–多行记录返回一个结果
–count(条件) sum(条件) max() min() avg()
–注意: 组函数不能和非分组字段一起使用

-- 统计一下一共有多少个员工
select count(empno) from emp;
select count(deptno) from emp;
select count(*) from emp;
select count(1) from emp;  --伪列  相当于为每条数据的后面添加一个伪列字段 1

– 计算本公司每个月一共要在工资上花费多少钱(求和sum())

select sum(sal) from emp;

– 查询本公司的最高工资(max())和最低工资(min())

select max(sal) from emp;
select min(sal) from emp;

– avg 平均工资
select avg(sal) from emp;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值