Chinaunix首页 | 论坛 | 博客
  • 博客访问: 163462
  • 博文数量: 32
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 415
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-07 14:39
个人简介

微信hillpigt

文章分类
文章存档

2011年(1)

2010年(9)

2009年(8)

2008年(14)

我的朋友

分类: 数据库开发技术

2010-03-07 02:19:11

Information Technology -

Database Language SQL

(Proposed revised text of DIS 9075)

July 1992

(Second Informal Review Draft) ISO/IEC 9075:1992, Database

Language SQL- July 30, 1992

 

Digital Equipment Corporation

Maynard, Massachusetts

 


 

 

目录

1.     Scope (范围)........................................................................................................... 6

2.     Normative references (规范性引用)....................................................................... 7

3.     Definitions, notations, and conventions (定义、记号和约定).............................. 8

3.1.         Definitions................................................................................................ 8

3.1.1.    Definitions taken from ISO/IEC 10646(摘自ISO/IEC 10646标准的定义)       9

3.1.2.    摘自ISO 8601标准的定义.............................................................. 9

3.1.3.    该国际标准提供的定义................................................................... 9

3.2.         Notion(记号)..................................................................................... 10

3.3.         Conventions(约定)............................................................................ 11

3.3.1.    Informative elements告知性元素(我的理解:用于提供信息) 12

3.3.2.    Specification of syntactic elements语法元素规范......................... 12

3.3.3.    Specification of the Information Schema (信息模式规范,这里翻译成模式似乎有些模糊,总之information schema就是指一些conceptspatternstructure什么的) 12

3.3.4.    Use of terms使用条款(就是一些约定的规章制度)................ 13

3.3.4.1. Exceptions异常...................................................................... 13

3.3.4.2. Syntactic containment语法包含............................................ 13

3.3.4.3. Terms denoting rule requirements条款表示规则要求.......... 14

3.3.4.4. Rule evaluation order规则评估次序..................................... 14

3.3.4.5. Conditional rules条件规则.................................................... 15

3.3.4.6. Syntactic substitution语法替代............................................. 15

3.3.4.7. Other terms其他条款............................................................. 16

3.3.5.    Descriptors描述符.......................................................................... 16

3.3.6.    Index typography索引排印............................................................ 17

3.4.         Object identifier for Database Language SQL(数据库语言SQL的对象(即sql版本如sql9299…)标识符)................................................................................................................ 17

4.     Concepts............................................................................................................... 19

5.     Lexical elements.................................................................................................... 19

6.     Scalar expressions................................................................................................. 19

7.     Query expressions................................................................................................. 19

8.     Predicates.............................................................................................................. 20

9.     Data assignment rules........................................................................................... 20

10.            Additional common elementss....................................................................... 20

11.            Schema definition and manipulation............................................................. 20

12.            Module........................................................................................................... 20

13.            Data manipulation.......................................................................................... 20

14.            Transaction management................................................................................ 20

15.            Connection management................................................................................ 20

16.            Session management...................................................................................... 20

17.            Dynamic SQL................................................................................................ 20

18.            Diagnostics management............................................................................... 20

19.            Embedded SQL............................................................................................. 20

20.            Direct invocation of SQL.............................................................................. 20

21.            Information Schema and Definition Schema................................................. 21

22.            Status codes................................................................................................... 21

23.            Conformance.................................................................................................. 21

 


 

前言

(转自 http://www.cnblogs.com/6DAN_HUST/archive/2008/12/22/1359830.html

ISO(国际标准化组织)是一个由国家标准机构(ISO成员机构)构成的世界性的联邦。通常由ISO技术委员会开展筹备国际标准的工作。如果成员机构关注 的某个主题成立了技术委员会,那么成员机构有权派代表参加该委员会。与ISO有联络的国际组织,政府和非政府组织,也参与工作。在所有电工标准化的问题 上,ISO与国际电工委员会( IEC )密切合作。

被技术委员会采纳的国际标准草案将会分发给各成员机构寻求认可,之后才能由ISO理事会接受为国际标准。按照ISO规程,需要参加表决的成员机构中至少75 %赞成,该草案才能通过。

国际标准ISO / IEC 9075:1992出自联合技术委员会ISO / IEC JTC1 ,信息处理系统。
它取消并取代国际标准ISO / IEC 9075:1989 Database Language-SQL,构成技术性修订。

该国际标准包含了七个告知性的附录:

- 附录A (资料): SQL语言的分级;

- 附录B (资料): 实现定义的要素;

- 附录C (资料): 实现依赖的要素;

- 附录D (资料): 不推荐使用的功能;

- 附录E (资料): ISO / IEC 9075:1989的不兼容;

- 附录F (资料): SQL的维护和解释。

 

简介

(转自 http://www.cnblogs.com/6DAN_HUST/archive/2008/12/23/1360750.html  

该国际标准于1992年被批准。

该国际标准是从ISO/IEC 9075:1989(信息系统,数据库语言SQL完整性增强)发展而来,并取代了那个国际标准。该国际标准在详细说明中增加了大量重要的新特性和功能。一般情况下该标准与ISO/IEC 90751989标准兼容,也就是说,除了极少数例外,符合ISO / IEC 9075:1989标准的SQL语言也符合该国际标准,并且在两者实现上保持一致。在ISO / IEC 9075:1989和该国际标准之间,已知的不相容参考告知性附件E “与ISO / IEC 9075:1989的不兼容 ”。

ISO/IEC 9075:1989和该国际标准之间,技术方面的改变包括现有功能的改进或增强和新功能的定义。现有功能的重要改进有:

-直接调用SQL语言的更好的定义;

-改进的诊断能力,特别是新的状态参数( SQLSTATE ,诊断领域,并支持报表。

重要的新特性有:

1)支持更多的数据类型(DATE, TIME, TIMESTAMP, INTERVAL, BIT string, variable-length character and bit strings, and NATIONAL CHARACTER strings),

2)除了表示SQL语言本身以外,还支持字符集和更多的排序规则,

3)支持更多的标量操作,如连接字符串和取子字符串的字符串操作,日期和时间操作,条件表达式的形成,

4)在标量值查询表达式和表值查询表达式的使用上,增强了通用性和正交性,

5)更多的set操作符(例如,union join, natural join, set difference, and set intersection),

6)能够在方案中定义域,

7)支持对方案的操作(特别是DROPALTER语句),

8)支持在AdaCMUMPS语言中嵌入SQL语句(模块和嵌入式语法),

9)更多的权限能力,

10)更多的引用完整性的能力,包括引用的动作,检查约束中的子查询,单独的断言,以及用户控制约束的推迟,

11)信息方案的定义,

12)支持SQL语言的动态执行,

13)支持某些设施所需的远程数据库访问(尤其是连接的管理语句和合格的方案名称),

14)支持临时表,

15)支持各级事务的一致性,

16)支持数据类型转换(各种数据类型使用CAST表达式)

17)支持滚动游标,

18)具有标记的能力,以辅助应用程序的可移植性。

该国际标准的内容组织如下:

1)1条“范围” ,指定该国际标准的范围。

2)2条“规范参考” ,通过该国际标准的引用,标识额外的标准。这些标准构成该国际标准的规定。

3)3条“定义,记号,和约定” ,定义了该国际标准中使用的记号和约定。

4)4条“概念” ,给出在SQL定义中用到的概念。

5)5条“词法要素” ,定义语言的词法要素。

6)6条“标量表达式”,定义产生标量值的语言要素。

7)7条“查询表达式”,定义产生数据行和数据表的语言要素。

8)8条“谓词” ,定义语言的谓词。

9)9条“数据分配规则” ,指定检索数据或存储数据到数据库的分配规则,和set操作形成规则。

10)10条“附加的公用要素” ,定义用于语言各部分的附加的语言要素。

11)11条“方案的定义和操纵” ,定义创建和管理方案的能力。

12)12条“模块” ,定义模块和过程。

13)13条“数据操纵” ,定义数据操纵语句。

14)14条“事务管理” ,定义SQL事务管理语句。

15)15条“连接管理”,定义SQL连接管理语句。

16)16条“会话管理” ,定义SQL会话管理语句。

17)17条“动态SQL ,定义动态执行SQL语句的能力。

18)18条“诊断管理” ,定义诊断管理能力。

19)19条“嵌入式SQL ,定义在某些标准编程语言中嵌入SQL的语法。

20)20条“直接调用的SQL ,定义了SQL语言的直接调用。

21)21条“信息方案和定义方案” ,定义包含方案信息的可视化表。

22)22条“状态码” ,定义标识SQL语句执行状态的值和这些值返回的机制。

23)23条“一致性” ,定义了符合该国际标准的准则。

24)附录A SQL语言的分级” ,是一个告知性的附录。它列出了分级的规则,定义了入门级SQL和中级水平SQL

25)附录B “实现定义的要素” ,是一个告知性的附录。它列出了在该国际标准正文中规定的数据库上的语法、含义或效果是部分或全部实现定义的特性,并描述了在各种情况下执行者应提供的确定信息。

26)附录C,“实现依赖的要素”,是一个告知性的附录。它列出了在该国际标准正文中明确规定的数据库上的含义和效果是实现依赖的特性。

27)附录D,“不推荐使用的功能”,是一个告知性的附录。它列出了技术委员会打算将来在该国际标准的修订版中,不会出现的功能。

28)附录E,“与ISO / IEC 9075:1989的不兼容”,是一个告知性的附录。它列出了该国际标准当前版本和ISO / IEC 9075:1989标准之间的不兼容

29)附录F,“SQL的维护和解释”,是一个告知性的附录。它列出自ISO / IEC 9075:1989采纳以来,被ISO / IEC JTC1/SC21处理过的SQL解释和修正。

在该国际标准的文本中,条款开始于一个新的奇数页,并在第5条“词法要素”到第22条“状态码”,子条款开始于新的一页。任何由此产生的空白空间不是很大。

范围)

转自:http://www.cnblogs.com/6DAN_HUST/archive/2008/12/26/1363097.html

该国际标准定义了SQL数据的数据结构和基本操作。它提供了SQL数据的创建,获取,维护,控制,保护的功能。  

注:该国际标准的构架使用数据管理的关系模型描述(ISO/IEC DIS 10032:1991) 

该国际标准规定了对以下几点的数据库语言的语法和语义:

-SQL数据的结构和完整性约束的指定和修改,

-SQL的数据和游标的声明和调用操作,

-数据库语言过程的声明,并将其嵌入到标准的编程语言中。

它还指定描述SQL数据的结构和完整性约束的信息方案。  

该国际标准

-为在多个SQL实现之间的数据定义和编译单元的可移植性提供载体,

-为多个SQL实现的互连提供载体,

-为在编译单元中的嵌入式SQL语句,规定了相关语法,否则就需要符合特殊的编程语言标准。它定义符合特定编程语言标准的等效的编译单元。在这等效的编译单元中,每个嵌入式SQL语句被一些语句替换,这些语句调用包含了SQL语句的数据库语言过程,

-规定了直接引用SQL语句的语法。

该国际标准在以下几条中,没有定义方法或绑定的时间

-数据库管理系统组件,

-SQL数据定义的声明,

-SQL过程,

-编译单元,包含了嵌入式SQL 

实现该国际标准可能的环境,还应支持应用程序的编程语言,终端用户的查询语言,报告生成系统,数据字典系统,项目库系统,和分布式通信系统,以及数据库设计,数据管理,和性能优化等各种工具。

规范性引用)

转自 http://www.cnblogs.com/6DAN_HUST/archive/2008/12/26/1363122.html

下列标准包含的规定构成该国际标准的规定。该版本自发布之时有效。所有的标准都受制于修订,鼓励基于该国际标准各方达成协议,调查应用如下所列最新版国际标准的可能性。IECISO的成员维护当前有效国际标准的登记。

- ISO/IEC 646:1991, Information technology-ISO 7-bit coded character set for information interchange.

- ISO/IEC 1539:1991, Information technology-Programming languages-Fortran.

- ISO 1989:1985, Programming languages-COBOL. (Endorsement of ANSI X3.23-1985).

- ISO 2022:1986, Information technology-ISO 7-bit and 8-bit coded character sets-code extension techniques.

- ISO 6160:1979, Programming languages-PL/I (Endorsement of ANSI X3.53-1976).

- ISO 7185:1990, Information technology-Programming languages-Pascal.

- ISO 8601:1988, Data elements and interchange formats - Information interchange-Representation of dates and times.

- ISO 8652:1987, Programming languages-Ada. (Endorsement of ANSI/MIL-STD-1815A-1983).

- ISO/IEC 8824:1990, Information technology-Open Systems Interconnection-Specification of Abstract Syntax Notation One (ASN.1).

- ISO/IEC 9579-2:[1], Information technology - Open Systems Interconnection - Remote Database Access, Part 2: SQL special-ization.

- ISO/IEC 9899:1990, Programming languages - C.

- ISO/IEC 10206:1991, Information technology-Programming languages-Extended Pascal.

- ISO/IEC 10646:[1], Information technology-Multiple-octet coded character set.

____________________

[1] 即将发布

- ISO/IEC 11756:[1], Information technology-Programming languages-MUMPS.

 

定义、记号和约定)

转自:http://www.cnblogs.com/6DAN_HUST/archive/2009/01/09/1372375.html ,做了部分说明和修订。

为了该国际标准的目的,应用以下定义。

(摘自ISO/IEC 10646标准的定义)

该国际标准使用的以下条款,摘自ISO/IEC 10646标准:

a)         character字符

b)        octet字节

c)        variable-length coding 可变长度编码

d)        fixed-length coding 固定长度编码

标准的定义

该国际标准使用的以下条款,摘自ISO 8601标准:

a)         Coordinated Universal Time (UTC)

b)        date ("date, calendar" in ISO 8601)

国际标准定义以下条款: 

a)        可赋值 assignable:: 值或数据类型的特征。这些值或数据类型可以赋值给特定数据类型的数据实例。

b)        (集合的)基数cardinality (of a collection):: 集合中对象数目. 对象可以相同

c)        字符表character repertoire: 用于明确的目的和应用的字符的集合。每个字符表都有一个隐含默认的排列序列(collating sequence)。 

d)        可排列性coercibility: 字符串数据项的属性,用于管理如何确定该项的整理序列。 An attribute of character string data items that governs how a collating sequence for the items is determined.

e)         排序规则; 排列序列collation; collating sequence::对两个可比较的字符串的排序方法. 每个字符集都有一个默认的排列序列(我的理解,例如汉字可以按笔画排列),原文:A method of ordering two comparable character strings. Every character set has a default collation.

f)         可比较comparable: 两个数据对象的特征,允许一个对象的值和另一个对象的值进行比较。 同样对于数据类型:只有当两个数据类型的对象可以比较,才能说这两个数据类型可以比较。 

g)        说明符descriptor:: SQL对象的编码描述(我的理解就是指以一种格式描述,如bnf)。 它包含了该对象符合SQL实现要求的所有信息。 A coded description of an SQL object. It includes all of the information about the object that a conforming SQL implementation requires.

h)        互异distinct如果两个值,都为空值,或者根据第8.2 “ 谓词比较,它们相等,就认为这两个值相同。否则,它们是互异的。在两行(或部分行)中,只要对应的值有一个是不同的,则认为两行(或部分行)是互异的。 

i)          重复duplicate当且仅当两个或两个以上的值或行是相同的,才能认为它们是重复的。 

j)          二元运算符dyadic operator具有两个操作数(左操作数和右操作数)的操作符。 在该国际标准中一个二元操作符的例子是"-"——减号操作符,该操作符说明左边操作数减去右边操作数。 

k)        使用形式form-of-use在字符串中表现字符的约定或编码。有些使用形式是定长的编码,有些是可变长度的编码。 A convention (or encoding) for representing characters(in character strings). Some forms-of-use are fixed-length codings and others are variable-length codings.

l)          使用形式转换form-of-use conversion将字符串从一种使用形式转换为另一种使用形式的方法。 (如将汉字从GBK转到UTF8

m)      实现时定义implementation-defined不同的SQL实现之间可能不同,由实现者详细说明每个特别的SQL实现。 

n)        实现依赖implementation-dependent不同的SQL实现之间可能不同,不由该国际标准说明,也不要求实现者说明每个特别的SQL实现。 Possibly differing between SQL implementations, but not specified by this International

Standard and not required to be specified by the implementor for any particular SQL-implementations.(我的理解是例如long,可能不同的实现不同)

o)        一元操作符monadic operator只有一个操作数的操作符在该国际标准中一元算术操作符的一个例子是"-"——负号操作符,该操作符说明操作数为负数。 

p)        多重集multiset: 对象的无序集合,对象可以相同,集合可以为空。 

q)        n元操作符n-adic operator具有多个操作数的操作符。在该国际标准中的n元操作符的例子是COALESCE 

r)         空值 (null) null value (null): 一个特殊的值或者标志,用来表明不含任何数据值。 

s)         持久: persistent  除非有意去销毁,否则会一直存在。引用和级联动作是有意的。SQL事务(见子条款 4.28,“SQL事务”)或SQL会话(见子条款 4.30,“SQL会话”)结束时附带的动作不是有意的。 

t)          冗余复制redundant duplicates:  除了一个以外,其他的重复值或行的多重集。 All except one of any multiset of duplicate values or rows.

u)        清单repertoire: 见字符表character repertoire 

v)        序列sequence: 对象的有序集合。对象可以相同。 

w)      set: 不同对象的无序集合。该集合可为空。

x)        SQL-实现SQL-implementation: 符合该国际标准的数据库管理系统。 

y)        转换translation将一个字符表中字符转换成相同或不同字符表中字符的方法。

(记号)

转自 http://www.cnblogs.com/6DAN_HUST/archive/2009/01/09/1372431.html

 

该国际标准中使用的语法符号是BNF 的一种扩展版本 ("Backus Naur Form" or "Backus Normal Form")

    BNF中,语言的每个语法元素通过一个产生规则定义。产生规则根据由字符,字符串和语法元素组成的规则定义元素。

    在该国际标准中使用的BNF的版本,使用以下符号:

符号含义

< >   尖括号,用于分隔字符串,字符串为语法元素的名称,SQL语言的非终结符。

::=   定义操作符。用在生成规则中,分隔规则定义的元素和规则定义。 被定义的元素位于操作符的左边,规则定义位于操作符的右边。

[ ]   方括号表示规则中的可选元素。方括号中的规则部分可以明确指定也可以省略。

{ }   花括号聚集规则中的元素。在花括号中的规则部分必须明确指定。

|     替换操作符。 该竖线表明竖线之后的规则部分对于竖线之前的部分是可替换的。 如果竖线出现的位置不在花括号或方括号内,那么它指定对于该规则定义的元素的一个完整替换项。如果竖线出现的位置在花括号或方括号内,那么它指定花括号对或方括号对最里面内容的替换项。

. . . 省略号表明在规则中省略号应用的元素可能被重复多次。如果省略号紧跟在闭花括号"}"之后,那么它应用于闭花括号和开花括号"{"之间的规则部分。如果省略号出现在其他任何元素的后面,那么它只应用于该元素。

!!  介绍普通英文文本。BNF中没有表示某语法元素的定义时使用。

空格用来分隔语法元素。多个空格和多个换行符被视为单个空格。除了上面所给的特殊用途的符号, 在规则中的其它字符和字符串表示其本义。此外,如果定义操作符右边的符号全部由BNF中的符号组成,那么这些符号仅代表其本义,不需要考虑其特殊含义。

花括号对和方括号对内部可以任意嵌套,替换操作符可以出现在嵌套的任何地方。

形成任何语法元素实例的字符串可能产生自该元素的BNF定义,产生过程应用以下步骤:

1) 对于该元素,选择在产生规则右边定义的任意一个选项, 并用该选项替换该元素。

2) 替换每个省略号和省略号所应用的一个或多个对象的实例。

3) 对于方括号中的字符串部分, 要么删除括号和括号中的内容,要么将括号转换为花括号。

4) 对于花括号中的字符串部分,对其子字符串应用步骤1至步骤5,然后移除花括号。

5) 对于仍然在字符串中的非终结语法元素(如在尖括号中的名称),应用步骤1至步骤5

当字符串中不再存在非终结符时,扩展过程(或产生过程)完成。

(约定)

转自 http://www.cnblogs.com/6DAN_HUST/archive/2009/02/06/1385031.html 部分修订和解释

告知性元素(我的理解:用于提供信息)

告知性的注解在该国际标准正文中出现好几次。 例如:

: 这是一个注解的例子。

这些注解不属于该国际标准的规范部分,并且不应声明符合注解中说明的资料。

语法元素规范

根据以下指定语法元素:

    -  功能: 对于元素意图的简短说明。

    -  格式: 元素语法的BNF定义。

    -  语法规则: 元素语法属性的详细说明,或在BNF中没有表示的,但该元素必须满足的附加语法约束的详细说明,或者两者兼而有之。

    -  访问规则: 管理方案对象访问的规则的详细说明,应用在通用规则成功运用之后。

    -  通用规则: 元素运行时效果的详细说明。多个通用规则用来指定元素效果, 所需的效果通过开始第一个通用规则,并在数字序列中应用中获得,除非规则说明或暗示序列中的改变或规则应用结束。 除非应用了特殊规则,否则通用规则在序列的最后一条应用之后终结。

    -  分级规则: 元素如何支持各种级别的SQL的详细说明。

注释性符号的范围是定义这些符号的子条款。子条款中,在语法规则,访问规则或者通用规则中定义的符号可以在其他规则中引用,引用前需先定义。

(信息模式规范,这里翻译成模式似乎有些模糊,总之information schema就是指一些conceptspatternstructure什么的)

根据以下指定该国际标准的信息模式对象:

    -  功能: 对于该定义意图的简短说明。

    -  定义: SQL中该对象的定义。

    -  描述: 对该对象运行值的详细说明,主要针对定义中不清楚的地方。

    在信息模式中定义视图的定义只用来说明这些可视化表的内容。 这些视图所基于的实际对象依赖于实现。

附:关于schema定义在dictionary.refence.com如下:

1.

a diagram, plan, or scheme.

2.

an underlying organizational pattern or structure; conceptual framework.

3.

(in Kantian epistemology) a concept, similar to a universal but limited to phenomenal knowledge, by which an object of knowledge or an idea of pure reason may be apprehended.

使用条款(就是一些约定的规章制度)

异常

短语引发异常状况:, 用于通用规则和其他显示语句执行不成功的地方,通用规则应用, 除了子条款 12.3, "<过程>", 和子条款 20.1, "<直接SQL 语句>",可能中止, 可获得诊断信息,语句的执行对SQL数据或方案没有影响。被异常情况终止的SQL语句的SQL描述符区域的影响, 除非通过该国际标准显式定义,否则依赖于实现。短语引发完成状况:,用于通用规则和其他显示通用规则的应用没有中止,可获得诊断信息;除非同时引发了异常状况,否则语句执行成功。

语句执行时,可能出现多个情况。多个情况的诊断信息是否可用依赖于实现。

语法包含

在格式中,如果语法元素对于语法元素出现在BNF产生规则的右边,那么就说恰好包含。如果恰好包含或者恰好包含,而又包含,那么包含

SQL语言中,如果恰好包含,那么就说的一个实例A1恰好包含的一个实例B1 ,并且B1的文本是A1文本的一部分。如果的一个实例A1包含C1或者A1恰好包含的实例B1,而B1又包含C1,那么就说A1包含C1 

如果A1包含B1并且A1包含的一个实例C1C1又包含B1,那么就说A1通过中介包含B1。如果A1包含B1并且A1不包含C1,而C1又包含B1,那么就说A1不通过中介包含B1 

如果A1包含B1不通过中介A2或者B2,那么就说A1只包含B1 

如果包含,那么包含于对于来说是一个包含的产生符号。如果简单包含,那么简单包含于对于来说是一个简单包含的产生符号。 

假设A1的一个实例,B1的一个实例。如果包含,那么就说A1包含B1或者B1包含于A1。如果仅包含,,那么就说A1简单包含B1或者B1简单包含于A1 

    如果A1满足CA2满足C,,但A1不包含A2,那么就说A1在最内部满足条件C。如果A1满足CA2满足C,但A1不包含于A2,那么就说A1在最外部满足条件C 

如果包含一个

标志通过 V 定义的视图,那么一般包含V中的。如果包含,那么一般包含。如果一般包含 一般包含,那么一般包含 

如果A1不通过中介包含B1,那么就说A1直接包含B1

条款表示规则要求

在语法规则中,条款应定义符合SQL语言语法的条件。(附原文,增加理解In the Syntax Rules, the term shall defines conditions that are required to be true of syntactically conforming SQL language.)只有当通用规则中指定的行动执行后,这些依赖于方案内容的条件才为真。不符合的SQL格式和语法规则的语言依赖于实现。当尝试评估访问或通用规则并且实现既不是处理不符合的SQL语言也不是以不符合的方式处理符合的SQL语言时,如果语法规则规定的任一条件没有满足,那么将引发异常状况:语法错误或违反访问规则(如果这种情况发生在动态SQL语句执行中,那么引发的异常是动态SQL语句的语法错误或访问规则的违反;如果这种情况发生在直接引用SQL语句中,那么引发的异常是直接SQL语句的语法错误或访问规则的违反)。

在访问规则中,条款应定义满足通用规则成功应用的条件。当通用规则应用时,如果任一这种条件没有满足,那么将引发异常状况:语法错误或违反访问规则。

在分级规则中,条款应定义符合指定级别的SQL语言的条件。

规则评估次序

一个相符的实现并不需要执行在一般规则中定义的精确的行动次序,但是在SQL数据和方案上应达到相同的效果。该条款是用来有效地强调行动的效果可以通过实现的不同方式达到。

    包含和被包含的语法元素的语法规则和访问规则语法元素同时有效应用。包含和被包含的语法元素的一般规则应用,被包含的应用在前,包含的应用在后。当运算符的优先级取决于该国际标准的格式或者圆括号,这些符号通过该优先顺序有效地应用。当运算符不取决于该国际标准的格式或者圆括号,表达式有效的评估一般从左至右。然而,表达式是否从左至右评估是依赖于具体实现的,特别是操作数或操作符可能引发情况,或者如果表达式的结果,在没有完全评估表达式各个部分的前提下,能够确定。总之,如果一个语法元素包含多个其他的语法元素,那么出现在产生规则前面的语法元素和出现在后面的语法元素一般规则的应用,出现在前面的语法元素早于出现在后面的语法元素。

例如,在产生规则中:

    ::=

    对于,和语法规则和访问规则同时有效应用。对于的一般规则应用,之后,在最后

    如果表达式或者搜索条件的结果,在没有完全评估表达式或者搜索条件各个部分的前提下,能够确定,那么表达式或者搜索条件非必要的评估部分称为无关紧要的部分。如果属于无关紧要部分的访问规则没有满足,那么将引发语法错误或违反访问规则的异常状况 ,不管无关紧要部分是否已经评估。如果评估无关紧要部分引发异常,那么该异常是否引发依赖具体实现。

条件规则

条件规则通过“If”或“Case”惯例指定。通过“Case”惯例指定的规则包含一个使用“If”惯例的条件子规则列表。第一个条件成立的“If”子规则是“Case”规则下的有效子规则。“Case”规则下的最后一个子规则应该声明为“Otherwise”。如果之前的“If”子规则条件都不成立,那么该子规则有效。

语法替代

在语法规则和一般规则中,短语 "X is implicit"表明该语法规则和一般规则将要解释成元素X已经实际指定。In the Syntax and General Rules, the phrase "X is implicit" indicates that the Syntax and General Rules are to be interpreted as if the element X had actually been specified.

    在语法规则和一般规则中,短语 "the following is implicit: Y" 表明该语法规则和一般规则将要解释成已经实际上指定语法元素包含Y

    在语法规则和一般规则中,短语 "former is equivalent to latter" 表明该语法规则和一般规则将要解释成元素中之前的实例与之后的实例等效。

    如果在子条款中引用的BNF非终结符,没有说明它如何包含在子条款定义的BNF产生过程中,那么

    Case:

    -  如果BNF非终结符是定义在子条款的自身,那么该引用应假定为此BNF非终结符,出现在定义产生规则左边。

    -  否则,该引用应假定为一个恰好包含特殊的BNF非终结符的BNF产生规则。.

其他条款

一些语法规则定义条款,如T1,表示命名或没有命名的表。这些条款用作表名或相互关系名称。条款用作相互关系名称,这并不意味着为了命名表而定义任何新的相互关系名称,也不影响任何实际的相互关系名称。

一个SQL语句S1的执行是执行SQL语句的直接结果,如果S1是包含在一个已经执行的中的SQL语句,或者S1的值,被包含在一个已经执行的中的所引用,或者S1的值,其中通过一个与一个关联 ,并且被包含在一个已执行的所引用。

描述符

描述符是定义指定类型对象实例属性的数据的概念结构的集合。描述符的概念用于指定SQL语义。任何数据库或环境中都不需要描述符以任何特殊的形式存在。 (看原文比较好理解:A descriptor is a conceptual structured collection of data that defines the attributes of an instance of an object of a specified type. The concept of descriptor is used in specifying the semantics of SQL. It is not necessary that any descriptor exist in any particular form in any database or environment.

一些SQL对象只有在某些SQL对象的背景中才能存在。例如,列只能存在于表中 。 这些对象通过描述符独立描述,启用对象描述符(如:表)包含被启用对象的描述符(如:列或表约束)。 

在其他情况下,某些SQL对象只有在另外一些SQL对象存在的前提下才能存在, 即使不存在包含关系。例如,如果断言引用的表不存在,那么SQL不允许断言存在。 因此, 断言描述符依赖于零个或多个表描述符(等效于, 断言依赖于零个或多个表). 一般来说,描述符D1依赖或被依赖于另一个描述符D2 

有两种方式显示依赖。在许多情况下, 依赖构建描述符包含依赖构建的名称 。在这种情况下"the name of" 应理解为 "sufficient information to identify the descriptor of";因此,实现者可以选择指针或, 的串联等等。此外,描述符可以包含文本( , )。在这种情况下, 是否在实现中包含文本或它自身风格的解析树是不相关的;描述符的有效性明确依赖对象提到的描述符的存在。 

列基于域列依赖于域等效。 

如果一个描述符被其他描述符所依赖,或一个描述符被另一个描述符包含,那么企图销毁该描述符很可能会失败。销毁一个描述符会导致所有该描述符所包含的描述符被销毁,但是不影响依赖它的描述符

 

索引排印

在该国际标准的索引中,使用以下约定:

    -  以黑体出现的索引条目显示定义单词、词组或者BNF非终结符的页;

    -  以斜体出现的索引条目显示在格式中使用BNF非终结符的页;

    -  以罗马字体出现的索引条目显示在标题,函数,语法规则,访问规则,通用规则,分级规则,表,或其他描述性文本中使用的单词,词组或BNF非终结符。

数据库语言SQL的对象(即sql版本如sql9299…)标识符)

功能 

数据库语言SQL的对象标志符标志在开放的系统环境中对于其他实体SQL实现的特征。 

格式 

         ::=

                   

         ::=  

         ::= iso | 1 | iso 1  

         ::= standard | 0 | standard 0  

         ::= 9075 

         ::=  

         ::= <1987> | <1989> | <1992> 

         <1987> ::= 0 | edition1987 0

          <1989> ::= <1989 base> <1989 package> 

         <1989 base> ::= 1 | edition1989 1  

         <1989 package> ::= |  

         ::= 0 | IntegrityNo 0

          ::= 1 | IntegrityYes 1

          <1992> ::= 2 | edition1992 2

          ::= | |

          ::= 0 | Low 0

           ::= 1 | Intermediate 1

          ::= 2 | High 2

 语法规则

1) 除非<1992>,否则不会为 

2) 的值标识符合的级别:

a) 如果 指定为 <1992>, 那么

      Case:

       i) , 入门级SQL

       ii) , 中级SQL

       iii) , 完整级SQL

    b) 否则:

       i) , 级别1.

       ii) , 级别2.

 3) <1989 package>,意味着完整性增强功能没有实现。<1989 package>,意味着完整性增强功能已经实现。

 

阅读(2718) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~