·集: | 集是不同对象的无序集合。
多重集是未必不同的对象的无序集合。
序列则是未必不同的对象的有序集合。
集合的基数是这个集合中的对象的个数。除非另外指定,任一集合可以为空。 |
·数据类型: | 数据类型是可表示值的集,值的逻辑表示是<字值>。值的物理表示是由实现者定义的。
在本标准内,值是初等项,对其不能再作逻辑细分。值或是空值,或是非空值。
空值是实现者定义的与类型相关的特殊值,该值不同于这个类型的所有非空值。
非空值是字符串或是数。字符串与数是相互不可比较的值。 |
·字符串: | 字符串由实现者定义的字符集的字符序列组成。字符串有长度,它是一个正整数,指出该
序列中字符的个数。
所有的字符串都是可比较的。当且仅当按照4.11“<comparisQn谓词>”中所指明的比较
规则,一个字符串与另一个字符串相等时它们相等。 |
·数: | 数或是精确数字值,或是近似数字值,所有的数都是可比较的。
精确数字值有精度和标度。精度为正整数,它确定该数字值的有效十进制数的位数,标度
为非负整数。标度为0表示该数字是一个整数,标度为N表示这个精确数字值是有效十进制
整数乘以10的一N次方。
近似数字值由尾数和指数组成。尾数为带符号的数字值,而指数为带符号的整数,指数说
明尾数的数量级。近似数字值有一个精度,该精度是正整数,它说明在尾数中有效二进制数的
位数。
每当把一个精确数字值赋予一个表示精确数字值的数据项或参数时,则按目标数据类型
表示精确数值的近似值,此近似值保存了高位的有效数字。转换这个值使它具有目标的精度与
标度。
每当把一个精确数字值近似数字赋予一个表示近似数字值的数据项或参数时,则按目标
数据类型表示该值的近似值,把该值转换为具有目标的精度。 |
·列: | 列是一些可随时变更的值的一个多重集。同一列的所有值具有同样的数据类型且都是在
同一个表中的值。列的值是从表中可选择的数据的最小单位,也是可以更新数据的最小单位。
列有一个描述和一个在表内的顺序位置,列的描述包括它的数据类型和说明该列是否限
于只包含非空值,字符串列的描述还指明它的长度。近似数值列的描述指明该数值的精度。精
确数值列的描述指明该数值的精度和标度。
命名列是命名表的一个列,或是继承了命名列的描述的一个列,命名列的描述包括它的名
字。 |
·表: | 表是行的多重集,行是值的非空序列,同一表中的每一行都有相同的基数.并包含该表每
个列的一个值,表的每行内的第i个值是该表第i列的一个值。行是能够插入到表中并能从表
中删除的数据的最小单位。
表的度是该表中列的个数。无论何时,表的度与每一行的基数相同;而表的基数与它每列
的基数相同。
表有一个描述,该描述包括对它的所有列的描述。
基表是一个用<表定义>定义的命名表。基表的描述包括它的名字。
导出表是通过对<查询说明>求值。从一个或多个其它表中直接或间接导出的表。导出表
的值是当其被导出时那些作为基础的表的值。
视图表是由<视图定义>定义的命名的导出表。视图表的描述包括它的名字。
表或是可更新的,或是只读的。对于可更新的表允许做插入、更新和删除等操作.对于只读
表不允许做上述操作。
分组表是<group by子句>求值期间导出的分组的集。一个分组是一些行的多重集,在这
些行内分组列的所有值都相等。分组表可看作是一些表的集合。集函数可在分组表内各个表
上进行操作。
分组视图是从分组表导出的视图表。 |
·模式: | <模式>是由模式定义语言所指明的一个持久对象。它由一个<模式授权子句>与所有
<表定义>,<视图定义>与(特权定义>组成,在一个环境中系统用所指明的<授权标识符
>识别<模式>的上述组成,这里,环境的概念是实现者定义的。
由<模式>定义的表、视图和特权可看成是对该<模式>所指明的<授权标识符>所”拥
有”的或“建立”的。
注:实现可以提供一些设施(DROP TABLE,DROP VIEW,ALTER TABLE与REVOKE)允许对给定<授权标识符
的表、视图和特权的定义随看时间的推移面于以建立、消除和修改,然而,本标准仅说明了能表不在给定时刻系统已
知定义的那些<模式>。 |
·数据库: | 数据库是一个环境是由若干<模式>定义的所有数据的集合。环境的概念是由实现者定
义的。 |
·模块: | <模块>是用模块语言指明的持久对象。一个<模块>是由一个任选的<模块名>、一个
<语言子句>、一个<模块授权子句>、零个或多个由<申明游标>指明的游标以及一个或多
个<过程>组成。
一个应用程序是一段可执行的代码,它可能由多个子程序组成。单个<模块>在其执行期
间与一个应用程序相联系。一个应用程序应至多与一个<模块>相联系。其中指明的联系方
式,包括执行某个实现者定义语句的可能要求,是由实现者定义的。 |
·过程: | <过程>由<过程名>、<参数申明>序列和单个<SQL语句>组成。
与<模块>相联系的应用程序可以通过“调用”语句来引用那个<模块>中的<过程>。
这个“调用”语句指明该<过程>的<过程名>,并提供参数值的序列,其参数的个数和<数据
类型>对应于该<过程>的<参数申明>。<过程>的调用导致该过程所包含的<SQL语句
>的执行。 |
·参数: | 参数是在<过程>中由<参数申明>来申明的,<参数申明>指明参数值的<数据类型
>。参数在<过程>调用中接受或提供相应变元的值。 |
·SQLCODE参数: | SQLCODE参数是一个专用的整数型参数,它的值设置为一个状态码,该码或指示<过程
>的一个调用已成功地完成,或指示在<过程>执行期间产生了一个异常条件。 |
·指示符参数: | 指示符参数是整数型参数,它在另一个参数之后指明,主要用来指示该参数接受或提供的
值是否为空值。 |
·标准程序设计语言: | 本标准指明当<模块>中<过程>被符合规定的标准程序设计语言的程序调用时这些<
过程>的动作。术语“标准COBOL程序”、“标准FORTRAN程序”、“标准Pascal程序”、“标准
PL/1程序”、“标准Ada程序”系指在第2章“引用标准”中列出的满足这些标准的相符性准则
的那些程序。 |
·游标: | 游标由<申明游标>指明。
对于<模块>中的每个<申明游标>,当引用该<模块>的一个事务(参见3.16“事务”)
初始化时,才能有效地建立一个游标,并在该事务终止时取消此游标。
游标或处于打开状态,或处于关闭状态。游标的初始状态是关闭状态。通过<open语句>
可将游标置于打开状态,通过<close语句>,<cornmit语句>或<rollback语句>可使游标回
到关闭状态。
处于打开状态的游标指示一个表,该表的行序和对应于该行序的一个位置,如果<申明游
标>没有包括<order by子句>,或如果包括一个没有完全指明行序的<orderlby子句>,则
该表的那些行有一个完全或部分由实现者定义的行序。
在同一个事务中,当没有定义行序或用<order by子句>没有完全定义行序的情况下,任
意两行的相对位置在每次打开游标时,一般应该一样。如果在<申明游标>中<查询说明>引
用的数据库的值或参数值不同,则两次打开的行序可以不同。
在独立的一些事务中,即使<申明游标>的<查询说明>引用的数据库的值或参数值相
同,用同一<游标说明>和<open语句>指示的那些行序也可以不相同。
处于打开状态的游标位置或在某一行之前,或在某一行上,或在最后一行之后。如果游标
在某一行上,则该行是该游标的当前行。即使该表为空,游标也可以在第一行之前或最后一行
之后。
<fetch语句>将一个打开的游标的位置推进到游标所在位置的下一行,并检索出该行各
个列的值。<update语句:定位>更新游标的当前行。<delete语句:定位>删除游标的当前
行。
如果游标在某一个行之前,并把一个新行插入到那个位置,对这个游标位置如果有影响,
其影响是实现者定义的。
如果游标在某一行上或在某一行之前,且该行被删除,那么游标就被定位在紧接着被删除
行之后的那个行之前,如果不存在这样的行,那么游标的位置就在最后一行之后。
如果在一个涉及打开的游标的<SQL>语句的执行过程中产生了错误,如果对该游标位
置或状态有影响,其影响是实现者定义的。
工作表是由于游标打开而产生的表。游标打开是否会导致工作基表或者工作视图表的建
立是实现者定义的。
对工作视图表的每一行仅当游标定位在该行时才被导出。
工作基表在游标打开时建立;当游标关闭时撤消。 |
·语句: | <SQL语句>指明数据库操作或游标操作。<select语句>从表中取出值。<insert语句
>把行插入到表中。<update语句:搜索>或<update语句:定位>更新表中行的值。<delete
语句:搜索>或<delete语句:定位>删除表中的行。 |
·嵌人语法: | 一个<嵌入SQL的宿主程序>(<嵌入SQL的COBOL程序>,<嵌入SQL的FOR—
TRAN程序>,<嵌入SQL的Pascal程序>,<嵌入SQL的PL/l程序>或<嵌入SQL的
Ada程序>)是由程序设计语言正文与SQL正文组成的一个应用程序。程序设计语言正文应
与特定的标准程序设计语言的要求一致。SQL正文应由一个或多个<嵌入的SQL语句>和,
可任选地,一个或多个<嵌入的SQL申明节>组成。这就允许将数据库应用表示为一个混合
形式,在此形式中<SQL语句>直接嵌入到应用程序中。这样的混合应用程序定义为一个等
价的标准应用程序,在该标准应用程序中用标准过程或独立的SQL<模块>中的SQL<过程
>的子例行程序的CALL替换<SQL语句>。 |
·5 特权: | 特权是通过所指明的<授权标识符>对指明的表或视图授权在其上执行的一个给定的<
动作>类。这些<动作>可以指明为INSERT.DELETE,SELECT,UPDATE和REFER—
ENCE。
对每个<模式>与<模块>都要指明一个<授权标识符>。
对<模式>所指明的<授权标识符>应与同一环境中任何其它<模式>的<授权标识符
>不同。<模式>的<授权标识符>是这个<模式>所定义的所有表和视图的“拥有者”。
表与视图用<表名>指定。<表名>由<授权标识符>和<标识符>组成。<授权标识
符>标识<模式>,在该<模式>中由<表名>指定的表或视图是已定义的。在不同的<模式
>内定义的表与视图可以有相同的<标识符>。
如果对<表名>的引用没有明显地包含<授权标识符>,则其所在<模式>的或<模式
>的<授权标识符>指明为缺省。
<模式>的<授权标识符>对该<模式>内定义的表和视图具有所有特权。
具有一个给定<授权标识符>的<模式>可以包含有<特权定义>,该<特权定义>把
特权授予其它<授权标识符>。所授予的特权可以应用于当前<模式>中定义的表和视图,或
者它们可以是由其它<模式>授予给定<授权标识符>的特权。<特权定义>中的WITH
GRANT OPTION子句指明一个特权的接收者是否可以把此特权授予其他的<授权标识符
>。
<模块>指明一个<授权标识符>,即<模块授权标识符>,它应具有该<模块>内每个
<SQL语句>所指明的特权。 |
·事务: | 事务是一个包括有数据库操作的操作序列,该序列是关于恢复与并发的原子单位。当一个
<过程>被调用.且当前没有事务活动,事务就被始化。事务用<commit语句>或<rollback
语句>来终止。如果事务用<commit语句>终止,则该事务使数据库产生的全部改变对所有
并发事务都是可访问的。如果用<rollback语句>终止事务,则这个事务对数据库所做的全部
改变都被撤消。而已交付的改变不能撤消。事务对数据库所产生的改变可被该事务所感知.但
是在这个事务用<commit语句>终止之前,这些改变不能被其他事务所感知。
并发事务的执行应确保可串行化。可串行化的执行定义为并发执行事务操作的一种执行,
该执行与同一组事务的某个顺序执行产生相同的效果。顺序执行含义是:每个事务的执行应在
下一个事务开始之前完成。
除在<SQL语句>的一般规则所陈述的效果以外,在一个事务中<SQL语句>的执行对
数据库没有影响。
联系串行化的执行,意味着在一个事务中所有的读操作是可重现的。以下情况除外:
a.事务本身显式地使数据库和它的内容改变所产生的影响。
b.提供给打开游标并接着通过该游标检索的过程以不同参数值的影响。 |