Oracle与SQL Server数据库的语法区别
沉沙 2018-05-09 来源 : 阅读 4267 评论 0

摘要:Oracle与SQL Server数据库是两个常用的数据库,本文主要讲了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


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多数据库知识请关注SQL Server频道!


本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 8 不喜欢 | 1
看完这篇文章有何感觉?已经有9人表态,89%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程