全国计算机等级考试四级数据库复习知识3.docx
《全国计算机等级考试四级数据库复习知识3.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试四级数据库复习知识3.docx(8页珍藏版)》请在冰豆网上搜索。
全国计算机等级考试四级数据库复习知识3
2019年全国计算机等级考试四级数据库复习知识3
(4)关闭(CLOSE)游标。
关闭游标,使它不再和原来的查询结果相联系。
关闭了的游标能够再次被打开,与新的查询结果集相联系。
使用CURRENT形式的UPDATE和删除语句应注意:
(1)若游标定义中的SELECT语句带有UNION或ORDERBY子句,或者这个SELECT语句相当于定义了一个不可更新的视图,则不能用这两个更新语句。
(2)若使用CURRENT形式的UPDATE语句,则游标定义中要包括FORUPDATE子句,指出更新的字段(SET子句中使用的字段)。
所以,游标定义语句的一般格式为:
EXECSQLDECLARE游标名CURSORFOR子查询UNION子查询…[FORUPDATEOF字段名[,字段名]…|ORDER-BY-子句];
11.SQL的事务处理功能
(1)事务处理的概述所谓事务(Transaction)是指一系列动作的组合,这些动作被当作一个整体来处理。
这些动作或者相继都被执行,或者什么也不做。
在数据库中,一个动作是指一个SQL语句。
事务是一组SQL语句组成的一个逻辑单位。
要么这些SQL语句全部被按顺序准确执行,要么在某SQL语句执行失败时,按照用户要求,取消已执行的SQL语句对数据库中数据的修改。
或者要么事务中SQL语句都被准确执行,完成该事务对数据库中数据的所有操作;或者要么相当于一条SQL语句也未执行,数据库数据未做任何改动。
(2)SQL语言的事务处理语句SQL语言有3条语句用于事务处理,它们是:
(1)Commit语句,对于准确执行了的事务实行提交,实行提交即对数据库中数据的修改永久化。
同时还释放事务和封锁,标志该事务结束。
(2)Savepoint语句,定义事务中的一个回滚保留点,它是事务恢复时的一个标记点。
(3)rollback语句,无论事务执行的当前位置在哪里,该语句的执行要么取消事务执行以来对数据库的全部修改,要么取消至某个指定回滚点后对数据库的全部修改。
释放自保留点之后的全部表或行的封锁(没有保留点,相当于回滚到事务开始处,终止该事务)。
事务的恢复(回滚)是根据事务执行前保存下的当时数据库状态来实现的。
一遇到rollback语句,就将数据库中数据恢复到原来的状态,相当于撤消事务中已执行了的SQL语句。
来源:
四、数据库的存储结构
数据库的存储结构不同于一般文件系统的存储结构。
数据库数据的特点是各种记录型之间彼此有联系,数据是结构化的。
数据的存储结构不但涉及每种记录型的记录如何存储,而且要使数据的存储反映各种记录型之间的联系。
在DB多级模式中引入内模式(存储模式)的主要目的是使模式的数据结构的描述同它的存储表示的描述分开,以致DBA为了协调数据库性能而对数据库数据的存储方法实行修改时,可不必修改模式,以提升数据库的物理独立性。
在各个数据库管理系统中,对内模式的定义功能各不相同。
在关系数据库管理系统中有些DDL语句可影响数据库的存储结构。
在DBMS中各级模式的存储结构是恒定的或的,而数据库内容(或其记录)的存储方式是不的。
数据库存储结构设计的好坏直接影响系统的性能。
在存储结构中主要是涉及存储记录的设计。
存储记录与概念记录之间具有对应关系,如果存储记录与概念记录之间具有一一对应关系,在这种情况下存储记录的设计就比较简单,不需要进一步讨论。
概念记录是指在逻辑结构中的记录。
但当一个概念记录对应多个不同类型的存储记录时,存有如何设计存储记录的问题。
对于这样的概念记录,其存储记录能够有以下几种设计:
1.顺序组织
将存储记录设计成与概念记录一一对应,按SNO大小(或按记录到来)的顺序将记录组成一个顺序组织的文件。
这样组织的优点是结构简单,缺点是会浪费存储空间。
2.顺序带链的组织
顺序带链组织允许记录中带有指针(Pointer),这样能够大大节省存储空间。
3.带次关键字索引的顺序组织
为了适合对多项内容的检索,能够建立索引文件,上述组织可改为带次关键字索引的顺序组织。
4.多表组织
在次关键字索引中,因为一个次关键字值对应于多个记录值,它们的个数是不固定的,所以对应的指针数目是可变的。
这种可变性给管理带来困难,为了解决这个困难,引入了多表组织。
多表组织的实现思想比较简单,在索引中多个指针分散存放在每个记录值中,索引项中的指针指向第一个记录,在第一个记录中的指针指向第二个记录等等。
5.完全倒排组织在一个记录型中,对主关键字以外的数据项都建立索引,这样的组织称之为完全倒排组织。
6.Hash定址组织对于每一个存储记录值存放在数据库的什么地方,可通过对该记录的主关键字值的杂凑函数计算得出。
这种组织为Hash定址组织。
杂凑函数种类很多,如质数除余法、基数转换法、平方取中法、折叠法、位移法及各位数字分析法等等。
关键是如何选择一个杂凑函数,尽可能避免发生碰撞。
对于不同的主关键字值通过计算而得到同一个地址的映象,称之为碰撞。
7.联系的存储
在关系数据库中,通过外来关键字(ForeignKey)来表示概念记录之间的联系。
例如,为了表达学生和学校的联系,能够在学生记录中增加外来关键字“学校号”来表示联系。
五、关系数据库
1.表格
表格(或简称表)表示了用户的特定类型(Type)的一些实体。
表头由一些属性名(AttributeName)组成,每个属性名对应于一列。
在表上属性名必须,不允许重名。
表体是由一些行或元组(tuple)、或记录(record)组成。
一个元组对应于传统的文件结构中的一个记录,一个记录含有若干个域(field)用以存储属性值(Attributevalue)。
一个元组对应于一个“用户”实体的出现(occurrence)。
表体中每一行和某一列的交叉点(相当于记录中的域)上保存一个属性值。
这个属性值叫做这个行(或这个实体出现)的相对应属性值。
表体中每一列能够保存的值对应于某种属性类型(TypeofAttribute),也就是说,这个列的属性值只能取这个属性类型的值。
某个属性所能取的所有值的集合叫做这个属性的值域(DomainofAttribute)。
类型和值域的对应关系是一对多的。
一个类型有一个值域,但一个值域能够作为多个类型,基名称不同,但实质上值域一样。
实际上,类型是对值域的命名。
能标识一个元组的属性称之为关键属性(PrimaryKeyAttribute)或简称为主关键字(PrimaryKey)。
主关键字有时是由多个属性组成的,此时的主关键字叫做组合关键字(ConˉcatenatedprimaryKey)。
有的时候,表中必须由一些组合的主关键字才能地标识一个元组,也就是说,不存有能作关键字的一个属性。
这时为了方便,往往引入一个附加的属性并称之为外来关键字(ForeighKey)来作主关键字。
外来关键字为以后检索和查询带来了方便,但也增加了信息冗余。
来源:
2.表名、表头和表体
表名、表头和表体在关系模型中具有不同的作用或功能,因而也具有完全不同的性质。
表头是一个属性的集合,它规定了表的结构。
表体是一个特殊的集体,称作为关系(relation)。
“关系模型”中的“关系”一词就是指表体中的这个数学关系。
在关系数据库中,表名对应于数据库名(或关系名),表头对应于数据描述(或结构描述),表体对应于数据库。
表体是数据库的内容及数据库操作的对象。
另外,有两个概念必须加以强调:
型(type)和值或出现(occurence)。
表头定义了实体(或元组)的型,也就是说规定了实体(或元组)的值域。
而表体则给出了实体(或元组)的出现。
出现是型中的一个值。
3.关系的数学定义
关系模型是建立在集合论(SetTheory)的基础之上的。
现在,开始用集合论的术语来严格地定义数学上的关系,即给出关系的数学定义。
定义1域(Domain)是值(value)的集合。
4.关系模型
关系模型由三部分组成:
数据结构(即关系)、关系操作、关系的完整性。
下面将对这三个部分实行分别的讨论。
(1)单一的数据结构———关系在关系模型中,无论是实体还是实体之间的联系均由单一的类型结构—关系来表示。
在前面,已给出了关系和域的数学定义,介绍了n元关系、元组和属性等概念。
下面介绍关键字、关系模式和关系数据库等一些基本概念。
关键字关系中的某一组属性,若其值能够地标识一个元组,则称该属性组为一个候选关键字(CandidateKey)。
若一个关系有多个候选关键字,则能够任选其中一个作为主关键字(PrimaryKey)。
主关键字中的诸属性被称为主属性。
关系模式关系的描述称为关系模式。
它包括:
关系名、组成关系的诸属性名、属性到域的映象、属性间的数据依赖关系等等。
所以,关系模式由关系名、诸属性名和属性到域的映象三个部分组成,关系模式通常简记为R(A1,A2,…,An),其中R是关系名,A1,A2,…,An为诸属性名。
属性到域的映象一般通过指定属性的类型和长度来说明。
某个关系模式在某一时刻所具有的状态是指关系的外延,即元组的集合。
关系的外延内容有时简称为关系。
但关系模式和关系的内容有时也统称为关系。
读者能够从上下文中区别其确切的含义。
形象地说,关系模式是关于表名和表头的描述,而关系的内容是表体。
关系数据库在关系数据库中,要分清型和值两个基本概念。
关系数据库的型是指数据库的结构描述,它包括关系数据库名、若干属性的定义,以及这些属性上的若干关系关系模式。
亦称为数据库的内涵(Intension),数据库的值亦称为数据库的外延。
在关系数据库中,内涵是比较稳定的,它规定了外延的取值范围。
而外延却是随时间变化的。
这和在一般的形式逻辑中外延和内涵一一对应有所区别。
此处外延是指任意一个满足内涵的集合,而不一定恒指满足内涵的的一个集合。
关系模式(即内涵)是稳定的;而关系的内容,即外延,却是随时间动态的变化而变化的。
数据库的结构(即模式)是稳定的;而数据库中的数据内容却在持续地更新。
(2)关系操作关系模型规定了关系操作的功能和特点,但不对DBMS语言的语法做出具体的规定。
关系数据库语言的主要特点(或优点)是其高度的非过程化(Non-procedureae)或者说明性(declarative)。
关系数据库语言的语句是透明的。
用户只须知道语句做什么,而不须知道怎么做的。
Codd在其早期的文章中,引入了8种基本的操作:
并(Union)交(Intersection)差(Difference)笛卡尔乘积(CartesianProduct)限制(Restrictions)投影(Projection)连接(Join)除(Division)这些操作都是对关系的内容或表体实施操作的,得到的结果仍为关系。
注意,这些操作仅仅基本的操作,而不是不再可分的原始(Primitive)操作,例如,Join,Intersection和Division能够由其它五种操作合成。
但是,把它们三个也作为基本操作使用起来很方便。
另外,Codd并没说上述8种操作就是关系数据库只能有的8种操作。
实际上,上述8种操作仅仅是作为最小的DML操作的基础部分,并且也还未考虑到DDL的需求。
SQL支持的操作多于上述8种DML操作,而且SQL还支持DDL操作。
关系操作的特点是集合操作,即操作的对象和结果都是集合。
这种操作方式也称为一次一集合(set-at-a-time)方式。
而非关系模型的数据库的操作方式则为一次一记录(record-at-a-time)方式。
关系操作能够用两种方式来表示:
①代数方式,即关系代数
②逻辑方式,即关系演算而关系演算又进一步分为元组关系演算和域关系演算。
已经证明,这些表示方式在功能上是相互等价的。
一般选其一即可。
(3)关系模型的三类完整性关系模型的三类完整性是:
①实体完整性(EntityIntegrity)
②参照完整性(ReferentialIntegrity)
③用户定义的完整性(UserDefinedIntegrity)其中,实体完整性和参照完整性是任何关系模型都必须满足的完整性约束条件,应该由关系数据库DBMS自动支持。
而用户定义的完整性的支持是由DBMS提供完整性定义设施(或机制),能够随DBMS商品软件不同而有所变化。
实体完整性是指:
若属性A是基本关系R的主关键字的属性(即主属性),则属性A不能取空值(NULL)。
在关系数据库中有各种关系,如基本关系(常称为基本表)、查询表、视图表等等。
基本表是指实际存有的表,它是实际存储数据的逻辑表示。
查询表是指和查询结果相对应的表。
而视图表是由基本表或视图表导出的表,是虚表,不对应实际存储的数据。
实体完整性是针对基本关系的。
空值是指“不知道”或者“无意义的”或“不属于定义域”值。
空值以“NULL”表示。
对于实体完整性作如下说明:
(1)一个基本关系通常对应于现实世界中的一个实体集。
例如学生关系对应于学生实体集。
基本关系不是由其它关系生成的关系。
基本关系是本原(Primitive),是定义复杂关系的出发点。
(2)现实世界中的实体是可区分的,即实体具有某种性的标识。
(3)在关系模型中由主关键字作为满足性的标识。
(4)主关键字中属性不能取空值。
因为若主关键字中某属性取空值,则意味着某个实体不可标识;而这和
(2)相矛盾。
参照完整性是指:
若基本关系R中含有另一个基本关系S的主关键字KS所对应的属性组F(F称为R的外部关键字(externalkeys)),则在关系R中的每个元组中的F上的值必须满足:
①或者取空值(即F中的每个属性的值均为空值);
②或等于S中某个元组的主关键字的值。
基本关系R和S不一定是不同的关系。
外部关键字也称为外来关键字。
例如,某数据库中有职工关系EMP(职工号,姓名,部门号)和部门关系DEPT(部门号,部门名称)为两个基本关系。
关系EMP的主关键字为“职工号”,DEPT的主关键字为“部门号”在EMP中,“部门号”是EMP的外部关键字。
故此,在EMP中的每个元组中“部门号”的值只有两种可能性:
①取空值。
这说明这个职工尚未分到某个部门;
②或取非空值。
这时“部门号”的值必须是DEPT中某个元组中的“部门号”的值。
这说明一个职工不可能被分配到一个不存有的部门。
也就是说,被参照的关系DEPT中一定存有一个元组,该元组的关键字的值等于EMP中某元组的外部关键字的值。
实体完整性和参照完整性是针对任何关系数据库系统的所有数据库的一般性原则。
用户定义的完整性针对某一具体的数据库的约束条件。
条件是由现实世界中的应用环境决定的。
它涉及到某一具体的应用中的数据所必须满足的语义要求。
关型模型的DBMS应提供定义和检验这类完整性条件的机制,以使用统一的方法来自动地处理它们而不要求应用程序员来承担这个功能。
来源:
5.关系数据库语言概述
关系数据库语言分三类:
数据描述语言DDL,数据操纵语言DML和数据控制语言DCL。
其中,DDL负责数据库的描述,提供一种数据描述机制,用来描述数据库的特征或数据的逻辑结构。
DML负责数据库的操作,提供一种处理数据库操作的机制。
DCL负责控制数据库的完整性和安全性,提供一种检验完整性和保证安全的机制。
DML是用户经常使用的语言,包括了DBMS的主要功能。
DML包括数据查询和数据的增、删、改等功能。
其中查询的表达方式是DML的主要部分。
关系数据库的DML按照查询方式能够分为两大类:
(1)用对关系的集合代数运算来表示查询的方式,称为关系代数(RelationalAlgebra)。
(2)用谓词演算来表达查询的方式,称为关系演算(RelationalCalculus)。
关系演算又可按谓词变元的基本对象是元组变量(tuplevariable)还是域变量(domainvariable)分为元组关系演算和域关系演算两种。
关系代数和两种关系演算均是抽象的查询语言,这些抽象的查询语言和实际的DBMS软件产品中实现的具体的查询语言并不完全一样。
但它们是DBMS中查询语言的理论基础。
关系代数、元组关系演算和域关系演算这三种语言在表达水平上是彼此相互等价的,它们均能够作为评价实际DBMS软件产品中查询语言水平的标准。
实际DBMS软件产品的查询语言,除了提供关系代数(或一种关系演算)之外,还提供了很多附加的功能,如库函数、算术运算等功能。
SQL是介于关系代数,和关系演算之间的一种语言。
SQL不但具有丰富的查询功能,而且还具有数据库定义和数据库控制功能。
SQL是集DDL、DML、DCL为一体的标准的关系数据库语言。
SQL充分体现了关系数据库语言的优点。
6.关系代数
关系代数中的运算能够分为两类:
(1)传统的集合运算,如并、交、差、笛卡尔乘积等。
这类运算是从关系的“水平方向(即按行)”来实行的。
(2)专门的关系运算,如选择、投影、连接、除。
这类运算不但涉及到行而且也涉及到列。
7.关系演算
关系演算是以数理逻辑中的谓词演算为基础的。
用谓词演算作为关系数据库的语言并提出关系演算的是E.F.Codd。
Codd首先定义了关系演算语言ALPHA。
但ALPHA并没有在计算机上实现。
但关系数据库管理系统INGRES所用的QUEL语言是参考ALPHA研制的,与ALPHA十分类似。
六、关系数据库的规范化理论
函数依赖
定义1设R(U)是属性集U上的关系模式。
X,Y是U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存有两个元组在X上的属性值相等,而在Y上的属性值不等,则称‘X函数确定Y’或‘Y函数依赖于X’,记作X→Y。
函数依赖和别的数据依赖一样是语义范畴的概念。
只能根据语义来确定一个函数依赖。
例如姓名→年龄这个函数依赖只有在没有同名人的条件下成立。
如果允许有相同名字,则年龄就不再函数依赖于姓名了。
设计者也能够对现实世界作强制的规定。
例如规定不允许同名人出现,因而使姓名→年龄函数依赖成立。
这样当插入某个元组时这个元组上的属性值必须满足规定的函数依赖,若发现有同名人存有,则拒绝插入该元组。
注意,函数依赖不是指关系模式R的某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件
七、数据库的安全与保护
1.安全性
数据库的安全性是指保护数据库以防止不合法的或非正常的使用所造成的数据泄露、更改或破坏。
安全性问题不是数据库系统所独有的,计算机系统都有这个问题。
仅仅在数据库系统中大量数据集中存放,而且为很多用户直接共享,是十分重要的信息资源。
从而使安全性问题变得更为突出。
系统安全保护措施是否有效是数据库系统的主要性能指标之一。
对于数据库的安全保密方式能够有系统处理的和物理的两个方面。
所谓物理的是指,对于强力逼迫透露口令、在通信线路上窃听、以至盗窃物理存储设备等行为。
对此所采取的措施是将数据编为密码,增强警卫以识别用户身份和保护存储设备等措施。
在一般计算机系统中,安全措施是一级一级层层设置的。
(1)用户标识和鉴定首先,系统提供一定的方式让用户标识自己的名字或身份。
系统实行核实,通过鉴定后才提供机器使用权。
常用的方法有:
用一个用户名或者用户标识号来标明用户身份。
系统鉴别此用户是否是合法用户。
若是,则能够进入下一步的核实;若不是,则不能使用计算机。
用户名的登录只由系统管理员实行,一般用户不能实施用户名登录。
口令(Password),为了进一步核实用户,系统常常要求用户输入口令。
(2)存取控制对于获得上机权的用户还要根据预先定义好的用户权限实行存取控制,保证用户只能存取他有权存取的数据。
所谓用户权限是指不同的用户对于不同的数据对象允许执行的操作权限。
它由两部分组成,一是数据对象,二是操作类型。
数据对象有二类。
一类是数据本身,如关系数据库中的表、字段,非关系数据库中的记录、字段(亦称为数据项)。
另一类是外模式、模式、内模式。
在关系系统中DBA能够把建立、修改基本表的权力授予用户,用户获得此权力后能够建立基本表、索引、视图。
这说明关系系统中存取控制的数据对象不但有数据而且有模式、外模式、内模式等数据字典中的内容。
对于存取权限的定义称为授权(Authorization)。
这些定义经过编译后存储在数据字典中。
每当用户发出存取数据库的操作请求后,DBMS查找数据字典,根据用户权限实行合法权限检查(AuthorizationCheck)。
若用户的操作请求超出了定义的权限,系统拒绝执行此操作。
授权编译程序和合法权限检查机制一起组成了安全性子系统。
衡量授权子系统精巧水准的另一个尽度是否提供与数据值相关的授权。
有的系统还允许存取谓词中引用系统变量,如一天中的时刻,终端设备号。
这样用户只能在某台终端、某段时间内存取相关数据,这就是与时间和地点相关的存取权限。
另外,在操作系统中对文件、目标等的存取还有一些安全保护措施。
其中加密是一种防止数据内容被别人引用或了解的切实可行的办法。
加密有程序加密和硬件加密卡两种形式。
2.完整性
数据库的完整性是指数据的准确性和相容性。
DBMS必须提供一种功能来保证数据库中数据的完整性。
这种功能亦称为完整性检查,即系统用一定的机制来检查数据库中的数据是否满足规定的条件。
这种条件在数据库中称为完整性约束条件。
数据的约束条件是语义的体现,这些完整性约束条件将作为模式的一部分存放数据字典中。
数据的完整性和安全性是两个不同的概念。
前者是为了防止数据库中存有不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(GarbageInGarbageOut)所造成的无效操作和错误结果。
而后者是保护数据库防止恶意的破坏和非法的存取。
当然,完整性和安全性是密切相关的。
特别从系统实现的方法来看,往往是一种机制常常既可用于安全性保护亦可用于完整性保证。
完整性约束条件能够分类如下:
(1)值的约束和结构的约束前者指对数据的值的限制,后者指对数据之间联系的限制。
关于对数据值的约束这类约束条件是指对数据取值类型、范围、精度等的规定。
关于数据之间联系的约束数据库中同一关系的不同属性之间能够有一定的联系,从而也应满足一定的约束条件。
同时,因为数据库中数据是结构化的,不同的关系之间也能够有联系,因而不同关系的属性之间也可满足一定的约束条件。
(2)静态约束和动态约束所谓静态约束是指对数据库每一确定状态的数据所应满足的约束条件。
以上所讲的约束都属静态约束。
动态约束是指数据库从一种状态转变为另一种状态时新、旧值之间所应满足的约束条件。
(3)立即执行约束和延迟执行约束立即执行约束是指在执行用户事务时,对事务中某一更新语句执行完后马上对此数据所应满足的约束条件实行完整性检查。
延迟执行是指在整个事务执行结束后方对此约束条件实行完整性检查,结果准确方能提交。
完整性的实现应包括两个方面,一是系统要提供定义完整性约束条件的功能,二是提供检查完整性约束条件的方法。
对于数据值的那类完整性约束条件通常在模式中定义。
例如在模式中定义属性名、类型、长度、码属性名并标明其值是的、非空的等等。
另外的那些约束条件就要用专门的方式加以定义。
3.并发控制
数据库是一个共享资源,能够由多个用户使用。
这些用户程序能够一个一个地串行执行,也能够并行执行。
在单CPU计算机上,为了充分利用数据库资源,应该允很多个用户程序并行的存取数据。
这样就会产生多个用户水准并发地存取同一数据的情况。
若对并发操作不加控制就会存取和存储不准确的数据,破坏数据库的完整性(这里也称为一致性)。
在多CPU计算机或多计算机网络环境下,并发控制尤为重要。
(1)事务的概念事务(Transaction)是并发控制的基本单位。
所谓事务是一个操作序列。
这些操作作为一个序列形成一个整体要么都做,要么都不做,是一个不可分割的工作单位。
事务通常以BEGINTRANSACTION开始,以COMMIT或ROLLBACK操作结束。
COMMIT即提交,提交事务中所有