SQL server与Oracle开发比较
本文档主要从oracle与sql server语法上进行差异性比较,诸如两者在管理,性能,优化等方面的差异不作比较。
●概念上区别
1.Oracle是一种对象关系数据库管理系统(ORDBMS),而Sql server只是关系型数据库管理系统(RDBMS).
2.Oracle使用Internet文件系统,该系统基于Java的应用程序,可以使数据库基于成为Internet的开发平台;Sql server是基于windows
3.Orace主要的三类文件是:数据文件,控制文件,恢复日志文件
Sql server:主要数据文件(必须有且只能有一个),次要数据文件以及日志文件
4.两者支持的命令类别差不多,数据定义语言,数据操纵语言,事务处理控制语言,
数据控制语言.在Oracle中,在事务控制语言中除了commit,rollback等还多了一个Savepoint,设置保存点。
Ms sql的扩展叫Transact-SQL,主要的结构化查询工具就是自带的查询分析器
6.主要数据类型
Orace:主要支持char,varchar2,long,number,datetime,raw,long raw,clob,blob,bfie
前面三个是Character数据类型,varchar2支持可变长度的字符串,long支持可
变长度的字符数据,raw,long raw用于存储二进制数据,long raw可变长度
最后三个是大对象(lob)数据类型,存储非结构化的信息,例如声音剪辑,视频文件CLOG表示Character Lob,可以存储大量的字符数据,它对于存储非结构化的XML
文档非常有用。BLOG表示Binary LOG,此数据类型可以存储大型二进制对象,如
图形、视频剪辑,声音文件等
支不支持,money,货币
Sql server主要支持的文本类型char,varchar,nchar,nvarchar,text,ntext,image,货币类型Money,二进制binary,varbinary等等
●开发语法
A.SQL语法
两者的SQL语法基本上是相同的,只是一些细节方面的问题
一:表的管理:修改表的结构,如增加,删除列,創建表
修改表
1.修改表的列的數據類型,大小的定義不同,如下面修改數據類型。
Ms sql是ALTER TABLE table_name ALTER COLUMN col DECIMAL(5,2)
Oracle是Alter TABLE table_name modify(col decimal(5,2))
2.增加和刪除表的列,兩者是相同的
Alter tabe table_name add(col definition)
Alter tabe table_name drop column col_name
oracle decimal类型
3.Oracle如果不要用某列,然後又不想刪除,就可以将某个列标记为未用
Alter tabe table_name set unused(tel_no)
.创建临时表
Oracle的語法是:
Create global temporary table aa(col number)on commit preserve rows;
临时表只在用户会话时存在的表,或其数据在用户事务处理期间可
持续存在的表,创建临时表时可以指定该表是否应当在用户会话
期间持续存在(使用on commit preserve rows)
On commit delete rows表示事务处理完成后删除它的行
Ms sql的語法是:
Select*into#temptable from existedtable
二查询方面:
1.查表的前N行记录
oracle是用rownum如select*from table_name where rownum<n
Ms sql是用top如select top n*from table_name
2.查詢表的結構
Orace可以通過desc来查看表的结构语法是:desc table_name
或者使用数据字典表user_tab_coumns也可以查看到
Select column_name,data_type from user_tab_coumns
Where table_name=''
Ms sql可以通過一些系統的存儲過程來看表的結構
語法是:exec sp_help table_name
3.将一个表的数据添加到另外一个表中
a.新表存在前提下:兩者語法是一樣的,如
insert into newtable(col1)select col1from old_table
b.新表不存在前提下,可以用
oracle可以用Create tabe new_table_name as select*from old_table ms sql可以用Select*into new_table from old_table
三操作符
1.連接操作符
Oracle是‘||’;Ms sql是‘+’
2.Oracle的比较操作符中不等于除了'<>'之外,还有一个'!='
3.算术操作符,都是+-*/;逻辑操作符都是and,not,or(相同點)
Intersect是仅返回两个查询都有行,minus返回第一个查询有第
二个查询没有的行
四函數
1.轉換函數
Oracle中有to_char(),to_date(),to_number()
Ms sql中有cast,convert
2.系统日期:
Oracle:sysdate
Ms sql:getdate()
Select sysdate from dual一定要from子句
Select getdate()不一定要from子句
3.Decode函数相当if else,或者ms中的case语句
语法是decode(value,if1,then1,)
如decode(col1,'1','true','0','fase')
4.常规函数
Nvl语法是NVL(EXP1,EXP2)表示如果ex1为空则返回ex2
Nvl2语法是nvl(exp1,exp2,exp3)表示如果ex1为空,则返回ex3,否则返回ex2

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。