《关系数据库基本理论计算机软件技术基础教程教学.ppt》由会员分享,可在线阅读,更多相关《关系数据库基本理论计算机软件技术基础教程教学.ppt(138页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第1717章章 关系数据库基本原理关系数据库基本原理17.1 基本概念基本概念17.2 关系运算关系运算17.3 关系数据库语言关系数据库语言17.4 关系模式规范化关系模式规范化第第17章章 关系数据库基本理论关系数据库基本理论返回主目录返回主目录第第1717章章 关系数据库基本原理关系数据库基本原理第17章关系数据库基本理论17.1 基基 本本 概概 念念由于关系模型与其他模型(层次或网状)相比,不仅能直观地利用人们所熟悉的表格来描述数据库中的数据,而且能够利用先进的数学工具关系代数来对这些表格进行任意的分割和组装,随机地产生出用户所需的各种新表格,从而为关系数据库的发展提供了基础和保证
2、。从数学的角度而言,关系是集合论中的一个概念,下面给出它的定义。定义17.1给定一组集合D1,D2,Dn,它们可以是相同的,若R是这样一个有序n元组:(d1,d2,dn)|diDi,i=1,2,n第第1717章章 关系数据库基本原理关系数据库基本原理则称R是对于这n个集合的一个关系,并称集合D1,D2,Dn为关系R的域,称n为关系的度。这里的域是值的集合,它可以是整数集合、字符串集合、实数集合由于n元组(也简称为元组)可以看成是从属性名到属性的域中的值的映射,从而可用映射的集合来定义关系,即有以下定义。定义17.2关系是命名属性集合下元组的有限集合,其中每一元组是命名属性集合到各对应值域中的值
3、的映射。例17.1(学号,姓名,出生年月,性别,班级)构成命名属性集合第第1717章章 关系数据库基本原理关系数据库基本原理粗略地说,以上给定的命名属性集合(属性名集合)给出了一个关系模式。关系模式就是二维表的表框架,相当于记录型。设关系名取REL,其属性为A1,A2,Ak,关系模式记为REL(A1,A2,Ak),则以上学生关系模式为粗略地说,以上给定的命名属性集合(属性名集合)给出了一个关系模式。关系模式就是二维表的表框架,相当于记录型。设关系名取REL,其属性为A1,A2,Ak,关系模式记为REL(A1,A2,Ak),则以上学生关系模式为第第1717章章 关系数据库基本原理关系数据库基本原
4、理学生(学号,姓名,出生年月,性别,班级)实际上,关系模式除了上述的属性名集外,还有其他内容。它应该是结构的描述或对关系特性的表征。这些特性包括描述关系的各种属性、属性值的限制、各属性间的数据依赖性以及对关系的一些强制性的限制,即通常所说的完整性约束条件。下面以数学形式给出关系模式的定义。定义17.3关系模式是一个多元组REL(U,D,DOM,I,F)其中,REL表示关系名,U是组成REL的有限属性名集,D是U中属性的值域,DOM是属性列到域的映射,I是一组完整性约束条件,F是属性间的一组依赖关系。第第1717章章 关系数据库基本原理关系数据库基本原理关系模式和关系是关系数据库中密切相关但又有
5、所区别的两个概念。关系模式描述了关系的信息结构以及语义约束,是关系的“型”。而关系则是关系模式在某一时刻的“当前值”,它是现实世界某一时刻的状态的真实反映。所有关系的当前值构成(关系)数据库。关系是随时间变化而变化的,但这种变化不改变属性的特性和属性间的联系。关系数据库的逻辑设计主要是关系模式的设计,因此,常称关系模式是关系数据库的结构和关系的框架或内涵,而把关系称为关系模式的实例或外延。在关系模型中所使用的术语与其他模型中的术语有些不同,但它们之间存在对应关系。在关系模型中,将能够惟一识别元组的属性或最小属性组称为关系的候选关键字。而选定的用于识别元组的属性或最小属性组称为关系的主关键字,也
6、称为主码。第第1717章章 关系数据库基本原理关系数据库基本原理关系的每一列称为一个域,它包含了一个属性的所有取值。关系中的列的数目称为阶数,行的数目称为基数。关系模型中的术语与数据世界中的术语的对应关系见表17.1。第第1717章章 关系数据库基本原理关系数据库基本原理第第1717章章 关系数据库基本原理关系数据库基本原理17.2 关关 系系 运运 算算在关系模型中,实体以及实体间的联系采用了单一数据结构关系来表示。对数据的操作就是对关系的运算。关系运算的形式可分为两大类:(1)关系代数:把关系看作集合,以关系为运算对象的关系运算。(2)关系演算:使用数理逻辑谓词演算概念的关系运算。按运算对
7、象不同可分为元组关系演算和域关系演算。1.关系代数关系代数关系代数是以集合代数为基础发展而来的,它以关系为运算对象。第第1717章章 关系数据库基本原理关系数据库基本原理关系代数的运算可分为两类:传统的集合运算和专门的关系运算。1)传统的集合运算传统的集合运算包括并、交、差和笛卡尔积。(1)并:设R和S为同类关系,即具有相同的度和相应属性在相同的域中取值,但并不要求属性名一致,则关系R和S的并由属于R或属于S的所有元组构成,记作RS。设t表示元组,则其数学表达形式为(2)交:设R和S为同类关系,则关系R和S的交由属于R同时属于S的所有元组构成,记作RS,其数学表达形式为第第1717章章 关系数
8、据库基本原理关系数据库基本原理(2)交:设R和S为同类关系,则关系R和S的交由属于R同时属于S的所有元组构成,记作RS,其数学表达形式为(3)差:设R和S为同类关系,则关系R和S的差由属于R但不属于S的所有元组构成,记作RS,其数学表达形式为RS=t|tRtS图17.1给出了关系R和S的并、交和差的图表表示。(4)笛卡尔积:设R为k1元关系,S为k2元关系,则R和S的笛卡尔积是一个(k1+k2)元的关系,其中每个元组的前k1个分量取自R中的一个元组,后k2个分量取自S中的一个元组,记作RS,其数学表达式为图17.2给出了一个笛卡尔积的实例。第第1717章章 关系数据库基本原理关系数据库基本原理
9、图17.1同类关系R和S的并、交、差运算第第1717章章 关系数据库基本原理关系数据库基本原理图17.2R和S的笛卡尔积第第1717章章 关系数据库基本原理关系数据库基本原理2)专门的关系运算专门的关系运算包括投影、选择、连接、自然连接和除。(1)投影:对关系的投影运算,是从关系中取出所指定的属性列,并且除去重复元组来构成新的关系的运算。设R是一个k元关系,Ai1,Ai2,Aim分别是它的第i1,i2,im个属性,则关系R在Ai1,Ai2,Aim上的投影是一个m元关系,其属性为Ai1,Ai2,Aim,记作其中,A表示R属性的子集Ai1,Ai2,Aim;tA表示R中元组对应于A的分量。图17.3
10、给出一个选择的实例。第第1717章章 关系数据库基本原理关系数据库基本原理其中,是选择运算符,F是限定条件布尔表达式。F由三部分组成:运算对象:列号、常数或属性名;算术比较符:、;逻辑运算符:(NOT)、(AND)、(OR)。图17.4给出了一个选择的实例。F(R)的选择是在行的方向上进行的。(3)连接:连接运算把两个关系的共同的域按某种条件约束结合在一起形成新的关系。设R是k1元关系,S是k2元关系,算术比较符是。则关系R的第i列和关系S的第j列的连接定义为第第1717章章 关系数据库基本原理关系数据库基本原理图17.4R的选择运算第第1717章章 关系数据库基本原理关系数据库基本原理(3)
11、连接:连接运算把两个关系的共同的域按某种条件约束结合在一起形成新的关系。设R是k1元关系,S是k2元关系,算术比较符是。则关系R的第i列和关系S的第j列的连接定义为(i和j中的i、j若是属性名时,可省略)从定义中可以看出,连接运算是从两个关系的笛卡尔积中选取满足一定连接条件的元组集合,连接的结果是一个(k1+k2)元的关系。图17.5给出了一个连接的实例。第第1717章章 关系数据库基本原理关系数据库基本原理图17.5连接实例第第1717章章 关系数据库基本原理关系数据库基本原理(4)自然连接:当两个关系R和S的某些列具有相同的属性名时,可利用这些同名属性列中的相同值作为连接条件将两个关系连接
12、起来,构成自然连接。在连接后的关系中,不仅含有R与S不同的属性列,而且含有相同的属性列,其元组的数目由相同属性列中的相同值决定。设R是属性名组为(A1,A2,Am,Ak1)的k1元关系,S是属性名组为(A1,A2,Am,Bm+1,Bk2)的k2元关系,其中A1,A2,Am是同名属性列,则R和S的自然连接定义为进行自然连接的步骤如下:计算RS;第第1717章章 关系数据库基本原理关系数据库基本原理选择AiR=AiS的所有元组;去掉重复属性。自然连接是关系间最重要的一种连接,一般无特殊说明的连接指的是自然连接。图17.6给出了一个自然连接的实例。(5)除:除运算是指用一个(m+n)度的关系R除以一
13、个n度关系S,运算结果生成一个m元的新关系。这里R的第(m+i)个属性和S的第i个属性(i=1,n)必须是在相同的域上定义。当把R的前m个属性看作一个组合属性x,后n个属性看作一个组合属性y,则S也可类似地看成有一个组合属性y。这样以S中的y值来对R进行分组,当组中含有y值时,则组中的x值便构成了R除以S的一个元组。R除以S的数学表达式为第第1717章章 关系数据库基本原理关系数据库基本原理图17.6R和S的自然连接第第1717章章 关系数据库基本原理关系数据库基本原理其中为关系R中除去与S关系相同的其余属性。图17.7给出了除运算的实例。上面我们对关系代数的九种运算分别进行了介绍,在这九种运
14、算中,并、差、笛卡尔积、投影、选择称为基本关系代数运算,其他的运算可由这五种运算推导而来。用关系代数运算可完成对数据的检索、删除和插入操作。这些操作是通过将关系代数运算经有限次复合而成。关系代数对数据库的数据操作是完备的,也就是说利用关系代数可实现一切数据操作。下面我们将以一个学生课程数据库为例说明如何用关系代数来实现数据操作。第第1717章章 关系数据库基本原理关系数据库基本原理图17.7除运算第第1717章章 关系数据库基本原理关系数据库基本原理上面我们对关系代数的九种运算分别进行了介绍,在这九种运算中,并、差、笛卡尔积、投影、选择称为基本关系代数运算,其他的运算可由这五种运算推导而来。用
15、关系代数运算可完成对数据的检索、删除和插入操作。这些操作是通过将关系代数运算经有限次复合而成。关系代数对数据库的数据操作是完备的,也就是说利用关系代数可实现一切数据操作。下面我们将以一个学生课程数据库为例说明如何用关系代数来实现数据操作。一个简单的学生课程数据库由三个关系组成,如图17.8所示。例17.2检索出选择C101课程的学生名。解:首先从SC表中选择C#为C101的元组,然后将STU与选择后构成的表进行自然连接,最后从自然连接形成表中对SN投影,即得所求。整个运算为第第1717章章 关系数据库基本原理关系数据库基本原理图17.8简单的学生课程数据库第第1717章章 关系数据库基本原理关
16、系数据库基本原理例17.3检索选修全部课程的学生名。解:首先从C表中对C#投影得到全部课程代号,然后用SC表对S#和C#投影所得的表除以全部课程代号,即可得到相应的S#,最后用S#与STU表作自然连接,并从自然连接形成的表中对SN投影,即得所求。整个运算为例17.4将学号为19205的学生选修的课程代号为C401的所得成绩B插入关系SC。解:这个操作只需利用并运算即可完成。整个运算为SC19205,C401,B第第1717章章 关系数据库基本原理关系数据库基本原理例17.5删除学生王凡所选修的课程代号为C201的所得成绩。解:首先从STU表中选择SN为王凡的元组,并对选择后构成的表进行S#投影
17、,得到王凡的学号。通过对SC表中选择C#为C201的元组,得到所有选择了C201的SC元组。将所选择的SC元组与王凡的学号自然连接得到王凡选修C201课程的SC元组。最后,使用从SC表中减去王凡选修C201课程的SC元组,即得所求。整个运算为2.元组关系演算元组关系演算元组关系演算使用元组作为变量、关系演算公式作为约束条件,来产生所需的元组集合。这个元组集合构成了一个演算结果关系。元组关系演算表达式可用以下形式表示为t:(t)第第1717章章 关系数据库基本原理关系数据库基本原理其中,t表示元组变量,它的取值范围是它所属于的整个关系;(t)表示作为约束条件的关系演算公式,它由原子公式和运算符构
18、成。原子公式是指只含有算术比较运算符的关系演算公式,共分为三类:(1)R(u)。R表示关系名;u表示元组变量;R(u)表示u是关系R中的元组。(2)tiSj。t和S表示元组变量;表示算术比较运算符,它包括=,,,;tiSj表示t的第i个分量与S的第j个分量应满足条件。例如t1S2表示t的第1个分量小于S的第2个分量。(3)tiC。C表示常量。这个原子公式表示t的第i个分量和C满足条件。第第1717章章 关系数据库基本原理关系数据库基本原理除了以上所使用的算术运算符外,关系演算还使用以下逻辑运算符和量词运算符:(1)逻辑运算符包括(逻辑与)、(逻辑或)和(逻辑非)三种。(2)量词运算符包括(存在
19、量词)、(全称量词)两种。存在量词和全称量词使用在元组变量前面,表示了对该元组变量的一种约束关系。例如:t(t)表示若存在一个t使得(t)为真时,则t(t)为真,否则为假;t(t)表示,仅当所有的t都使(t)为真时,才使t(t)为真。当有存在量词或全称量词出现在元组变量前时,该元组变量称为“约束”变量,否则为“自由”变量。自由变量和约束变量的概念相当于程序设计语言中的全局变量和局部变量的概念。第第1717章章 关系数据库基本原理关系数据库基本原理在关系演算中,演算执行的先后顺序为括号、算术运算符、量词运算符、逻辑运算符、。关系代数中的五种基本运算都可以用元组关系演算来表示,所以元组关系演算对数
20、据库的操作也是完备的。下面给出关系代数中的五种基本运算的元组关系演算形式。(1)关系R和S的并集RS可表示为t:RS(2)关系R和S的差集R-S可表示为t:RS(3)关系R和S的笛卡尔积RS可表示为第第1717章章 关系数据库基本原理关系数据库基本原理t(r+s):(u(r)(v(s)(R(u)S(v)t1=u1tr=urtr+1=v1tr+s=vs)其中,t(r+s)表示t元组具有r+s元,u(r)表示u元组有r元,v(s)表示v元组有s元。(4)关系R的投影运算i1,i2,ik(R)可表示为t(k)u(R(u)t1=ui1tk=uik)其中,i1,i2,ik是R的元组中属性的编号。(5)关
21、系R的选择运算F(R)可表示为t:R(t)F(t)其中,F(t)表示选择条件公式,由元组t的各分量表示ti和算术运算符以及逻辑运算符构成。第第1717章章 关系数据库基本原理关系数据库基本原理下面给出关系代数中的四个例子的元组关系演算表达式,来说明元组关系演算的具体应用。(1)例17.2的元组关系演算表达式为t2:STU(t)u(SC(u)t1=u1u2=C101)(2)例17.3的元组关系演算表达式为t2:STU(t)u(c(u)v(SC(v)u1=v2v1=t1)(3)例17.4的元组关系演算表达式为t:SC(t)t1=19205t2=C401t3=B(4)例17.5的元组关系演算表达式为
22、t:SC(t)(u(STU(u)u2=王凡t1=u1)v(C(v)v1=C201v1=t2)第第1717章章 关系数据库基本原理关系数据库基本原理3.域关系演算域关系演算域关系演算是以元组的分量为变量(又称域变量)的关系演算。这种关系演算与元组关系演算的主要区别有两点:用域变量代替了元组变量;域变量的取值范围是某个值域而不是整个关系。与元组演算表达式类似,域关系演算表达式的形式为t1,t2,tk|(t1,t2,tk)其中,t1,t2,tk是域变量;(t)为约束条件的关系演算公式,它由原子公式和运算符构成。域关系演算中的原子公式分为两类:(1)R(Ai:Vj|i,j=1,2,)。其中,Ai是关系
23、R中的属性名,Vj是域变量或常量。第第1717章章 关系数据库基本原理关系数据库基本原理例如C(C#:t1,CN:电子线路)表示课程名为电子线路的课程代号。(2)xy。其中,x,y或都为域变量,或一个为域变量而另一个为常量。是算术运算符。xy表示x和y满足条件。在域关系演算中使用的运算符和运算的执行顺序都与元组关系演算中的规定相同。关系代数运算中的五种基本运算也可用域关系演算来表示,所以域关系演算对数据库的操作也是完备的。下面给出关系代数中的五种基本运算的域关系演算表达式。(1)关系R和S的并集RS可表示为第第1717章章 关系数据库基本原理关系数据库基本原理t1,t2,tk|R(A1:t1,
24、A2:t2,Ak:tk)S(A1:t1,A2:t2,Ak:tk)(2)关系R和S的差集RS可表示为t1,t2,tk|R(A1:t1,A2:t2,Ak:tk)S(A1:t1,A2:t2,Ak:tk)(3)关系R和S的笛卡尔积RS可表示为t1,t2,tr,tr+1,tr+s|(u1)(u2)(ur)(v1)(v2)(vr)(R(A1:u1,A2:u2,Ar:ur)S(B1:v1,B2:v2,Bs:vs)t1=u1t2=u2tr=urtr+1=v1tr+2=v2tr+s=vs)(4)关系R的投影运算i1,i2,ik(R)可表示为t1,t2,tk|(u1)(u2)(um)(R(A1:u1,A2:u2,
25、Am:um)t1=ui1t2=ui2tik=uik)第第1717章章 关系数据库基本原理关系数据库基本原理(5)关系R的选择运算F(R)可表示为t1,t2,tk|R(A1:t1,A2:t2,Ak:tk)F(A1:t1,A2:t2,Ak:tk)其中,F(A1:t1,A2:t2,Ak:tk)表示选择条件公式,由原子公式和运算符构成。元组关系演算表达式与域关系演算表达式的相互转换是容易的。由元组关系演算表达式到域关系演算表达式的转换遵循以下两条规则:(1)如果t是k元的,则引入k个域变量t1,t2,tk来替换t,用ti替换t元组的第i个分量ti。(2)对于量词(u)或(u),若u是m元的,则引入m个
26、域变量u1,u2,um,并用(u1)(u2)(um)替代(u)和用(u1)(u2)(um)替代(u)。第第1717章章 关系数据库基本原理关系数据库基本原理(1)例17.2的域关系演算表达式为t2|STU(S#:t1,SN:t2)(u1)(u2)(SC(S#:u1,C#:C101)t1=u1)(2)例17.3的域关系演算表达式为t2|STU(S#:t1,SN:t2)(u1)(C(C#:u1)(v1)(v2)(SC(S#:v1,C#:v2)u1=v2v1=t1)(3)例17.4的域关系演算表达式为t1,t2,t3|SC(S#:t1,C#:t2,G:t3)t1=19205t2=C401t3=B(4
27、)例17.5的域关系演算表达式为t1,t2,t3|SC(S#:t1,C#:t2,G:t3)(u1)(u2)(STU(S#:u1,SN:王凡)第第1717章章 关系数据库基本原理关系数据库基本原理t1=u1)(v1)(C(C#:v1)v1=C201v1=t2)从以上例子可以看出在域关系演算表达式中,如果一个元组中的有些域没有使用,则可以省略。4.关系演算的安全限制关系演算的安全限制在我们给出关系的定义时,就强调指出关系是命名属性集合下元组的有限集合。这样就要求对关系施加关系运算后所得到的关系也应是有限集合。对于关系代数,由于它是在给定的关系上定义的,只要给定关系是有限的,则经关系代数运算后的关系
28、仍然是一个有限的集合,所以关系代数运算是安全的。对于关系演算,由于它包含了逻辑非、存在量词和全称量词运算,这样可能使运算结果出现无限关系和无穷验证过程。下面我们就以元组关系演算为例来进行说明,域关系演算的情况类似。第第1717章章 关系数据库基本原理关系数据库基本原理例如,t:R(t)表示集合是由不在关系R中的元组组成。当关系R的某个域是无限的,则t:R(t)是一个无限集合。由无限集合构成的关系需要使用具有无限存储容量的计算机,这是无法实现的。另外,若要判断(t)(t)和(t)(t)的真和假时,如果t的取值为无限,则要进行无穷次验证。显然这在实际中既无法实现又毫无意义。因此,必须采取一定的措施
29、来防止关系演算出现上述情况。我们把所采取的措施称为安全限制安全限制就是对关系演算施加限制条件,使关系演算表达式的变量在一个规定的范围内取值,从而避免无限关系和无穷次验证现象的发生。安全限制的关键在于定义一个与有关的有限符号集DOM(),使(t)的t的取值范围限定在有限集合之中。DOM()的定义方法有多种。第第1717章章 关系数据库基本原理关系数据库基本原理一个常用的DOM()的定义方法是:DOM()由出现在关系中的所有符号和中出现的常量符号构成。例如,有元组演算表达式:t:R(t),其中R由图17.9给出,则DOM()定义为DOM()=A(R)B(R)C(R)=a,b,c,d,1,2一个安全
30、的元组演算表达式t:(t)应满足以下条件:(1)定义一个与有关的有限符号集DOM(),这些符号由原始关系中的部分或全部符号和中出现的常量符号组成。(2)如果一个元组可使(t)为真,则这个元组的每一个分量值必属于DOM()。(3)对中的每个(u)(u)子式,如果u使(u)为真,则u的每个分量必属于DOM()。只要有一个分量值不属于DOM(),则(u)为假。第第1717章章 关系数据库基本原理关系数据库基本原理图17.9R关系第第1717章章 关系数据库基本原理关系数据库基本原理(4)对中的每个(u)(u)子式,如果u使(u)为假,则u的每个分量也必属于DOM()。条件(3)和条件(4)保证了(u
31、)(u)和(u)(u)子式的真假值可在有限次的运算中决定。例17.6已知关系R和如图17.10(a)、(b)所示,计算:tR(t);tS(t)R(t)。解:定义DOM()=A(R)B(R)C(R)=a,b,d,1,2第第1717章章 关系数据库基本原理关系数据库基本原理则R(t)三个域的笛卡尔积构成了包含R(t)的整个集合。这个集合与R的差集,即是所求,如图17.10(c)所示。定义DOM()=A(R)B(R)C(R)A(S)B(S)C(S)=a,b,d,g,c,1,2,5则tS(t)R(t)的结果如图17.10(d)所示。第第1717章章 关系数据库基本原理关系数据库基本原理图17.10第第
32、1717章章 关系数据库基本原理关系数据库基本原理17.3 关系数据库语言关系数据库语言虽然使用前一节介绍的关系运算,可以实现对于关系数据库的操作,但这种操作需要用户把实际的操作转化为相应的关系运算,这通常是困难的。另外,关系运算还无法提供用户在进行数据操作时的一些附加功能。例如,数据定义、数据控制、数据聚合(包括关系分量上的算术平均、累加、最大值、最小值的计算)。因此发展了供用户使用的关系数据库语言。关系数据库语言是建立在关系运算的基础上,具有数据定义、数据查询、数据更新、数据控制等功能的非过程化语言。这种语言一般只要求用户说明目的和要求,而不必说明怎样去做,便于用户使用。迄今为止,人们已经
33、研究了几十种关系数据库语言。这里主要介绍结构化查询语言(SQLStructuredQueryLanguage)。第第1717章章 关系数据库基本原理关系数据库基本原理SQL是一种结构化查询语言,它是在最初使用SystemR数据库管理系统中的查询语言SEQUEL(StructuredEnglishQueryLanguage)的基础上发展而来的。SQL作为关系数据库语言具有以下特点:(1)功能强。SQL集数据定义语言DDL、数据操纵语言DML和数据控制语言DCL为一体,能够完成数据库定义、数据库建立、数据库使用和数据库维护的多种功能,并且还具有保障数据安全的措施,是一种完备的、功能极强的关系数据库
34、语言。(2)简洁易学。SQL语言中仅使用了SELECT、CREATE等几个动词,便可完成核心功能。并且语法简单,类似于英语表达格式,所以易于学习和推广使用。第第1717章章 关系数据库基本原理关系数据库基本原理(3)使用方式灵活。SQL可以两种方式使用,既可以作为自含型语言供用户在终端上直接与系统进行交互,又可作为宿主型语言,嵌入某种高级语言中使用,以方便数据处理。正是由于SQL具有以上特点,所以它受到用户的普遍欢迎。SQL在1986年10月被美国国家标准局ANSI批准作为美国数据库的语言标准。此后也得到了国际标准化组织(ISO)的批准,作为国际标准。SQL的标准化产生了深远的影响,不仅各数据
35、库产品公司相继推出各自的SQL软件或与SQL的接口软件,而且一些计算机厂商还将SQL引入软件开发工具,推出了许多新型的软件开发工具。例如,GuptaTechnologies公司将SQL的检索功能和MicrosoftWindows的图形功能相结合,推出了第四代软件开发工具SQLWindows。从而SQL也成为了目前世界上最流行的关系数据库语言。据估计,SQL在未来相当长的一段时间内,将作为数据库的主流语言发挥其重要作用。第第1717章章 关系数据库基本原理关系数据库基本原理下面我们将从数据定义、数据操作和数据控制方面对SQL进行介绍。1)数据定义SQL的数据定义部分包括对基本关系(基表)、视图和
36、索引进行定义、修改和删除。(1)基表定义:SQL使用CREATETABLE语句来定义一个表。基表定义的格式为CREATTABLE表名(域名1数据类型1NOTNULL,域名2数据类型2NOTNULL)IN数据库空间名SQL的主要数据类型有以下几种:第第1717章章 关系数据库基本原理关系数据库基本原理INTEGER二字节的二进制整数SMALLINT 一字节的二进制整数DECIMAL(m,n)十进制数,其中m规定数的位数,n规定小数位数,1m15,0n=、500ORDERBYSA第第1717章章 关系数据库基本原理关系数据库基本原理例17.19在STU表中检索信息系王姓学生情况。解:SELECT*
37、FROMSTUWHERESN=王%ANDSD=信息例17.20检索同时选修了C101和C201课程的学生学号。解:SELECTT1.S#FROMSCT1,SCT2 WHERE T1.C#=C101 AND T2.C#=C201 ANDT1.S#=T2.S#此例是表自身的连接。为了区别连接中SC出现两次,引入T1和T2标号。标号引入使得实际连接时SC可作为两个表来使用。第第1717章章 关系数据库基本原理关系数据库基本原理例17.21检索成绩为A的学生情况。解:SELECT*FROMSTUWHERES#IN(SELECTS#FROMSCWHERESC.G=A)此例中是WHERE后的条件表达式中出
38、现了另一个查询,这另一个查询称为子查询或嵌入的查询块。在有子查询嵌套的情况下,执行时先得到最内层的查询结果,逐层向外执行,最后得到要查询的值。第第1717章章 关系数据库基本原理关系数据库基本原理(2)插入。SQL的插入语句可完成插入一个元组的几个域值、插入一个元组或插入多个元组的功能。插入语句的格式为例17.22将学号为19205的学生所选修的课程代号为C401的课的所得成绩B插入关系SC。解:INSERTINTOSCVALUES(19205,C401,B)例17.23将信息系选修C101课程的学生成绩单检索出来并放在表T1中。解:INSERTINTOT1第第1717章章 关系数据库基本原理
39、关系数据库基本原理SELECTSTU.S#,STU.SN,SC.C#,SC.GFROMSTU,SCWHERESTU.S#=SC.S#SC.C#=C101STU.SD=信息在数据插入时,如果一个元组中存在未给出常量的数据项,则这个数据项取空值。(3)数据删除。SQL的删除语句完成表中的全部元组和部分元组的删除。其语句格式为DELETEFROM表名WHERE条件表达式例17.24删除SC表中的全部元组。解:DELETEFROMSC第第1717章章 关系数据库基本原理关系数据库基本原理例17.25删除学生王凡所选修的课程代号为C201的课的所得成绩。DELETEFROMSCWHERESC.C#=C2
40、01SC.S#=(SELECTS#FROMSTUWHERESTU.SN=王凡)(4)修改。SQL的修改语句完成对元组中某些域值的修改。其语句格式为UPDATE表名SET域名1=表达式1,域名2=表达式2WHERE条件表达式第第1717章章 关系数据库基本原理关系数据库基本原理例17.26将学生王凡所选修的课程代号为C201的课的所得成绩改为B。UPDATESCSETSC.G=BWHERESC.S#=(SELECTS#FROMSTUWHERESTU.SN=王凡)SC.C#=C201例17.27将STU表中的学号为19205的学生年龄增加1岁。解:UPDATESTUSETSTU.SA=STU.SA
41、+1WHERESTU.S#=19205第第1717章章 关系数据库基本原理关系数据库基本原理上述的插入、删除和修改操作每次仅可对一个表实施,这样有可能破坏数据的完整性。例如,在SC表中插入一个元组时,无法保证该元组中的S#存在于表STU中;从表C中删除一个元组,也无法保证表SC中与该元组有关的记录同时被删除;修改表C中的课程代号C#,也无法保证SC表中作同样的修改。为保证数据的完整性,在SQL/DS中引入了“逻辑工作单元”(即事务)的概念,来使相关联的操作同时进行。查询、插入、删除和修改操作应用于视图时,受到一定的限制。对由单个基表导出的视图,可进行插入和修改操作,但不能进行删除操作;对由多个
42、表导出的视图,则不允许进行插入,删除和修改操作。3)数据控制SQL的控制功能主要包括安全性控制、一致性控制和并发控制等内容。第第1717章章 关系数据库基本原理关系数据库基本原理(1)安全性控制:为了保证数据库中的数据的安全与保密,SQL采取了一系列措施,其中主要是建立了一套授权机制来防止非法用户对数据库数据的使用和破坏。SQL中的授权包括:对数据库数据和系统资源的使用和向用户授予DBA权限;对表和视图的操作;对程序的操作权。下面分别进行介绍。向用户授予或撤消对数据、资源的使用权和DBA特权。这种授权供DBA或具备DBA特权的用户使用。授权格式为第第1717章章 关系数据库基本原理关系数据库基
43、本原理其中CONNECT是对数据库的使用权,用户被授予该权后才能进入数据库系统。RESOURCE权是用户对于PUBLIC数据库空间的使用权,用户获得RESOURCE权后可使用PUBLIC空间来建立自己的新表。对未获RESOURCE权的用户,必须在DBA给他申请私用空间后,才能在私用空间中建表,在进行RESOURCE授权时,不使用IDENTIFIED子句。DBA的权限包括:授予其他用户CONNECT权、RESOURCE权和DBA特权或撤消这些授权;申请、变更和撤消数据库空间;定义、变更或删除任何用户的表、索引、视图等;对数据库的安全性、完整性控制和并发性控制;对数据库的任一基表进行各种操作,运行
44、各个程序;对系统目录的管理。通常向用户授于DBA特权是非常谨慎的。例17.28向名为USER1的用户授予CONNECT权,用户的口令为tty1。第第1717章章 关系数据库基本原理关系数据库基本原理解:GRANTCONNECTTOUSER1IDENTIFIEDBYtty1例17.29向名为USER1的用户授予RESOURCE权。解:GRANTRESOURCETOUSER1撤消授权语句的格式为REVOKE语句撤消的授权必须是通过GRANT语句授予用户的权力,但用户自己具有的权力是不能撤消的。例如基表创建者对基表拥有各种操作的权力,即使DBA也不能取消这种权力。另外,DBA的DBA特权不能被撤消。
45、第第1717章章 关系数据库基本原理关系数据库基本原理REVOKE语句撤消的授权必须是通过GRANT语句授予用户的权力,但用户自己具有的权力是不能撤消的。例如基表创建者对基表拥有各种操作的权力,即使DBA也不能取消这种权力。另外,DBA的DBA特权不能被撤消。向用户授予或撤消对表和视图的操作权。这种授权由DBA或建立表和视图的用户使用。授权语句格式为第第1717章章 关系数据库基本原理关系数据库基本原理其 中 操 作 权 名 表 包 括 ALTER、INDEX、SELECT、INSERT、UPDATE域 名 表、DELETE六 种。ALTER和INDEX操作不能用于视图。ALL指所有六种操作权
46、。ALL不能用于视图授权,当选择TO后面的PUBLIC时所授予的操作权为所有用户共享。WITHGRANTOPTION选项的选择表明被授权的用户,可将自己得到的操作权再授予其他用户。例17.30向名为USER1的用户授予对STU的查询和对SA修改操作权,并允许USER1将他获得的权限授予其他用户。解:GRANTSELECT,UPDATE(SA)ONSTUTOUSER1WITHGRANTOPTION撤消授权语句格式为第第1717章章 关系数据库基本原理关系数据库基本原理例17.31撤消例17.30中向用户USER1授予的对STU表的查询和修改操作权。解:REVOKESELECT,UPDATEONS
47、TUFROMUSER1虽然授权时UPDATE后带有域名表,但在撤消授权时UPDATE后不必给出域名表。由于撤消了授予USER1的查询和修改操作权,所以也取消了他相应的再向其他用户的授予权。第第1717章章 关系数据库基本原理关系数据库基本原理如果USER1已将上述操作权授予了其他用户,则被授权的用户的相应权力也一并被撤消。向用户授予或撤消对程序的运行权。这种授权由DBA或程序创建者使用。授权的语句格式为例17.32将名为USER1的用户创建的TEST程序的运行权授予名为USER2的用户,第第1717章章 关系数据库基本原理关系数据库基本原理并允许USER2将他获得的权限授予其他用户。解:GRA
48、NTRUNONUSER1.TESTTOUSER2WITHGRANTOPTION撤消授权的语句格式为例17.33撤消USER2在例17.32中获得的授权。解:REVOKERUNONUSER1.TESTFROMUSER2第第1717章章 关系数据库基本原理关系数据库基本原理(2)完整性控制:为防止数据库出现语义上不正确的数据,SQL提供了用于完整性控制的语句ASSERT和TRIGGER。另外还使用事务概念来保证数据的完整性。ASSERT语句:这是完整性断言定义语句,它定义了数据插入和修改时,数据必须满足的条件。其语句格式为例17.34对表STU,限定学生的年龄为15岁到30岁之间。解:取断言名为A
49、1,则有ASSERTA1ONSTU:SA=15ANDSA=30第第1717章章 关系数据库基本原理关系数据库基本原理例17.35规定表SC中的S#值应是表STU中已存在的S#值。解:取断言名为A2,则有ASSERTA2ONSC:SC.S#IN(SELECTS#FROMSTU)TRIGGER语句:这是触发因子定义语句,用于实现多表同时插入、删除和修改功能。其语句格式为DEFINETRIGGER触发因子名ONUPDATEOF表名1(域名表):(UPDATE 表名2 SET 域名=NEW.域名,域名=NEW.域名通过定义触发因子可对多表中的多个域同时修改。第第1717章章 关系数据库基本原理关系数据
50、库基本原理例17.36在修改表STU中的S#的同时修改表SC中的S#。解:取触发因子为T1,则有DEFINETRIGGERT1ONUPDATEOFSTU(S#):(UPDATESCSETS#=NEW.S#)完整性断言和触发因子的删除可使用DROP语句来完成。事务,又称为“逻辑工作单元”,它通常指为完成一个特定的任务而组合在一起的一组操作。对数据库的操作仅当事务提交给系统后才最后生效。每向系统提交一次事务或撤消一个事务就称为一个事务结束。事务提交有两种方式:自动提交和手工提交。第第1717章章 关系数据库基本原理关系数据库基本原理自动提交方式:每条操作数据库的SQL命令都构成一个完整的事务,当命