您的位置:首页 > 数据库

SQL-92标准 中文翻译

2015-01-27 14:52 519 查看
转自:

鳳舞于九天,棲于桫欏,涅槃 http://blog.sina.com.cn/suoluosoul,后面还有寸身无恙的BLOG相关内容理解,记录于此,以后继续
[u]前言[/u]

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

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

国际标准ISO / IEC 9075:1992出自联合技术委员会ISO / IEC JTC1 ,信息处理系统。

它取消并取代国际标准ISO / IEC 9075:1989 ,DatabaseLanguage-SQL,构成技术性修订。

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

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

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

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

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

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

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

简介

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

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

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

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

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

重要的新特性有:

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

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

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

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

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

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

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

8) 支持在Ada、C、MUMPS语言中嵌入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 / IEC9075:1989标准之间的不兼容 。

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

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

范围

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

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

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

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

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

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

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

该国际标准

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

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

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

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

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

-数据库管理系统组件,

-SQL数据定义的声明,

-SQL过程,

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

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

规范性引用

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

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

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

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

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

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

- ISO 7185:1990, Information technology-Programminglanguages-Pascal.

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

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

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

- ISO/IEC 9579-2:[1], Information technology - Open SystemsInterconnection - Remote Database Access, Part 2: SQLspecial-ization.

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

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

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

定义、记号和约定

3.1 定义

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

3.1.1 摘自ISO/IEC10646标准的定义

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

a) character字符

b) octet字节

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

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

3.1.2 摘自ISO 8601标准的定义

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

a) Coordinated Universal Time (UTC)

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

3.1.3 该国际标准提供的定义

该国际标准定义以下条款:

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

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

c) 字符表: 用于明确的目的和应用的字符的集合。每个字符表都有一个隐含默认的整理序列。

d) 可压缩性: 字符串数据项的属性,用于管理如何确定该项的整理序列。

e) 排序规则; 整理序列:对两个可比较的字符串的排序方法. 每个字符集都有一个默认的整理序列.

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

g) 说明符: SQL对象的编码描述。 它包含了该对象符合SQL实现要求的所有信息。

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

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

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

k) 使用形式: 在字符串中表现字符的约定或编码。有些使用形式是定长的编码,有些是可变长度的编码。

l) 使用形式转换: 将字符串从一种使用形式转换为另一种使用形式的方法。

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

n) 实现依赖: 不同的SQL实现之间可能不同,不由该国际标准说明,也不要求实现者说明每个特别的SQL实现。

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

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

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

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

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

t) 多余的重复: 除了一个以外,其他的重复值或行的多重集。

u) 清单: 见字符表。

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

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

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

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

3.2 记号

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

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

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

符号含义

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

约定

3.3.1 告知性元素

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

注: 这是一个注解的例子。

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

3.3.2 语法元素说明

根据以下指定语法元素:

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

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

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

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

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

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

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

3.3.3 信息方案的详细说明

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

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

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

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

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

3.3.4 术语的使用

3.3.4.1 异常

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

短语“引发完成状况:”,用于通用规则和其他显示通用规则的应用没有中止,可获得诊断信息;除非同时引发了异常状况,否则语句执行成功。

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

3.3.4.2 语法包含

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

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

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

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

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

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

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

如果<A>包含一个<tablename>,<tablename>标志通过<viewdefinition> V定义的视图,那么<A>一般包含V中的<queryexpression>。如果<A>包含<B>,那么<A>一般包含<B>。如果<A>一般包含<B>,<B>一般包含<C>,那么<A>一般包含<C>。

如果A1不通过中介<set functionspecification>或<subquery>包含B1,那么就说A1直接包含B1。

3.3.4.3 条款表示规则要求

在语法规则中,条款应定义符合SQL语言语法的条件。只有当通用规则中指定的行动执行后,这些依赖于方案内容的条件才为真。不符合的SQL格式和语法规则的语言依赖于实现。当尝试评估访问或通用规则并且实现既不是处理不符合的SQL语言也不是以不符合的方式处理符合的SQL语言时,如果语法规则规定的任一条件没有满足,那么将引发异常状况:语法错误或违反访问规则(如果这种情况发生在动态SQL语句执行中,那么引发的异常是动态SQL语句的语法错误或访问规则的违反;如果这种情况发生在直接引用SQL语句中,那么引发的异常是直接SQL语句的语法错误或访问规则的违反)。

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

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

3.3.4.4 规则评估次序

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

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

例如,在产生规则中:

<A> ::=<B><C>

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

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

3.3.4.5 条件规则

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

3.3.4.6 语法替代

在语法规则和一般规则中,短语 "X is implicit"表明该语法规则和一般规则将要解释成元素X已经实际指定。

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

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

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

Case:

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

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

3.3.4.7 其他条款

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

一个SQL语句S1的执行是执行SQL语句的直接结果,如果S1是包含在一个已经执行的<procedure>中的SQL语句,或者S1是<SQLstatement variable>的值,<SQL statementvariable>被包含在一个已经执行的<procedure>中的<executeimmediate statement>所引用,或者S1是<SQLstatement variable>的值,其中<SQLstatement variable>通过一个<preparestatement>与一个<SQL
statementname>关联 ,并且<SQL statementname>被包含在一个已执行的<executestatement>所引用。

3.3.5 描述符

描述符是定义指定类型对象实例属性的数据的概念结构的集合。描述符的概念用于指定SQL语义。任何数据库或环境中都不需要描述符以任何特殊的形式存在。

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

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

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

“列基于域”和“列依赖于域”等效。

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

3.3.6 索引排印

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

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

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

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

数据库语言SQL的对象标志符

功能

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

格式

<SQL object identifier> ::=

<SQL provenance> <SQLvariant>

<SQL provenance> ::=<arc1><arc2><arc3>

<arc1> ::= iso | 1 | iso<left paren> 1 <rightparen>

<arc2> ::= standard | 0 | standard<left paren> 0 <rightparen>

<arc3> ::= 9075

<SQL variant> ::= <SQLedition> <SQLconformance>

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

<1987> ::= 0 | edition1987<left paren> 0 <rightparen>

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

<1989 base> ::= 1 | edition1989<left paren> 1 <rightparen>

<1989 package> ::=<integrity no> |<integrity yes>

<integrity no> ::= 0 | IntegrityNo<left paren> 0 <rightparen>

<integrity yes> ::= 1 | IntegrityYes<left paren> 1 <rightparen>

<1992> ::= 2 | edition1992<left paren> 2 <rightparen>

<SQL conformance> ::=<low> |<intermediate> |<high>

<low> ::= 0 | Low<left paren> 0 <rightparen>

<intermediate>::= 1 | Intermediate <left paren> 1<right paren>

<high> ::= 2 | High<left paren> 2 <rightparen>

语法规则

1) 除非<SQLedition>为<1992>,否则<SQLconformance>不会为<high>。

2) <SQL conformance>的值标识符合的级别:

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

Case:

i) <low>,入门级SQL。

ii) <intermediate>, 中级SQL。

iii) <high>, 完整级SQL。

b)否则:

i) <low>, 级别1.

ii) <intermediate>, 级别2.

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

概念

(数据类型)

  数据类型是可表示的值的集合。值的逻辑表示是<literal>,物理表示依赖于实现。

  在该国际标准中,如果一个值没有任何逻辑细分,那么该值是基元。一个值要么是空值要么是非空值。

  空值是依赖实现的一个特殊值,有别于所有相关数据类型的非空值。实际上只有一个空值,该空值是每个SQL数据类型的成员。空值没有<literal>,虽然关键词NULL被用在一些地方,来表明该处需要空值。

  SQL通过以下<keyword>定义各种数据类型:CHARACTER, CHARACTER VARYING, BIT, BITVARYING, NUMERIC, DECIMAL, INTEGER, SMALLINT, FLOAT, REAL, DOUBLEPRECISION, DATE, TIME, TIMESTAMP, and INTERVAL.

  子条款 6.1, "<data type>",描述了各种数据类型的语法属性。

  为了便于参考,数据类型CHARACTER 和CHARACTER VARYING统称为字符型字符串类型。 BIT和BITVARYING统称为位字符串类型。字符型字符串和位字符串统称为字符串类型。其值为字符串。数据类型NUMERIC, DECIMAL,INTEGER 和SMALLINT 统称为精确数值类型。数据类型FLOAT, REAL 和DOUBLE PRECISION统称为近似数值类型。精确数值类型和近似数值类型统称为数值类型,其值是数字。数据类型DATE,TIME和TIMESTAMP统称为日期时间类型,其值是日期、时间。数据类型INTERVAL
是间隔类型,其值是间隔。

  每个数据类型都有一个相关的数据类型描述符。数据类型描述符的内容由具体的数据类型决定。数据类型描述符包括数据类型的识别,所有宿主语言都有它自身的数据类型,独立于SQL数据类型,尽管可能使用相同的名字来描述数据类型。在子条款12.3,"<procedure>",和子条款19.1,"<embedded SQL hostprogram>"描述了将SQL数据类型映射为宿主语言数据类型。不是每个SQL数据类型在宿主语言中都有其对应的数据类型。

(位字符串)

4.3 位字符串

位字符串是二进制位序列,每个位具有0或1值。位字符串具有长度,长度为字符串中位的个数。长度为0或正整数。

位字符串数据类型通过其描述符描述。位字符串数据类型描述符包括:

- 明确的位字符串数据类型名称(BIT或BIT VARYING);

- 位字符串数据类型的长度。

4.3.1 位字符串比较和赋值

所有为字符串都可相互比较。两个位字符串相等,当且仅当根据子条款8.2, "<comparisonpredicate>"指定的比较它们是相等的。

将位字串赋值给位字串变量,源字串中从最重要的位到最不重要的位,到目标字符串最重要的位,一次赋一位。

4.3.2 位字符串操作符

4.3.2.1 位字串操作符和其返回值

字符串

<bitconcatenation>是一个操作符‘|’,返回连接两个给定次序的位字符串操作对象形成的位字符串。

<bit substringfunction>是一个三元函数,语法和语义,除了第一个参数和返回值均为位字符串外,其他与<charactersubstring function>同。

4.3.2.2 其他位字符串操作符

<length expression>返回给定位字符串长度。

<positionexpression>确定字符串S1第一次出现在字符串S2的位置。如果S1的长度为0,则对于任何S2,返回1。如果S2中不存在S1,则返回0。

还有寸身无恙的BLOG也有相关内容:

寸身无恙的BLOG
http://blog.sina.com.cn/u/1080755857 http://blog.sina.com.cn/s/articlelist_1080755857_1_1.html
SQL标准介绍:动态SQL
http://blog.sina.com.cn/s/blog_406b0691010006wh.html
SQL标准介绍:嵌入式SQL
http://blog.sina.com.cn/s/blog_406b0691010006wg.html
SQL标准介绍:SQL访问控制
http://blog.sina.com.cn/s/blog_406b0691010006we.html
SQL标准介绍:SQL数据语句
http://blog.sina.com.cn/s/blog_406b0691010006w2.html
SQL标准介绍:SQL模式语句
http://blog.sina.com.cn/s/blog_406b0691010006w0.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: