Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

全面掌握MS ACCESS SQL(03)

时 间:2017-12-20 09:37:54
作 者:Big Young   ID:252  城市:襄阳
摘 要:    JET-SQL与ANSI-SQL的区别。
正 文:

第三节 JET-SQLANSI-SQL的区别

一、ANSI SQL的基本内容

ANSI SQL是美国国家标准学会(ANSI)SQL进行规范化后的标准化SQL语言,1987年,ISOANSI SQL作为国际标准,这个标准在1992年进行了修订,即SQL-921999年两次修订即SQL-99,目前最新的是SQL-2003ANSI-SQL由多个相关的文档组成,以后可能还会增加其他文档,以扩展标准来适应新出现的技术。

ANSI-SQL包含了以下内容:

1SQL结构,指定实现一致性的一般性需求,定义SQL基本概念。

2SQL基础,定义SQL的原发和操作。

3SQL/调用级接口,定义程序编程与SQL的接口。

4SQL持久存储模块,定义控制结构,进而定义SQL例程,还定义了包含SQL例程的模块。

5SQL主机语言绑定,定义SQL的扩展,用户通过使用数据包裹支持外部数据管理,还定义了数据链类型。

6、对象语言绑定,定义SQL的扩展,支持把SQL语句内嵌到编程语言程序。

7、信息和定义方案,定义信息方案和定义方案的规范,提供与SQL数据相关的结构和安全信息。

二、JET SQLANSI SQL的主要区别

MS JET数据库引擎的SQL通常属于ANSI-89层级一,随着MS JET 4.X版的发行,增加了对ANSI-92 SQL标准的支持,使用了更多的ANSI-92 SQL的语法。然而,ANSI SQL的某些功能在MS JET SQL中没有实现,相反地,在ANSI SQL中也不支持MS JET SQL所包含的某些保留字和性能。

二者主要差异表现在:

1MS Access SQLANSI SQL各自都有不同的保留字和数据类型。如果使用Microsoft OLE DB Provider,还有另外一些保留字。

2、应用于Between...And构造的规则不同,该构造有以下语法:

expr1 [NOT] Between value1 And value2

MS Access SQL中,value1可以大于value2;在ANSI SQL中,value1必须等于或小于value2

3MS Access SQL同时支持ANSI SQL通配符和MS Access特有的通配符与Like运算符一起使用。ANSIMS Access通配符的使用是相互排斥的。必须使用这二者中的某一个,不能将它们混合使用。只有在使用MS Access数据库引擎和MS Access 2007 OLE DB Provider时,才能使用ANSI SQL通配符。如果尝试通过Access 2007DAO来使用ANSI SQL通配符,则它们将被解释为文字。

匹配字符

MS Access SQL

ANSI SQL

任意单字符

?

_(下划线)

零个或多个字符

*

%

4MS Access SQL的限制通常较少。例如,它允许对表达式进行分组和排序。

5MS Access SQL支持功能更强大的表达式。

MS Access SQL提供以下增强功能:TRANSFORM语句,该语句提供对交叉表查询的支持;其他SQL聚合函数,例如StDevVarP;用于定义参数查询的PARAMETERS声明。

MS Access SQL不支持以下ANSI SQL功能:

DISTINCT聚合函数引用。例如,MS Access SQL不支持SUM(DISTINCT columnname)

LIMIT TO nn ROWS子句(用来限制查询所返回的行数)。只能使用 Where 子句来限制查询的范围。

三、TSQLANSI SQL的据类型比较

下表列出了ANSI SQL数据类型、与它们等效的MS Access数据库引擎SQL数据类型及其有效同义词。

ANSI SQL数据类型

MS Access SQL数据类型

同义词

BITBIT VARYING

BINARY

VARBINARYBINARY VARYING BIT VARYING

不支持

BIT

BOOLEANLOGICALLOGICAL1YESNO

不支持

TINYINT

INTEGER1BYTE

不支持

COUNTER

AUTOINCREMENT

不支持

MONEY

CURRENCY

DATETIMETIMESTAMP

DATETIME

DATETIME

不支持

UNIQUEIDENTIFIER

GUID

DECIMAL

DECIMAL

NUMERICDEC

REAL

REAL

SINGLEFLOAT4IEEESINGLE

DOUBLE PRECISIONFLOAT

FLOAT

DOUBLEFLOAT8IEEEDOUBLENUMBER

SMALLINT

SMALLINT

SHORTINTEGER2

INTEGER

INTEGER

LONGINTINTEGER4

INTERVAL

不支持

 

不支持

IMAGE

LONGBINARYGENERALOLEOBJECT

不支持

TEXT

LONGTEXTLONGCHARMEMONOTENTEXT

CHARACTERCHARACTER VARYINGNATIONAL CHARACTERNATIONAL CHARACTER VARYING

CHAR

TEXT(n)ALPHANUMERICCHARACTERSTRINGVARCHARCHARACTER VARYINGNCHARNATIONAL CHARACTERNATIONAL CHARNATIONAL CHARACTER VARYINGNATIONAL CHAR VARYING

几点说明:

ANSI SQL BIT数据类型不对应于MS Access SQL BIT数据类型,而是对应于BINARY数据类型。MS Access SQL BIT数据类型没有等效的ANSI SQL数据类型。

不再支持TIMESTAMP作为DATETIME的同义词。

不再支持NUMERIC作为FLOATDOUBLE的同义词。NUMERIC现在用作DECIMAL的同义词。

LONGTEXT字段始终以Unicode表示形式存储。

如果在未指定可选长度的情况下使用数据类型名称TEXT,则创建LONGTEXT字段。这样,编写的Create TABLE语句将生成与MS SQL Server一致的数据类型。

CHAR字段始终以Unicode表示形式存储,这种表示形式等效于ANSI SQL NATIONAL CHAR数据类型。

如果使用数据类型名称TEXT并指定了可选长度,例如TEXT(25),则字段的数据类型等效于CHAR数据类型。这样,可保持大多数MS Access应用程序的向后兼容性,同时使TEXT数据类型(未指定长度)与 MS SQL Server一致。



Access软件网QQ交流群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助