主流数据库的SQL语法差异分析

主流数据库系统支持的SQL语句的差异主要有以下几点:数据类型的差异;运算符的差异;函数的差 异;常用SQL的差异;取元数据信息的差异。

1.1.1数据类型的差异

整数类型:在MYSQL中 整数相关的类型有tinyint、smallint、mediumint、int、integer和bigint;在MSSQLServer中整数相关 的类型有bit、int、smallint、tinyint和bigint;在Oracle中整数相关的类型有number;在DB2中整数 相关的类型有smallint、integer和bigint。

数值类型:在MYSQL中数值相关的类型有float、 double、real、decimal和numeric;在MSSQLServer中数值相关的类型有decimal、numeric、money、 smallmoney、float和real;在Oracle中数值相关的类型有number;在DB2中数值相关的类型有decimal、 numeric、real和double。

字符类型:在MYSQL中字符相关的类型有char、varchar、tinytext、 text、mediumtext、longtext、enum和set;在MSSQLServer中字符相关的类型有char、varchar、text、 nchar、nvarchar和ntext;在Oracle中字符相关的类型有char、varchar2、nvarchar2、clob和nclob; 在DB2中字符相关的类型有CHARACTER、VARCHAR、LONG  VARCHAR、CLOB、GRAPHIC、VARGRAPHIC和 LONGVARGRAPHIC。

日期时间类型:在MYSQL中日期时间相关的类型有date、time、datetime、 timestamp和year;在MSSQLServer中日期时间相关的类型有datetime、smalldatetime和timestamp;在 Oracle中日期时间相关的类型有date和timestamp;在DB2中日期时间相

关的类型有DATE、TIME和 TIMESTAMP。

二进制类型:MYSQL、Oracle和DB2都支持Blob类型,而在MSSQLServer中支持image 类型。

1.1.2运算符的差异

在不同的数据库系统中字符串拼接的方式是不同的,下面的主 流数据库系统对字符串拼接的支持:

MYSQL:在MYSQL中进行字符串的拼接要使用CONCAT函数, CONCAT函数支持一个或者多个参数,比如CONCAT('Hello',1,'World');MYSQL中还提 供了另外一个进行字符串拼接的函数CONCAT_WS,CONCAT_WS可以在待拼接的字符串之间加入指定的分

隔符,比如CONCAT_WS ('Hello',1,'World')。

 MSSQLServer: MSSQLServer中可以直接使用加号“+”来拼接字符串,比如'Hello'+'World'。

Oracle:Oracle中使用“||”进行字符串拼接,比如'Hello'||'World';除了 “||”,Oracle还支持使用CONCAT()函数进行字符串拼接,不过与MYSQL的CONCAT()函数不同,Oracle的 CONCAT()函数只支持两个参数,不支持两个以上字符串的拼接。

DB2:DB2中使用“||”进行字符 串拼接,比如'Hello'||'World'。

1.1.3函数的差异

不同数据库系统对 函数的差异是非常大的,不仅同样功能的函数在不同数据库系统中的名称不同,而且一些高级的函数也 并不是在所有数据库系统中都有提供支持。比如将一个字符串转换为小写的函数在MYSQL,MSSQLServer和 Oracle中为LOWER,而在DB2中则为LCASE;MYSQL中支持IF函数,而在其他数据库系统中则只有通过变通 方式才能实现。

1.1.4常用SQL的差异

主流数据库系统对SELECT、UPDATE、DELETE、 CREATE、DROP等基本语法的支持是相同,不过在一些高级特性支持方面仍然有差异。

1.1.4.1限 制结果集行数

在实现分页检索、排行榜等功能的时候,需要限制检索的结果集行数,不同的数据 库系统对此的支持是不同的。

MYSQL中提供了LIMIT关键字用来限制返回的结果集,比如:

SELECT * FROM T_Employee

ORDERBY FSalary DESC LIMIT 2,5

MSSQLServer: MSSQLServer中提供了TOP关键字用来返回结果集中的前N条记录,比如:

select top 5 *from T_Employee

order by FSalaryDesc;

在MSSQLServer2005中还可以使用窗口函数 ROW_NUMBER()实现限制结果集行数,比如:

SELECTROW_NUMBER() OVER(ORDER BY FSalary), FNumber,

FName,FSalary,FAge

FROM T_Employee

时间: 2024-10-30 12:42:54

主流数据库的SQL语法差异分析的相关文章

精讲MySQL数据库的SQL语法参考

一.资料定义ddl(data definition language) 资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系.表格内的有什麽栏位主键.表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的. 1.建表格: create table table_name( column1 datatype [not null] [not null primary key], column2 datatype [not null],

MySQL数据库SQL语法参考

mysql|sql语法|参考|数据|数据库|语法参考 一.资料定义 ddl(data definition language) 资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系.表格内的有什麽栏位主键.表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的. 1.建表格: create table table_name( column1 datatype [not null] [not null primary key], c

NoSQL数据库概览及其与SQL语法的比较

[文章摘要] HBase是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,同时也是知名的NoSQL数据库之一.NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用的难题. 本文对NoSQL数据库的定义.分类.特征.当前比较流行的NoSQL数据库系统等进行了简单的介绍,并对NoSQL和SQL语法进行了简单的比较,为大家对NoSQL数据库的学习提供了有益的参考.   一.NoSQL的出现 关系型数据库系统多年来在解决数据存储.服务和处理问题方面取得了巨大的成

淘宝数据库OceanBase SQL编译器部分 源码阅读--生成物理查询计划

SQL编译解析三部曲分为:构建语法树,制定逻辑计划,生成物理执行计划.前两个步骤请参见我的博客<<淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树>>和<<淘宝数据库OceanBase SQL编译器部分 源码阅读--生成逻辑计划>>.这篇博客主要研究第三步,生成物理查询计划. 一. 什么是物理查询计划 与之前的阅读方法一致,这篇博客的两个主要问题是what 和how.那么什么是物理查询计划?物理查询计划能够直接执行并返回数据结果数

快速掌握ASP连接11种数据库的常用语法

本文主要介绍了ASP连接11种数据库的常用语法,详细内容请参考下文: 1.Access数据库的DSN-less连接方法: 以下为引用的内容:set adocon=Server.Createobject("adodb.connection")adoconn.Open"Driver={Microsoft Access Driver(*.mdb)};DBQ="& _Server.MapPath("数据库所在路径") 2.Access OLE D

SQL语法查询文档

sql语法  一.SQL速成  结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表.索引.字段等)的建立和操纵.  以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册.  1.创建表  表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联.创建表的基本语法如下:  create table table_name  (column_name data无效 {identity |null

SQL语法速成

sql语法|速成 一.SQL速成  结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表.索引.字段等)的建立和操纵.  以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册.  1.创建表  表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联.创建表的基本语法如下:  create table table_name  (column_name data无效 {identity |nu

SQL语法参考

sql语法|参考|语法参考 一.资料定义 ddl(data definition language) 资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系.表格内的有什麽栏位主键.表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的. 1.建表格:create table table_name( column1 datatype [not null] [not null primary key], column2 datatyp

全面接触SQL语法2

sql语法 BETWEEN...AND 运算符 决定某一人数值是否介于特定的范围之内,此运算符只可以用在SQL的语句中. expr[Not]BETWEEN value1 AND value2 expr 指定要加以计算的字段与表达式的组合. value1,value2 所指明的数值范围. 例如: 若是要从职员表格查询出所有年龄介于25-30岁的员工,可以利用下面的程序来做. SELECT 姓名,年龄 BETWEEN 25 AND 30 FROM 职员表格: LIKE 操作数 用来将一字符串与另一特