oracle count+分页

本文详细介绍了SQL中的count函数的不同使用方式及其性能差异,探讨了分页查询的两种常见实现方法,并解析了INTERSECT、MINUS关键字的功能及NVL、NVL2、DECODE函数的应用场景。

1.count() 和 count(1)和count(列名)区别
执行效果上:
count(
)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL
count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL
count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。

执行效率上:  
    列名为主键,count(列名)会比count(1)快  
    列名不为主键,count(1)会比count(列名)快  
    如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*)  
    如果有主键,则 select count(主键)的执行效率是最优的  
    如果表只有一个字段,则 select count(*)最优。

2.分页查询的两种方式
1.先查到所有信息的结果集并命名为A,
2.然后查询rownum<=10的所有信息,和rownum并且重命名为rn
3.查询rn<=5
select * from (select A.*,rownum rn from (select * from emp)A where rownum<=10) where rn>=5

    1.先查到所有信息的结果集并命名为A,
    2.然后在A里面查询A里面的所有信息(A.)查询A.的同时查询rownum重命名为rn,,
    3.查询rn>=4 and rn<=10
        select * from (select A.* ,rownum rn from(select * from emp)A) where rn>=4 and rn<=10;

3.INTERSECT关键字
和 UNION 指令类似,INTERSECT 也是对两个 SQL 语句所产生的结果做处理的。不同的地方是, UNION 基本上是一个 OR (如果这个值存在于第一句或是第二句,它就会被选出),而 INTERSECT 则比较像 AND ( 这个值要存在于第一句和第二句才会被选出)。UNION 是并集,而 INTERSECT 是交集

4.MINUS关键字
   SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果 中。如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内

5.NVL函数的格式如下:NVL(expr1,expr2)
含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数.

6.NVL2函数的格式如下:NVL2(expr1,expr2, expr3)
含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。

7.decode(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)的理解如下:
查询性别,1显示男,0显示女 空或和其他值显示未知

   select t.user,t.username,decode(t.gender,1,0,"女",“未知”) gender from usertable t
        if (条件==值1)
            then    
            return(翻译值1)
        els if (条件==值2)
            then    
            return(翻译值2)    
        ......
        els if (条件==值n)
            then    
            return(翻译值n)
        else    
            return(缺省值)
        end if

注:其中缺省值可以是你要选择的column name 本身,也可以是你想定义的其他值,比如Other等;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值