SQL92标准 中文翻译.docx
《SQL92标准 中文翻译.docx》由会员分享,可在线阅读,更多相关《SQL92标准 中文翻译.docx(26页珍藏版)》请在冰豆网上搜索。
SQL92标准中文翻译
SQL-92标准 中文翻译
前言
ISO(国际标准化组织)是一个由国家标准机构(ISO成员机构)构成的世界性的联邦。
通常由ISO技术委员会开展筹备国际标准的工作。
如果成员机构关注的某个主题成立了技术委员会,那么成员机构有权派代表参加该委员会。
与ISO有联络的国际组织,政府和非政府组织,也参与工作。
在所有电工标准化的问题上,ISO与国际电工委员会(IEC)密切合作。
被技术委员会采纳的国际标准草案将会分发给各成员机构寻求认可,之后才能由ISO理事会接受为国际标准。
按照ISO规程,需要参加表决的成员机构中至少75%赞成,该草案才能通过。
国际标准ISO/IEC9075:
1992出自联合技术委员会ISO/IECJTC1,信息处理系统。
它取消并取代国际标准ISO/IEC9075:
1989,DatabaseLanguage-SQL,构成技术性修订。
该国际标准包含了七个告知性的附录:
-附录A(资料):
SQL语言的分级;
-附录B(资料):
实现定义的要素;
-附录C(资料):
实现依赖的要素;
-附录D(资料):
不推荐使用的功能;
-附录E(资料):
与ISO/IEC9075:
1989的不兼容;
-附录F(资料):
SQL的维护和解释。
简介
该国际标准于1992年被批准。
该国际标准是从ISO/IEC9075:
1989(信息系统,数据库语言SQL完整性增强)发展而来,并取代了那个国际标准。
该国际标准在详细说明中增加了大量重要的新特性和功能。
一般情况下该标准与ISO/IEC9075:
1989标准兼容,也就是说,除了极少数例外,符合ISO/IEC9075:
1989标准的SQL语言也符合该国际标准,并且在两者实现上保持一致。
在ISO/IEC9075:
1989和该国际标准之间,已知的不相容参考告知性附件E“与ISO/IEC9075:
1989的不兼容”。
在ISO/IEC9075:
1989和该国际标准之间,技术方面的改变包括现有功能的改进或增强和新功能的定义。
现有功能的重要改进有:
-直接调用SQL语言的更好的定义;
-改进的诊断能力,特别是新的状态参数(SQLSTATE),诊断领域,并支持报表。
重要的新特性有:
1) 支持更多的数据类型(DATE,TIME,TIMESTAMP,INTERVAL,BITstring,variable-lengthcharacterandbitstrings,andNATIONALCHARACTERstrings),
2) 除了表示SQL语言本身以外,还支持字符集和更多的排序规则,
3) 支持更多的标量操作,如连接字符串和取子字符串的字符串操作,日期和时间操作,条件表达式的形成,
4) 在标量值查询表达式和表值查询表达式的使用上,增强了通用性和正交性,
5) 更多的set操作符(例如,unionjoin,naturaljoin,setdifference,andsetintersection),
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/IEC9075:
1989的不兼容”,是一个告知性的附录。
它列出了该国际标准当前版本和ISO/IEC9075:
1989标准之间的不兼容。
29) 附录F,“SQL的维护和解释”,是一个告知性的附录。
它列出自ISO/IEC9075:
1989采纳以来,被ISO/IECJTC1/SC21处理过的SQL解释和修正。
在该国际标准的文本中,条款开始于一个新的奇数页,并在第5条“词法要素”到第22条“状态码”,子条款开始于新的一页。
任何由此产生的空白空间不是很大。
范围
该国际标准定义了SQL数据的数据结构和基本操作。
它提供了SQL数据的创建,获取,维护,控制,保护的功能。
注:
该国际标准的构架使用数据管理的关系模型描述(ISO/IECDIS10032:
1991)。
该国际标准规定了对以下几点的数据库语言的语法和语义:
-SQL数据的结构和完整性约束的指定和修改,
-SQL的数据和游标的声明和调用操作,
-数据库语言过程的声明,并将其嵌入到标准的编程语言中。
它还指定描述SQL数据的结构和完整性约束的信息方案。
该国际标准
-为在多个SQL实现之间的数据定义和编译单元的可移植性提供载体,
-为多个SQL实现的互连提供载体,
-为在编译单元中的嵌入式SQL语句,规定了相关语法,否则就需要符合特殊的编程语言标准。
它定义符合特定编程语言标准的等效的编译单元。
在这等效的编译单元中,每个嵌入式SQL语句被一些语句替换,这些语句调用包含了SQL语句的数据库语言过程,
-规定了直接引用SQL语句的语法。
该国际标准在以下几条中,没有定义方法或绑定的时间
-数据库管理系统组件,
-SQL数据定义的声明,
-SQL过程,
-编译单元,包含了嵌入式SQL。
实现该国际标准可能的环境,还应支持应用程序的编程语言,终端用户的查询语言,报告生成系统,数据字典系统,项目库系统,和分布式通信系统,以及数据库设计,数据管理,和性能优化等各种工具。
规范性引用
下列标准包含的规定构成该国际标准的规定。
该版本自发布之时有效。
所有的标准都受制于修订,鼓励基于该国际标准各方达成协议,调查应用如下所列最新版国际标准的可能性。
IEC和ISO的成员维护当前有效国际标准的登记。
-ISO/IEC646:
1991,Informationtechnology-ISO7-bitcodedcharactersetforinformationinterchange.
-ISO/IEC1539:
1991,Informationtechnology-Programminglanguages-Fortran.
-ISO1989:
1985,Programminglanguages-COBOL.(EndorsementofANSIX3.23-1985).
-ISO2022:
1986,Informationtechnology-ISO7-bitand8-bitcodedcharactersets-codeextensiontechniques.
-ISO6160:
1979,Programminglanguages-PL/I(EndorsementofANSIX3.53-1976).
-ISO7185:
1990,Informationtechnology-Programminglanguages-Pascal.
-ISO8601:
1988,Dataelementsandinterchangeformats-Informationinterchange-Representationofdatesandtimes.
-ISO8652:
1987,Programminglanguages-Ada.(EndorsementofANSI/MIL-STD-1815A-1983).
-ISO/IEC8824:
1990,Informationtechnology-OpenSystemsInterconnection-SpecificationofAbstractSyntaxNotationOne(ASN.1).
-ISO/IEC9579-2:
[1],Informationtechnology-OpenSystemsInterconnection-RemoteDatabaseAccess,Part2:
SQLspecial-ization.
-ISO/IEC9899:
1990,Programminglanguages-C.
-ISO/IEC10206:
1991,Informationtechnology-Programminglanguages-ExtendedPascal.
-ISO/IEC10646:
[1],Informationtechnology-Multiple-octetcodedcharacterset.
____________________
[1]即将发布
-ISO/IEC11756:
[1],Informationtechnology-Programminglanguages-MUMPS.
定义、记号和约定
3.1 定义
为了该国际标准的目的,应用以下定义。
3.1.1 摘自ISO/IEC10646标准的定义
该国际标准使用的以下条款,摘自ISO/IEC10646标准:
a) character字符
b) octet字节
c) variable-lengthcoding可变长度编码
d) fixed-lengthcoding固定长度编码
3.1.2 摘自ISO8601标准的定义
该国际标准使用的以下条款,摘自ISO8601标准:
a) CoordinatedUniversalTime(UTC)
b) date("date,calendar"inISO8601)
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的一种扩展版本("BackusNaurForm"or"BackusNormalForm")。
在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 语法包含
在格式中,如果语法元素对于语法元素出现在BNF产生规则的右边,那么就说恰好包含。
如果恰好包含或者恰好包含,而又包含,那么包含。
在SQL语言中,如果恰好包含,那么就说的一个实例A1恰好包含的一个实例B1,并且B1的文本是A1文本的一部分。
如果的一个实例A1包含C1或者A1恰好包含的实例B1,而B1又包含C1,那么就说A1包含C1。
如果A1包含B1并且A1包含的一个实例C1,C1又包含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满足C,A2满足C,,但A1不包含A2,那么就说A1在最