全面掌握MS ACCESS SQL(03)
时 间:2017-12-20 09:37:54
作 者:Big Young ID:252 城市:襄阳
摘 要: JET-SQL与ANSI-SQL的区别。
正 文:
第三节 JET-SQL与ANSI-SQL的区别
一、ANSI SQL的基本内容
ANSI SQL是美国国家标准学会(ANSI)对SQL进行规范化后的标准化SQL语言,1987年,ISO把ANSI SQL作为国际标准,这个标准在1992年进行了修订,即SQL-92,1999年两次修订即SQL-99,目前最新的是SQL-2003。ANSI-SQL由多个相关的文档组成,以后可能还会增加其他文档,以扩展标准来适应新出现的技术。
ANSI-SQL包含了以下内容:
1、SQL结构,指定实现一致性的一般性需求,定义SQL基本概念。
2、SQL基础,定义SQL的原发和操作。
3、SQL/调用级接口,定义程序编程与SQL的接口。
4、SQL持久存储模块,定义控制结构,进而定义SQL例程,还定义了包含SQL例程的模块。
5、SQL主机语言绑定,定义SQL的扩展,用户通过使用数据包裹支持外部数据管理,还定义了数据链类型。
6、对象语言绑定,定义SQL的扩展,支持把SQL语句内嵌到编程语言程序。
7、信息和定义方案,定义信息方案和定义方案的规范,提供与SQL数据相关的结构和安全信息。
二、JET SQL与ANSI 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所包含的某些保留字和性能。
二者主要差异表现在:
1、MS Access SQL和ANSI SQL各自都有不同的保留字和数据类型。如果使用Microsoft OLE DB Provider,还有另外一些保留字。
2、应用于Between...And构造的规则不同,该构造有以下语法:
expr1 [NOT] Between value1 And value2
在MS Access SQL中,value1可以大于value2;在ANSI SQL中,value1必须等于或小于value2。
3、MS Access SQL同时支持ANSI SQL通配符和MS Access特有的通配符与Like运算符一起使用。ANSI和MS Access通配符的使用是相互排斥的。必须使用这二者中的某一个,不能将它们混合使用。只有在使用MS Access数据库引擎和MS Access 2007 OLE DB Provider时,才能使用ANSI SQL通配符。如果尝试通过Access 2007或DAO来使用ANSI SQL通配符,则它们将被解释为文字。
匹配字符 |
MS Access SQL |
ANSI SQL |
任意单字符 |
? |
_(下划线) |
零个或多个字符 |
* |
% |
4、MS Access SQL的限制通常较少。例如,它允许对表达式进行分组和排序。
5、MS Access SQL支持功能更强大的表达式。
MS Access SQL提供以下增强功能:TRANSFORM语句,该语句提供对交叉表查询的支持;其他SQL聚合函数,例如StDev和VarP;用于定义参数查询的PARAMETERS声明。
MS Access SQL不支持以下ANSI SQL功能:
DISTINCT聚合函数引用。例如,MS Access SQL不支持SUM(DISTINCT columnname)。
LIMIT TO nn ROWS子句(用来限制查询所返回的行数)。只能使用 Where 子句来限制查询的范围。
三、TSQL与ANSI SQL的据类型比较
下表列出了ANSI SQL数据类型、与它们等效的MS Access数据库引擎SQL数据类型及其有效同义词。
ANSI SQL数据类型 |
MS Access SQL数据类型 |
同义词 |
BIT、BIT VARYING |
BINARY |
VARBINARY、BINARY VARYING BIT VARYING |
不支持 |
BIT |
BOOLEAN、LOGICAL、LOGICAL1、YESNO |
不支持 |
TINYINT |
INTEGER1、BYTE |
不支持 |
COUNTER |
AUTOINCREMENT |
不支持 |
MONEY |
CURRENCY |
DATE、TIME、TIMESTAMP |
DATETIME |
DATE、TIME |
不支持 |
UNIQUEIDENTIFIER |
GUID |
DECIMAL |
DECIMAL |
NUMERIC、DEC |
REAL |
REAL |
SINGLE、FLOAT4、IEEESINGLE |
DOUBLE PRECISION、FLOAT |
FLOAT |
DOUBLE、FLOAT8、IEEEDOUBLE、NUMBER |
SMALLINT |
SMALLINT |
SHORT、INTEGER2 |
INTEGER |
INTEGER |
LONG、INT、INTEGER4 |
INTERVAL |
不支持 |
|
不支持 |
IMAGE |
LONGBINARY、GENERAL、OLEOBJECT |
不支持 |
TEXT |
LONGTEXT、LONGCHAR、MEMO、NOTE、NTEXT |
CHARACTER、CHARACTER VARYING、NATIONAL CHARACTER、NATIONAL CHARACTER VARYING |
CHAR |
TEXT(n)、ALPHANUMERIC、CHARACTER、STRING、VARCHAR、CHARACTER VARYING、NCHAR、NATIONAL CHARACTER、NATIONAL CHAR、NATIONAL CHARACTER VARYING、NATIONAL CHAR VARYING |
几点说明:
ANSI SQL BIT数据类型不对应于MS Access SQL BIT数据类型,而是对应于BINARY数据类型。MS Access SQL BIT数据类型没有等效的ANSI SQL数据类型。
不再支持TIMESTAMP作为DATETIME的同义词。
不再支持NUMERIC作为FLOAT或DOUBLE的同义词。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源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access判断多条明细的配方或订...(11.30)
- 如何让后台数据库在局域网共享时,且...(11.29)
- 【Access月初月末日期设置方法...(11.29)
- 【Access IIF函数嵌套示例...(11.26)
- Access快速开发平台--使用组...(11.25)
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)