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

被折叠的 条评论
为什么被折叠?



