Oracle、Mysql、Sql Server语句的区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle、Mysql、Sql Server语句的区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2039字,纯文字阅读大概需要3分钟。
内容图文
1、空值的处理——判断是否为空,为空时取一个值,不为空时取另一个值
1)、Sql Server 中
ISNULL(check_expression,replacement_value)
解释:如果check_expression值为空,则返回replacement_value,否则直接返回check_expression的值
2)、Mysql
IFNULL(expr1.expr2)
解释:如果值expr1值为空,则返回expr2,否则直接返回expr1的值
3)、Oracle
NVL(expr1,expr2) ① NVL2(expr1,expr2,expr3) ② NULLIF(expr1,expr2) ③
解释:①中如果expr1为NULL,返回expr1的值,否则返回expr2的值
②中如果expr1为NULL,返回expr3的值,否则返回expr2的值
③中如国exp1=expr2,返回NULL,否则返回expr1的值
2、分页查询
1)、Sql Server
一般比较简单的方法是通过TOP来实现,例如
SELECT TOP 10 * FROM TestTable WHERE code NOTIN ( SELECTTOP20 code FROM TestTable ORDERBY id ) ORDERBY id
这条语句,从理论上讲,整体语句的执行时间应该比子句的执行时间长,但事实相反,因为子句执行后返回的是20条记录,而整条语句仅返回10条记录,所以影响数据库响应时间最大的因素是物理I/O操作。而现在物理I/O操作此处的最有效方法之一就是使用TOP关键词。TOP关键词是SQL SERVER中经过系统优化过的一个用来提取前几条获取前几个百分比数据的词。
以上语句有一个致命的缺点,就是它含有NOT IN字样,换成NOT EXISTS,二者的执行效率时间上也没有区别。以上分页算法中,影响我们查询速度的关键因素有两点:TOP和NOT IN,TOP可以提高我们的查询速度,而NOT IN会减慢我们的查询速度,所以要提高我们整个分页算法的速度,就要彻底改造NOT IN,用其它方法来代替它。
我们知道,几乎任何字段,我们都可以通过MAX(字段)或MIN(字段)来提取某个字段中的最大值和最小值,所以如果这个字段不重复,那么就可以利用这些不重复的字段的MAX或MIN作为分水岭,使其成为分页算法中分开每页的参照物。在这里,我们就可以用操作符“>”或者“<”来完成这个使命。如:
SELECT TOP pageSize *FROM table1 WHERE id>( SELECTMAX(id) from ( SELECTTOP ((currentPage-1)*pageSize) id FROM table1 ORDERBY id ) as T ) ORDERBY id
这种方法执行多少始终没有大的降势,后劲任然很足,尤其对于数据量大的时候,该方法
执行速度一点也不会降低。使用TOP要求主键必须唯一,不能是联合主键。如果是联合主键,则查询出来的结果可能会乱序。
还有一种是使用ROW_NUMBER()函数,例如:
SELECT TOP 10 * FROM ( SELECT TOP 10 ROW_NUMBER() OVER (ORDERBY ID ) AS RowNo FROM TABLE1 ) AS A WHERE RowNo>currentPage*10
2)、Mysql
Mysql分页比较简单,直接使用LIMIT来实现,它有一个或者两个参数,第一个参数制定返回的第一行数据的所在位置,从0开始,第二个参数指定最多返回行数。例如:
SELECT * FROM table WHERE ... LIMIT 10; #返回前10行 SELECT*FROMtableWHERE ... LIMIT 0,10; #返回前10行 SELECT*FROMtableWHERE ... LIMIT 10,20; #返回10-20行数据
3)、Oracle
第一种:
select * from ( select t.*,row_number() over (orderby t1.id) rowno from TABLE1 ) where rowno between21and40;
第二种:
select * from ( select t.*,rownum as rowno from TABLE1 ) where rowno between10and20
第二种方法比较好。因为不用ORDER BY语句,会提高检索数据的速度,尤其数据量越大是,第二种方法快速检索数据越明显。
原文:http://www.cnblogs.com/caoyc/p/4242775.html
内容总结
以上是互联网集市为您收集整理的Oracle、Mysql、Sql Server语句的区别全部内容,希望文章能够帮你解决Oracle、Mysql、Sql Server语句的区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。