Oracle与sql区别
一,字串连接
Oracle使用两个竖线符号(||)来作为字串连接操作符,而SQL Server则使用加号(+)。
二,模式匹配
SQL Server的LIKE关键字提供了有用的通配符搜索功能,这个功能在Oracle中不支持
除了所有的RDBMS都支持的(%)和(_)通配符以外,SQL Server还支持([])和([^])通配符。
([])字符用来查询在一个范围内的所有单个字符。例如,如果你需要查询包含一个从a到f的字符的数据,
三,性能
SQL多用户时性能不佳,Oracle在所有的数据库中性能最高,在多用户性能也
很强大,执行查询速度也非常快,
四,游标的区别
Oracle在使用SELECT语句时总是需要游标,不管从数据库中请求多少行。在Microsoft SQL Server,SELECT语句并不把在返回客户的行上附加游标作为缺省的结果集合。这是一种返回数据给客户应用程序的有效的方法。SQL Server为游标函数提供了两种接口。当在Transact-SQL批处理或者存储过程中使用游标的时候,SQL语句可用来声明、
打开、和从游标中抽取,就像定位更新和删除一样。当使用来自DB-Library、ODBC、或者OLEDB程序的游标时,SQL Server,显式的调用内建的服务器函数来更有效的处理游标。
当从Oracle输入一个PL/SQL过程时,首先判断是否需要在Transact-SQL中采用游标来实现同样的功能。如果游标仅仅返回,组行给客户程序,就使用非游标的
SELECT语句来返回缺省的结果集合。如果游标用来从行中一次取得一个数据给本地过程变量,你就必须在Transact-SQL中使用游标。
五,语句块
Oracle PL/SQL和Microsoft SQL Server Transact-SQL都支持用BEGIN…END术语来标记语句块。Transact-SQL不需要在DECLARE语句后使用一个语句块。
如果在Microsoft SQL Server中的IF语句和WHILE循环中有多于一个语句被执行,则需要使用BEGIN…
END语句块。
oracle游标的使用六,赋值方式及定义变量
在oracle中给变量赋值可以是:=,而在sql中只能是=,在sql中定义变量是都需要在变量前面加上@,而在oracle中则不需要,在sql中给变量赋值的两种方式中,赋定值是需要在前面加上set,赋动态值时则需要使用select,而在oracle中赋定值不需要在前面加上set,给动态变量赋值则是select值into变量。
七,语法的区别
在sql中循环语句就只有while而在sql中除了有while外,则还有for,而在使用if条件的用法上也有区别,在sql中if的语法跟在c#语言中的语法很接近,而在oracle中if的语法则跟vb语言的语法很接近。
八,表分区
在sql中不支持表分区,而在oracle中则支持表分区。
九,锁
在sql中没有提出锁的问题,而在oracle中则有明显的解释及用法,在sql中当我们做更新,插入及删除时不需要我们来提交,系统会自动帮我们提交,而在oracle 中也需要我们自己来提交。
十,安全性
在安全性方面oracle支持多种授权方式,可以对表设置多种权限,而sql则不支持这样的功能。
十一,建库的区别
在sql中想创建数据库的语法是create database数据库名字,而在oracle中则没有database,而有tablespace,就是在oracle中tablespace相当于sql中的database。
十一,实例管理
Oracle的实例一次只能管理一个数据库,数据库在集环境下可由多个实例管理。而SQL Server单个实例一次能管理多个数据库。Oracle数据库存储方式有OS文件、裸分区、ASM等,SQL Server的数据库存储只能是系统文件。
十二,会话方式
Oracle为客户端开启会话有两种方式:共享服务和专用服务。在专用服务情况下,为连接请求创建新进程(Unix环境下是Process,Windows下我想应该是Thread 吧);共享服务情况下,将客户请求交给Dispatcher,由Dispatcher安排多客户的作业。SQL Server在默认情况下自动为客户端连接创建线程,当有非常多的客户连接时,SQL Server可以使用线程池管理多会话,这类似于Oracle的共享服务。
十三,数据库类型
Sql是一种关系型数据库,而oracle则既是一种关系型数据库,也是一种面向对象的数据库。
十四,同义词:
SQL中使用的是别名,没有专用的名词--同义词,在SQL中可以给语句创建别名,或者给表、视图创建别名等等。但当用别名给表删除数据的时候,可以删除表中的数据。create or replace view v_sel as a;而Orcale中使用同义词,就相当于给表、视图、序列、存储过程与函数、包、实体化视图或其他同义词创建的别名。但删除同义词的时候,不能删除表里面的数据。
create or replace synonym non_ss for shopping;