SQL学习总结(三)

1.用select语句进行分页显示(取第5到8行)

 (1)select * from (select ename,job,sal,rownum no from emp) where no>=5 and no<=8;
 (2)相对第一种,当数据量大时,第二种效率明显高
   select * from (select ename,job,sal,rownum no from emp where rownum<=8) where no>=5 and no<=8;
 (3)用minus关键字(minus是用于两个sql语句中,显示的结果是在第二个sql语句出现的结果集但没在第1个sql语句出现的,相当于结果集相减)
     select ename,job,sal,rownum from emp where rownum<=8
     minus
     select ename,job,sal,rownum from emp where rownum<=4;
 
    有个小疑问:为什么伪例的顺序不按照原先出现的结果集顺序?
(4)绑定变量
   select * from (select ename,job,sal,rownum no from emp where rownum<=:x+3) where no>=:x;
    每次执行要绑定变量
           var x number
           exec :x :=5


2.组函数
   包括sum、max、min、avg、count这些函数
   注意:max、min、count可以是任何类型的,而avg、sum是要数值型的,日期类型的不可以。
         sum值可以忽略掉空值,没有关系,而avg的忽略掉的话就会出现问题
 select sum(comm),avg(nvl(comm,0)),count(1) from emp;

 

3.group by XX 根据XX来分组
 
   求每个部门的工资最大值
    select deptno,max(sal) from emp group by deptno; (group by deptno必须要有)

 

4.Having子句(为了限定group子句)
 下面 再加入where语句就是一条select语句完整的格式
  select deptno,avg(sal),job
  from emp
  group by deptno,job
  having avg(sal)>2000
  order by deptno;
 
5.嵌套子查询只能用在where或having后面
  查询比scott工资高的人
  select ename,sal from emp where sal>(select sal from emp where lower(ename)='scott');

 

6.几个转换大小写的关键字

   lower :全小写   upper:全大写   initcap:第1个字母大写,其他小写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值