ORACLE与SQL SERVER语法区别
一、数据类型
ORACLE与SQL SERVER在数据类型的对比如下:
|
SQL SERVER |
ORACLE |
|
|
数字类型 |
DECIMAL[(P[, S])] |
NUMBER[(P[, S])] |
|
NUMERIC[(P[, S])] |
NUMBER[(P[, S])] |
|
|
FLOAT[(N)] |
NUMBER[(N)] |
|
|
INT |
NUMBER |
|
|
SMALLINT |
NUMBER |
|
|
TINYINT |
NUMBER |
|
|
MONEY |
NUMBER[19,4] |
|
|
SMALLMONEY |
NUMBER[19,4] |
|
|
字符类型 |
CHAR[(N)] |
CHAR[(N)] |
|
VARCHAR[(N)] |
VARCHAR2[(N)] |
|
|
日期时间类型 |
DATETIME |
DATE |
|
SMALLDATETIME |
DATE |
|
|
其它 |
TEXT |
CLOB |
|
IMAGE |
BLOB |
|
|
BIT |
NUMBER(1) |
二、表(主键、外键、CHECK、UNIQUE、DEFAULT、INDEX)
在创建表及其主键、外键、CHECK、UNIQUE、DEFAULT、INDEX时,SQL SERVER 与ORACLE的语法大致相同。主要区别如下:
(1) Oracle定义表字段的default属性紧跟字段类型之后,如下:
Create table MZ_Ghxx
( ghlxh number primay key ,
rq date default sysdate not null,
….
)
而不能写成
Create table MZ_Ghxx
( ghlxh number primay key ,
rq date not null default sysdate,
….
)
三、存储过程/函数
过程与函数的区别
函数可以返回一个值给调用环境;而过程不能,过程只能通过返回参数(带“OUT”或“IN OUT”)传回去数据。
SQLSERVER中存储过程的结构大致如下
CREATE PROCEDURE procedure_name
/*输入、输出参数的声明部分*/
AS
DECLARE
/*局部变量的声明部分*/
BEGIN
/*主体SQL语句部分*/
/*游标声明、使用语句在此部分*/
END
ORACLE中存储过程的结构大致如下
CREATE OR REPLACE PROCEDURE procedure_name
( /*输入、输出参数的声明部分*/ )
AS
/*局部变量、游标等的声明部分*/
BEGIN
/*主体SQL语句部分*/
/*游标使用语句在此部分*/
EXCEPTION
/*异常处理部分*/
END ;
ORACLE端FUNCTION语法说明
CREATE [OR REPLACE] FUNCTION function_name
[(argument [{IN | OUT | IN OUT }] ) type,
…
[(argument [{IN | OUT | IN OUT }] ) type
RETURN return_type {IS | AS}
BEGIN
…
END;
四、变量赋值
在SQL SERVER语句中用如下语句对局部变量赋值(初始值或
数据库表的字段值或表达式):
“SELECT 局部变量名 = 所赋值(初始值或数据库表的字段值或表达式)”;
而在ORACLE中,将初始值赋给局部变量时,用如下语句:
“局部变量名 : = 所赋值(初始值或表达式);” ,
将检索出的字段值赋给局部变量时,用如下语句:
“SELECT 数据库表的字段值 INTO 局部变量名 …” 。
五、常用函数比较(以下的exp为expression的缩写)
|
Sql server |
orcale |
|
|
字符类函数 |
||
|
Ascii(char_exp) |
Ascii(str_exp) |
|
|
Char(int_exp) |
Chr(int_exp) |
|
|
Datalength(char_exp) |
Length(str_exp) |
|
|
Substring(exp, start, length) |
Substr(exp, start, length) |
|
|
Upper(char_exp) |
Upper(str_exp) |
|
|
Lower(char_exp) |
Lower(str_exp) |
|
|
Stuff(char_exp1,start,length, Char_exp2) |
Translate(str_exp,from_str,to_str) |
|
|
Ltrim(char_exp) |
Ltrim(str_exp1 [,str_exp2]) |
|
|
Rtrim(char_exp) |
Rtrim(str_exp1 [,str_exp2]) |
|
|
日期类函数 |
||
|
Getdate() |
Sysdate |
|
|
数学类函数 |
||
|
Abs(numeric_exp) |
Abs(number_exp) |
|
|
Ceiling(numeric_exp) |
Ceil(number_exp) |
|
|
Exp(float_exp) |
Exp(number_exp) |
|
|
Floor(numeric_exp) |
Floor(number_exp) |
|
|
Power(numeric_exp,int_exp) |
Power(number_exp1,number_exp2) |
|
|
Round(numeric_exp,int_exp) |
Round(number_exp1 [,number_exp2]) |
|
|
Sign(int_exp) |
Sign(number_exp) |
|
|
Sqrt(float_exp) |
Sqrt(number_exp) |
|
|
转换函数 |
||
|
Convert(datatype[(length)],exp,format) |
To_char(datatype,str_format) |
|
|
Convert(datatype[(length)],exp,format)s |
To_date(str_exp,date_format) |
|
|
Convert(datatype[(length)],exp,format) |
To_number(str_exp,num_format) |
|
|
其它函数 |
||
|
AVG([ALL | DISTINCT] col) |
AVG([ALL | DISTINCT] col) |
|
|
COUNT({[ALL | DISTINCT] col] | *}) |
COUNT({[ALL | DISTINCT] col} | *)) |
|
|
MAX([ALL | DISTINCT] col) |
MAX([ALL | DISTINCT] col) |
|
|
MIN([ALL | DISTINCT] col) |
MIN([ALL | DISTINCT] col) |
|
|
SUM([ALL | DISTINCT] col) |
SUM([ALL | DISTINCT] col) |
|
|
STDEV(col) |
STDDEV(col) |
|
|
VAR(col) |
VARIANCE(col) |
|
|
ISNULL(check_exp, replace_value) |
NVL(check_exp, replace_value) |
|
|
CASE |
DECCODE |
|
ORACLE与SQL SERVER语法区别的更多相关文章
- Oracle与Sql server的区别
一直搞不明白Oracle数据库和sql server的区别,今天我特意查资料把他们的区别整理出来 Oracle数据库:Oracle Database,又名Oracle RDBMS,或简称Oracle. ...
- oracle和sql server的区别(1)
A.instance和database 1.从oracle的角度来说,每个instance对应一个database.有时候多个instance对应一个database(比如rac环境).有自己的Sys ...
- oracle跟SQL Server 2005 的区别
Oracle与Sql server的区别 一直搞不明白Oracle数据库和sql server的区别,今天我特意查资料把他们的区别整理出来 Oracle数据库:Oracle Database,又名 ...
- Oracle 和SQL Server 中的SQL语句使用区别
最近开始接触Oracle,想要了解下同SQL Server使用时的区别.搜寻网上信息找到具体区别分类如下: 一.数据类型比较 类型名称 Oracle SQLServer 比较 字符数据类型 CHA ...
- Oracle与SQL Server等数据库的区别
Oracle与SQL Server等数据库的区别 在Oracle中提倡使用一个连接 Oracle处理多个并发语句使用一个连接,大大提升系统能支持的并发量 Oracle运行在32为单进程平台上SGA和P ...
- Oracle与SQL Server事务处理的比较
事务处理是所有大型数据库产品的一个关键问题,各数据库厂商都在这个方面花费了很大精力,不同的事务处理方式会导致数据库性能和功能上的巨大差异.事务处理也是数据库管理员与数据库应用程序开发人员必须深刻理解的 ...
- Access、SQLServer、Oracle常见SQL语句应用区别
Access.SQLServer.Oracle常见SQL语句应用区别 关劲松 PMP 如果要兼容Access.SQL Server.Oracle三个数据库版本:我们在编写SQL语句的过程中,尽量使用一 ...
- 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析
对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...
- Oracle与SQL SERVER编程差异分析(入门)
网上有关Oracle与SQL SERVER性能差异的文章很多,结论往往是让你根据数据量与预算来选择数据库.但实际项目中,特别是使用 .Net 开发的系统,支持以上两种数据库或者更多已经成为Boss的普 ...
随机推荐
- python-day21--序列化模块模块
什么叫序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化 序列化的目的: 1.以某种存储形式使自定义对象持久化: 2.将对象从一个地方传递到另一个地方. 3.使程序更具维护性. ...
- 用DFS 解决全排列问题的思想详解
首先考虑一道奥数题目: □□□ + □□□ = □□□,要将数字1~9分别填入9个□中,使得等式成立.例如173+286 = 459.请输出所有合理的组合的个数. 我们或许可以枚举每一位上所有的数,然 ...
- 双机热备(准)-->RAC(夭折)-->DG(异地容灾)
以下有的地方为oracle专业术语,非懂勿喷.前段时间某项目负责人告知,他们应用需要一套oracle数据库环境运行模式为双机热备.简单了解下对于现在已经非常成熟的RAC再合适不过了.详细问了问当前服务 ...
- golang channel本质——共享内存
channel是golang中很重要的概念,配合goroutine是golang能够方便实现并发编程的关键.channel其实就是传统语言的阻塞消息队列,可以用来做不同goroutine之间的消息传递 ...
- PHP:第一章——PHP中的位运算
//位运算: /*$a & $b;//And(按位与).$a和$b都为1的被设为1: $a | $b;//(按位或).$a和$b任何一个为1的位被设为1 $a ^ $b;//Xor(按位异或) ...
- html <table>标签信息
table的属性 border pixcels 规定表格边框的宽度 cellpadding picels/% 规定单元格边沿与内容之间的空白 cellspacing picels/% 规定表格以及单元 ...
- canvas环形进度条
<style> canvas { border: 1px solid red; margin: 100px; }</style> <canvas id="rin ...
- call、apply的应用
call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来 ...
- 使用MyEclipse开发Java EE应用:EJB项目开发初探(下)
你开学,我放价!MyEclipse线上狂欢继续!火热开启中>> [MyEclipse最新版下载] 三.EJB 3.x项目中的持久性支持 当创建EJB 3.x项目时,作为选项您可以添加JPA ...
- DevExpress v17.2新版亮点—WinForms篇(一)
用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.开篇介绍了DevExpress WinForms v17.2 Data Grid Control ...