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 NOT IN (
SELECT TOP 20 code FROM TestTable ORDER BY id
) ORDER BY 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>(
SELECT MAX(id) from (
SELECT TOP ((currentPage-1)*pageSize) id FROM table1 ORDER BY id
) as T
) ORDER BY id

  这种方法执行多少始终没有大的降势,后劲任然很足,尤其对于数据量大的时候,该方法

执行速度一点也不会降低。使用TOP要求主键必须唯一,不能是联合主键。如果是联合主键,则查询出来的结果可能会乱序。

还有一种是使用ROW_NUMBER()函数,例如:

SELECT TOP 10 * FROM (
SELECT TOP 10 ROW_NUMBER() OVER (ORDER BY ID ) AS RowNo FROM TABLE1
) AS A WHERE RowNo>currentPage*10

2)、Mysql

  Mysql分页比较简单,直接使用LIMIT来实现,它有一个或者两个参数,第一个参数制定返回的第一行数据的所在位置,从0开始,第二个参数指定最多返回行数。例如:

SELECT * FROM table WHERE ... LIMIT 10;          #返回前10行
SELECT * FROM table WHERE ... LIMIT 0,10; #返回前10行
SELECT * FROM table WHERE ... LIMIT 10,20; #返回10-20行数据

3)、Oracle

  第一种:

select * from(
select t.*,row_number() over (order by t1.id) rowno from TABLE1
) where rowno between 21 and 40;

第二种:

select * from(
select t.*,rownum as rowno from TABLE1
) where rowno between 10 and 20

  第二种方法比较好。因为不用ORDER BY语句,会提高检索数据的速度,尤其数据量越大是,第二种方法快速检索数据越明显。

Oracle、Mysql、Sql Server语句的区别的更多相关文章

  1. oracle跟SQL Server 2005 的区别

    Oracle与Sql server的区别   一直搞不明白Oracle数据库和sql server的区别,今天我特意查资料把他们的区别整理出来 Oracle数据库:Oracle Database,又名 ...

  2. mysql、oracle和SQL server数据库的区别

    1.总体对比. SQL,在这里我理解成SQL Server.三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性.排行第四的DB2(属IBM公司),与Oracle的定位和架构非常相 ...

  3. 不同数据库oracle mysql SQL Server DB2 infomix sybase分页查询语句

    在不同数据库中的使用的分页查询语句: 当前页:currentpage 页大小:pagesize 1. Oracle数据库 select * from (select A.*,rownum rn fro ...

  4. oracle,mysql,sql server三大数据库的事务隔离级别查看方法

    1:mysql的事务隔离级别查看方法 mysql 最简单,执行这条语句就行:select @@tx_isolation  详情: 1.查看当前会话隔离级别 select @@tx_isolation; ...

  5. Oracle,Mysql ,SQL Server 三大数据库带参数的模糊查询, 拼接查询条件问题

    最近项目开发一直在不断切换数据库,有时候一条sql 要同时考虑多种数据库中的兼容问题 , 先总结一条模糊查询拼接查询条件的问题,后续追加总结. 目前使用   mybatis: 1. Oracle 中使 ...

  6. 如何连接oracle,mysql, SQL Server数据库(Java版)

    先添加上连接oracle,MySQL的驱动路径和数据库连接URL: MySQL: final String DBDRIVER = "org.gjt.mm.mysql.Driver" ...

  7. Oracle 和SQL Server 中的SQL语句使用区别

    最近开始接触Oracle,想要了解下同SQL Server使用时的区别.搜寻网上信息找到具体区别分类如下: 一.数据类型比较 类型名称 Oracle SQLServer 比较  字符数据类型  CHA ...

  8. MySQL、Oracle和SQL Server的分页查询语句

    假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...

  9. 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析

    对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...

随机推荐

  1. JQuery Ajax 的简单使用

    简单判断用户名存在不存在,如果数据库存在此用户名,提示不能注册 前台代码如下: <!DOCTYPE html> <html lang="en"> <h ...

  2. JavaScript基础知识点

    本书目录 第一章:  JavaScript语言基础 第二章:  JavaScript内置对象第三章:  窗口window对象第四章:  文档document对象第五章:  表单form对象第六章:   ...

  3. 使用Nexus搭建Maven私服

    1.    环境搭建 1.1  下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件--免费] NE ...

  4. Docker-网络基础配置

    从外部访问容器 指定容器端口随机映射主机端口 [root@wls12c /]$ docker run -p -d --name web tomcat /bin/bash -c /root/apache ...

  5. 【Todo】Java要学的一些比较好的框架和系统

    commons-pool apache的通用线程池 可以看看这篇文章:<使用common-pool实现的一个简单的线程池> Jmeter 性能测试 Squid Link

  6. Xcode好用的插件

    注释:每当Xcode升级之后,都会导致原有的Xcode插件不能使用,这是因为每个插件的Info.plist中记录了该插件兼容Xcode版本的DVTPlugInCompatibilityUUID,而每个 ...

  7. iOS开发之 xcode6 APP 打包提交审核详细步骤

    一. 在xcode6.1和ios10.10.1环境下实现app发布 http://blog.csdn.net/mad1989/article/details/8167529 http://jingya ...

  8. iOS开发 仿淘宝,京东商品详情3D动画

    - (void)show { [[UIApplication sharedApplication].windows[0] addSubview:self.projectView]; CGRect fr ...

  9. MySQL OCP 考试,一个不错的网站

    http://www.aiotestking.com/oracle/category/exam-1z0-883-mysql-5-6-database-administrator/page/10/ 里面 ...

  10. C#高级知识点概要(2) - 线程和并发

    原文地址:http://www.cnblogs.com/Leo_wl/p/4192935.html 我也想过跳过C#高级知识点概要直接讲MVC,但经过前思后想,还是觉得有必要讲的.我希望通过自己的经验 ...