所有关系型数据库都采用标准SQL语法,在使用上非常相似。但是它们毕竟是由不同的公司开发,存在一些差异也是必然的。本文,我将举例说明SQL Server数据库和Oracle数据库之间的差异。

1、前N行

SQL Server使用top关键字查询,如下

select top 5 * from emp;

Oracle使用rownum进行查询,如下

select * from emp where rownum <6;

2、字符串拼接

SQL Server使用操作符“+”完成字符串拼接,如下

select ename + ’A’ + job from emp;

Oracle使用操作符“||”完成字符串拼接,如下

select ename || ’A’  || job from emp;

3、获取系统时间

SQL Server使用函数getdate()获取系统时间,如下

select getdate()

Oracle使用函数sysdate获取系统时间,如下

select sysdate from dual;

4、空字符串

SQL Server数据库中‘’和null表示两种不同的结果,而Oracle数据库中‘’等价于null。

5、表别名

SQL Server数据库中表、列的别名可以直接空格然后命名,或者使用as关键字命名;而Oracle数据库中别名不能使用as,直接空格后命名。

6、null值排序

SQL Server数据库认为null无穷小,Oracle数据库认为null无穷大。所有SQL Server数据库中升序排序,null值的记录在最前面,而Oracle的null值记录在最后面;另Oracle数据库中提供了nulls first 和nulls last 来调整null值的排序,而SQL Server数据库中没有提供相关关键字。

7、update引起select阻塞

SQL Server数据库和Oracle数据库中默认隔离级别都是read committed。对同一条记录进行update操作,SQL Server数据库中会引起select的阻塞,而Oracle数据库不会。

8、SQL、T-SQL和PL/SQL

SQL是国际公认的关系型数据库的标准语言,几乎所有关系型数据库都采用SQL语言。

T-SQL即Transact-SQL,是SQL在SQL Server上的扩展。T-SQL提供了标准SQL的DDL和DML功能,加上延申的函数、系统预存储过程以及程序设计结构,让程序设计更由弹性。

PL/SQL(Procedural Language/SQL)是一种过程化语言,它是Oracle对SQL的扩展。PL/SQL的基本单位叫做一个区段,由3个部分组成:一个声明部分,一个可运行部分和一个异常处理部分。

9、视图定义中出现排序

Oracle数据库中允许在创建视图时按照某列进行排序,而SQL Server数据库中是不允许的,除非配合top一起使用。SQL Server数据库不支持的原因是,视图本身是虚表,排序没有任何意义,要排序也是查询时排序。但是视图查询时的排序是由局限性的,排序字段必须是视图中包含的字段。

另说明一点,如Oracle中视图里面由排序,而查询的时候又加上排序,那会不会排序两次呢?答案是不会。当视图查询中没有指定排序字段时,查询结构按照视图中定义的排序字段进行排序,而当视图查询中指定了排序字段,查询结构按照视图查询定义的排序字段查询,因此不会出现两场排序。

10、对视图非键值保存表的更新

对多表关联的视图进行update操作,Oracle数据库比较严格,只能更新键值保存表的列,而SQL Server比较宽松,可以更新非键值保存表对应的列。

11、内联视图

有时候,我们需要将一个查询结果作为一个整体供再次查询使用,这种情况下第一次查询结果非常类似要给视图,我们称为内联视图。Oracle数据库中可以直接放到from后进行查询操作,如下

select * from (select * from emp)

而SQL Server数据库中不允许这样,但是可以通过别名处理,如下

select * from (select * from emp) as a

12、关联表删除

SQL Server数据库中可以通过关联查询,删除其中一张表中的记录,即多表from删除。如下

delete from emp_bak from emp_bak,emp where emp_bak.empno = emp.empno

而Oracle数据库中是不允许,但是可以exists关键字实现,如下

delete from emp_bak where exists(select * from emp where emp_bak.empno = emp.empno)

关联表更新也是类似的操作。

SQL Server和Oracle的差异相关推荐

  1. 工具:SQL Server和Oracle数据类型比对

    今天在用Kettle做数据迁移的时候遇到一个问题,通过Kettle把从SQL Server的源数据导入到Oracle数据库中出现很多问题,也就是因为表信息不一致造成数据无法导入.源数据库SQL Ser ...

  2. SQL Server 与 ORACLE 的区别

    sql server 与  oracle的区别:    DBMS 数据库管理系统 1.数据类型不同.   sql server 的数据类型:int ,smallint ,char,varchar,nc ...

  3. sql server转oracle需要注意的几点

    sql server转oracle需要注意的几点 1.  字符型的字段相加需要用"||",如果用"+"的话,会报"无效的数字"的错误. 2. ...

  4. C#连接4种类型数据库(Access、SQL Server、Oracle、MySQL)

    C#连接4种类型数据库(Access.SQL Server.Oracle.MySQL) 1.C#连接连接Access using System.Data; using System.Data.OleD ...

  5. sql server配置连接oracle数据库,MS SQL Server连接Oracle

    MS SQL Server连接Oracle 1.  安装oracle 10G客户端 要访问oracle数据库必须安装oracle客户端.安装oracle客户端有两种方式,即完整安装和立即安装,这两种方 ...

  6. SQL Server与Oracle、DB2三种数据库比较

    开发数据库应用,选择一个好的数据库是非常重要的.本文从一些方面比较了SQL Server与Oracle.DB2三种数据库,为你选择数据库提供一些参考. 开放性 SQL Server 只能在Window ...

  7. sql查询oracle数据,sql-server – 从SQL Server查询Oracle数据库

    我有一个Oracle 11g XE数据库,我想将其转移到SQL Server Express 2005中. 起初我以为我只是在Oracle中生成表作为SQL,操纵数据格式,并在SQL Server中运 ...

  8. oracle+循环插入sql,SQL server,Oracle循环插入百万数据

    SQL server,Oracle循环插入百万数据 SQL server,Oracle循环插入百万数据 压测时常需要往数据库插入大量数据,下面是我往两个数据库插入数据时用的脚本 declare @ma ...

  9. Sql Server和oracle的函数区别总结

    最近要对之前的项目从Sql Server数据库转化为Oracle数据库,期间遇到的一些问题总结一下: S代表SQL Server,O代表Oracle 1.取当前系统时间 S:Select Getdat ...

最新文章

  1. 阿里云linux CentOS6.5(nginx+PHP-fpm)及RDS初级使用指南和简单安全设置
  2. html5 游戏前景怎么样,独家 HTML5游戏目前究竟怎么样?看完这篇文章,你或许会清晰很多...
  3. HDU 4502 吉哥系列故事——临时工计划(动态规划)
  4. 软件测试技术qtp,51Testing独家连载:(四十一)精通QTP——自动化测试技术领航
  5. 机器人 瓷砖墙面清洗_墙壁清洁机器人解析
  6. linux: chmod,chown命令详解
  7. 95-290-055-源码-内存管理-HybridMemorySegment
  8. LeetCode(595)——大的国家(MySQL)
  9. Element UI 官网以及其他技术文档
  10. matlab simulink 汽车制动纵向动力学建模
  11. PS去除图片和PDF中的水印
  12. 工业软件研究框架_【软件开发】工业软件相关学习信息
  13. Cisco 防火墙 SSH配置
  14. 完整的连接器设计手册_工业连接器如何选型
  15. opencv鱼眼相机模型详解
  16. 路由器和计算机的功能有何不同,网关和路由器的区别是什么 两者又有什么不同...
  17. C语言使用openssl库解析TLS报文(SNI和证书)
  18. 【转】江枫:在ubuntu10.04上安装oracle 10g(学习一下)
  19. Fabric.js 上划线、中划线(删除线)、下划线
  20. 电信、网通、铁通各地DNS

热门文章

  1. Java界面排号系统_【前端系统】javaweb技术的医院门诊在线预约及排号管理系统的实现...
  2. html与js二级菜单横排,JavaScript实现横向滑出的多级菜单效果
  3. asp.net怎么实现按条件查询_Display Posts : 按条件显示WordPress文章的最强插件
  4. android os跑电量咋关,android 优化耗电量
  5. 新春牛年迎春PSD分层模板!最全设计素材都在这了
  6. 在集设把优秀的设计合集,轻松追寻设计灵感
  7. C4D电商促销活动背景素材|设计提升,只差一个背景
  8. 最佳展示场景kit:顶部视角的展示场景(Mockups)
  9. ddx_check绑定注意事项
  10. 2048小游戏设计思路