赞
踩
转自:
鳳舞于九天,棲于桫欏,涅槃 http://blog.sina.com.cn/suoluosoul,后面还有寸身无恙的BLOG相关内容理解,记录于此,以后继续
前言
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)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
该国际标准的内容组织如下:
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
21)
22)
23)
24)
25)
26)
27)
28)
29)
在该国际标准的文本中,条款开始于一个新的奇数页,并在第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.
定义、记号和约定
为了该国际标准的目的,应用以下定义。
该国际标准使用的以下条款,摘自ISO/IEC 10646标准:
a)
b)
c)
d)
该国际标准使用的以下条款,摘自ISO 8601标准:
a)
b)
该国际标准定义以下条款:
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)
k)
l)
m)
n)
o)
p)
q)
r)
s)
t)
u)
v)
w)
x)
y)
该国际标准中使用的语法符号是BNF 的一种扩展版本 ("Backus Naur Form" or "Backus NormalForm")。
符号含义
<>
::=
[ ]
{ }
|
. . .省略号表明在规则中省略号应用的元素可能被重复多次。如果省略号紧跟在闭花括号"}"之后,那么它应用于闭花括号和开花括号"{"之间的规则部分。如果省略号出现在其他任何元素的后面,那么它只应用于该元素。
!!
空格用来分隔语法元素。多个空格和多个换行符被视为单个空格。除了上面所给的特殊用途的符号,在规则中的其它字符和字符串表示其本义。此外,如果定义操作符右边的符号全部由BNF中的符号组成,那么这些符号仅代表其本义,不需要考虑其特殊含义。
花括号对和方括号对内部可以任意嵌套,替换操作符可以出现在嵌套的任何地方。
形成任何语法元素实例的字符串可能产生自该元素的BNF定义,产生过程应用以下步骤:
1) 对于该元素,选择在产生规则右边定义的任意一个选项, 并用该选项替换该元素。
2) 替换每个省略号和省略号所应用的一个或多个对象的实例。
3) 对于方括号中的字符串部分, 要么删除括号和括号中的内容,要么将括号转换为花括号。
4) 对于花括号中的字符串部分,对其子字符串应用步骤1至步骤5,然后移除花括号。
5) 对于仍然在字符串中的非终结语法元素(如在尖括号中的名称),应用步骤1至步骤5 。
当字符串中不再存在非终结符时,扩展过程(或产生过程)完成。
告知性的注解在该国际标准正文中出现好几次。 例如:
注: 这是一个注解的例子。
这些注解不属于该国际标准的规范部分,并且不应声明符合注解中说明的资料。
根据以下指定语法元素:
注释性符号的范围是定义这些符号的子条款。子条款中,在语法规则,访问规则或者通用规则中定义的符号可以在其他规则中引用,引用前需先定义。
根据以下指定该国际标准的信息方案对象:
短语“引发异常状况:”, 用于通用规则和其他显示语句执行不成功的地方,通用规则应用, 除了子条款 12.3,"<过程>", 和子条款 20.1,"<直接SQL 语句>",可能中止,可获得诊断信息,语句的执行对SQL数据或方案没有影响。被异常情况终止的SQL语句的SQL描述符区域的影响,除非通过该国际标准显式定义,否则依赖于实现。
短语“引发完成状况:”,用于通用规则和其他显示通用规则的应用没有中止,可获得诊断信息;除非同时引发了异常状况,否则语句执行成功。
在格式中,如果语法元素<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。
如果<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。
在语法规则中,条款应定义符合SQL语言语法的条件。只有当通用规则中指定的行动执行后,这些依赖于方案内容的条件才为真。不符合的SQL格式和语法规则的语言依赖于实现。当尝试评估访问或通用规则并且实现既不是处理不符合的SQL语言也不是以不符合的方式处理符合的SQL语言时,如果语法规则规定的任一条件没有满足,那么将引发异常状况:语法错误或违反访问规则(如果这种情况发生在动态SQL语句执行中,那么引发的异常是动态SQL语句的语法错误或访问规则的违反;如果这种情况发生在直接引用SQL语句中,那么引发的异常是直接SQL语句的语法错误或访问规则的违反)。
在访问规则中,条款应定义满足通用规则成功应用的条件。当通用规则应用时,如果任一这种条件没有满足,那么将引发异常状况:语法错误或违反访问规则。
在分级规则中,条款应定义符合指定级别的SQL语言的条件。
一个相符的实现并不需要执行在一般规则中定义的精确的行动次序,但是在SQL数据和方案上应达到相同的效果。该条款是用来有效地强调行动的效果可以通过实现的不同方式达到。
例如,在产生规则中:
条件规则通过“If”或“Case”惯例指定。通过“Case”惯例指定的规则包含一个使用“If”惯例的条件子规则列表。第一个条件成立的“If”子规则是“Case”规则下的有效子规则。“Case”规则下的最后一个子规则应该声明为“Otherwise”。如果之前的“If”子规则条件都不成立,那么该子规则有效。
在语法规则和一般规则中,短语 "X is implicit"表明该语法规则和一般规则将要解释成元素X已经实际指定。
一些语法规则定义条款,如T1,表示命名或没有命名的表。这些条款用作表名或相互关系名称。条款用作相互关系名称,这并不意味着为了命名表而定义任何新的相互关系名称,也不影响任何实际的相互关系名称。
描述符是定义指定类型对象实例属性的数据的概念结构的集合。描述符的概念用于指定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>)。在这种情况下,是否在实现中包含文本或它自身风格的解析树是不相关的;描述符的有效性明确依赖对象提到的描述符的存在。
“列基于域”和“列依赖于域”等效。
如果一个描述符被其他描述符所依赖,或一个描述符被另一个描述符包含,那么企图销毁该描述符很可能会失败。销毁一个描述符会导致所有该描述符所包含的描述符被销毁,但是不影响依赖它的描述符。
在该国际标准的索引中,使用以下约定:
功能
数据库语言SQL的对象标志符标志在开放的系统环境中对于其他实体SQL实现的特征。
格式
语法规则
1) 除非<SQLedition>为<1992>,否则<SQLconformance>不会为<high>。
2) <SQL conformance>的值标识符合的级别:
a) 如果 <SQL edition> 指定为<1992>, 那么
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数据类型在宿主语言中都有其对应的数据类型。
(位字符串)
位字符串是二进制位序列,每个位具有0或1值。位字符串具有长度,长度为字符串中位的个数。长度为0或正整数。
所有为字符串都可相互比较。两个位字符串相等,当且仅当根据子条款8.2, "<comparisonpredicate>"指定的比较它们是相等的。
字符串
<bitconcatenation>是一个操作符‘|’,返回连接两个给定次序的位字符串操作对象形成的位字符串。
<length expression>返回给定位字符串长度。
还有寸身无恙的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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。