《数据库安全》第二章 关系数据库基本原理与技术

上传人:考试不挂****2941... 文档编号:242938390 上传时间:2024-09-12 格式:PPT 页数:372 大小:1.36MB
返回 下载 相关 举报
《数据库安全》第二章 关系数据库基本原理与技术_第1页
第1页 / 共372页
《数据库安全》第二章 关系数据库基本原理与技术_第2页
第2页 / 共372页
《数据库安全》第二章 关系数据库基本原理与技术_第3页
第3页 / 共372页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第 二 章,关系数据库基本原理,与技术,1,本 章 概 要,2.1,关系数据库,2.2,关系数据库标准语言,SQL,2.3,数据库设计,2,2.1,关系数据库,2.1.1,关系数据结构,关系模型建立在集合代数的基础上。,关系数据结构的基本概念,关系的基本概念,关系模式,关系数据库,一、关系的基本概念,域,笛卡尔积,关系,3,2.,笛卡尔积,1),笛卡尔积的定义,给定一组域,D1,,,D2,,,,,Dn,。,D1,,,D2,,,,,Dn,的笛卡尔积为:,D1,D2,Dn=,(,d1,,,d2,,,,,dn,),|,diDi,,,i=1,,,2,,,,,n ,。,4,1,域,域是具有相同数据类型的值的集合。,例:整数、,0,,,1,、,男,女,、,26,个字母。,域用,D,表示,域中所包含的值的个数称为域的,基数。,(用,m,表示)。,关系中用域表示属性的取值范围。例如:,D1=,张力,李岩,王平, m1=3,(基数),D2=,男,女, m2=2,D3=18,19,20 m3=3,其中,,D1,,,D2,,,D3,为域名,分别表示学生关系中姓名、性别、年龄的集合。,5,例:,D1 =,张力,李岩,王平,姓名,D2 =,安阳,北京,上海,籍贯,D3 =18, 19, 20,年龄,则,D1,D2,D3=(,张力,安阳,,18),,(张力,安阳,,19,),,,(王平,上海,,20,),共计,27,个元素,则由,27,个元组组成。,所有域的所有取值的一个组合,不能重复,6,2),元组,笛卡尔积中每一个元素(,d1,,,d2,,,,,dn,)叫作一个元组。,3),分量,笛卡尔积元素(,d1,,,d2,,,,,dn,)中的每一个值,di,叫作一个分量。来自相应的域(,diDi,),元组的每个分量(,di,)是按序排列的。,如:(,1,,,2,,,3,)(,2,,,3,,,1,),7,4,) 基数,若,Di,(,i,1,,,2,,,,,n,)为有限集,其基数,为,mi,(,i,1,,,2,,,,,n,),,则,D1,D2,Dn,的基数,M,为:,笛卡尔积的基数是所有域的基数的累乘之积,在上例中,基数:,3,3,3,27,即,D1,D2,D3,共有,3,3,3,27,个元组,8,5,)笛卡尔积的表示方法,笛卡尔积可表示为一个,二维表,。表中的每行,对应一个元组,表中的每列对应一个域。,在上例中,,27,个元组可列成一张二维表,表,2.1 D1,,,D2,,,D3,的笛卡尔积,姓名,籍贯,年龄,张力,张力,张力,张力,张力,安阳,安阳,安阳,北京,北京,18,19,20,18,19,9,3.,关系,1),关系,D1,D2,Dn,的,子集,叫作在域,D1,,,D2,,,,,Dn,上的关系,表示为,R,(,D1,,,D2,,,,,Dn,),R,:关系名,n,:关系的目或度,当,n=1,时,称为,单元,关系。,当,n=2,时,称为,二元,关系。,当,n=n,时,称为,n,元,关系,。,注意:,关系是笛卡尔积的有限子集。数学上关系是笛卡尔积的任意子集,但在实际应用中关系是笛卡尔积中所取的,有意义的子集,。,10,姓名,籍贯,年龄,张力,李岩,王平,安阳,北京,上海,18,19,20,如果张力是安阳人年龄,18,,李岩是北京人年龄,19,,王平是上海人年龄,20,,则只有下面这个关系有意义的。,表,2.2,关系的表示,11,2),元组,关系中的每个元素是关系中的元组,通常,用,t,表示。,3),属性,关系中不同列可以对应相同的域,为了加,以区分,必须对每列起一个名字,称为属,性(,Attribute,)。,n,目关系必有,n,个属性。,12,4,)码,候选码,若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为,候选码。,在最简单的情况下,候选码只包含一个属性。,例:,学生(,学号,,,姓名,,年龄,宿舍,专业),候选码 候选码,(,假设没有重名,),13,全码,在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为,全码,(,All-key,)。,下面是一个全码的例子:,假设有教师授课关系,TCS,,分别有三个属性,TCS,(,教师,课程,学生,),全码,三个属性的组合是关系,TCS,的候选码,称为,全码,。,14,主码,如果一个关系中有多个候选键,则从中选定一个为,主码,。,主码又称,主关系键,(Primary Key),,或简称为,主键、关系键、关键字。,例:假设在学生关系中没有重名的学生,则,“,学号,”,和,“,姓名,”,都可作为学生关系的候选键。如果选定,“,学号,”,作为数据操作的依据,则,“,学号,”,为主关系键。,15,主关系键是关系模型中的一个重要概念。每个关系,必需选择,一个主关系键,选定以后,不能随意改变。,每个关系必定,有且仅有一个,主关系键,因为关系的元组无重复。,通常用,较小的属性组合,作为主关系键。,主属性与非码属性,主属性:,包含在候选码中的的各属性称为主属性。,非码属性:,不包含在任何候选码中的属性称为非码属性。,主属性和非主属性相排斥、互补。,16,外码,外码:,引用其它关系的键或本关系的键称外键。,如果一个关系的属性或属性组并非该关系的关键字,但它们是另外的一个关系关键字,则称其为该关系的外码。,17,例:,学生(,学号,,,姓名,,年龄,宿舍,专业),主码 候选码,(,假设没有重名,),课程(,课程号,,课程名,学分),主码,选修(,学号,,,课程号,,成绩),外码 外码,课程,1,(,课程号,,课程名,学分,开课时间,,主码,先修课程号,),外码,18,关系的类型:,基本表、查询视图,关系是满足特定规范性要求的二维表格,在关系模型中关系具有如下特性:,1.,关系中不允许出现相同的元组。,但许多关系数据库产品没有遵循这一性质。,例如,:Oracle,,,FoxPro,等都允许关系表中存在两个完全相同的元组,除非用户特别定义了相应的约束条件。,二、 关系的类型和性质,19,2.,关系中元组的顺序(即行序)是无关紧要的,在一个关系中可以任意交换两行的次序。,可以改变元组的顺序使其具有某种排序,然后按照顺序查询数据,可以提高查询速度。,20,3.,关系中属性的顺序是无关紧要的,即列,的顺序可以任意交换。,交换时,应连同属性名一起交换,否则,将得到不同的关系。,4.,同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。,21,5.,关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可取自同一个域。,例:有如下表中关系,职业与兼职是两个不同的属性,但它们取自同一个域。,职业教师,工人,辅导员。,姓名,职业,兼职,张强,教师,辅导员,王丽,工人,教师,刘宁,教师,辅导员,22,6.,关系中每一分量必须是不可分的数据项。,所有属性值都是原子的,即是一个确 定的值,而不是值的集合。,属性值可以为空值,表示“未知”或“不可使用”。,满足此条件的关系称为,规范化关系,,否则称为,非规范化关系,。,23,例:籍贯含有省、市两项,出现了“表中有表”的现象,则为非规范化关系,而把籍贯分成省、市两列,则将其规范化。,姓名,籍贯,姓名,省,市,省,市,张强,吉林,长春,张强,吉林,长春,王丽,山西,大同,王丽,山西,大同,24,三、关系模式,关系模式是对关系的描述,关系模式可以形式化地表示为:,R,(,U,,,D,,,dom,,,F,),R,关系名,U,组成该关系的属性名集合,D,属性组,U,中属性所来自的域,dom,属性向域的映象集合,F,属性间的数据依赖关系集合,25,例:,“,学生,”,的关系,U=,学号,姓名,成绩,设,S1=01001,,,01002,,,.,,,01999 ,S2=,张三,李四,,.,,王五,S3=0,,,1,,,.,,,100,则,D = S1 S2 S3,DOM(,学号,)= S1,DOM(,姓名,)= S2,DOM(,成绩,)= S3,26,关系模式通常可以简记为,R,(,U,),或,R,(,A,1,,,A,2,,,,,An,),R,关系名,A,1,,,A,2,,,,,An,属性名,注:,域名及属性向域的映象常常直接说明为,属性的类型、长度,27,四,.,关系数据库,在一个给定的应用领域中,所有实体及实,体之间联系的关系的集合构成一个关系数据,库。一个数据库可以,包含多个,基本表。,关系数据库也有型和值之分,关系数据库的型,称为关系数据库模式,是对关系数据库的描述,若干域的定义,在这些域上定义的若干关系模式,关系数据库的值,是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库,28,2.1.2,关系的完整性,关系模型的完整性规则是对关系的某种约束条件。,关系模型中三类完整性约束:,实体完整性,参照完整性,用户定义的完整性,实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的,两个,不变性,,应该由关系系统自动支持。,29,关系数据模型用关系描述事物之间的联系,且这种联系都隐含在它们的公共属性中,尤其是外键。,因此关系模型不能显示的表示这种实物之间的联系,这是一个缺点。,30,学号,姓名,性别,班级,001,张三丰,男,计,1,002,小昭,女,计,1,003,灭绝,女,计,1,007,邦得,男,计,1,008,周星星,男,计,1,课号,课名,学分,k001,武功,6,k002,英语,4,k003,语文,2,k004,数据库,4,学号,课号,成绩,001,k001,90,002,k001,68,003,k001,80,007,k001,70,008,k001,75,31,实体完整性:,若属性,A,是基本关系,R,的主属性,则,A,不能取空值,(空值代表不确定或不知道)。,一个基本关系对应现实世界的一个实体集。现实世界中的实体是相互区分的,即具有唯一标识。,主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,所以叫,实体完整性,。,例:选修(,学号,课程号,,成绩),“学号、课程号”为主码,则两个属性都不能取空值。,32,参照完整性:,在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。,例:学生实体、专业实体以及专业与学生,间的一对多联系。,学生(,学号,,姓名,性别,,专业号,,年龄),专业(,专业号,,专业名),33,参照完整性:,若属性,F,是关系,R,的外码,它与基本关系,S,的主码,KS,相对应,则对于,R,中的每一个元组在,F,上的值必为:,或者取空值(,F,的每个属性值均为空值),或者等于,S,中某个元组的主码值。,例:,关系,R:,学生(,学号,,姓名,性别,,专业号,,,年龄),F,关系,S:,专业(,专业号,,专业名),KS,34,学生(,学号,,姓名,性别,,专业号,,年龄)专业(,专业号,,专业名),35,学生关系中每个元组的,“,专业号,”,属性只,取下面两类值:,(,1,)空值,表示尚未给该学生分配专业,(,2,)非空值,这时该值必须是专业关系中某个元组的,“,专业号,”,值,表示该学生不可能分配到一个不存在的专业中,36,用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。,关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。,37,例,:,课程,(,课程号,,课程名,学分,),“,课程名,”,属性必须取唯一值,非主属性,“,课程名,”,也不能取空值,“,学分,”,属性只能取值,1,,,2,,,3,,,4,38,2.1.3,关系代数,概述,传统的集合运算,专门的关系运算,39,一、概述,1.,关系代数,2.,关系代数运算的三个要素,3.,关系代数运算的分类,4.,表示记号,1.,关系代数,一种抽象的查询语言,用对关系的运算来表达查询,2,关系代数运算的三个要素,运算对象:关系,运算结果:关系,运算符:四类,40,四类运算符有:,集合运算符,(并),,-,(差),(交),,(广义笛卡尔积)。,将关系看成元组的集合,运算是从关系的,“,水平,”,方向即行的角度来进行,专门的关系运算符,(,选择,),,(投影),(连接),,(除);,不仅涉及行而且涉及列,41,算术比较符,辅助专门的关系运算符进行操作,逻辑运算符,辅助专门的关系运算符进行操作,42,3,关系代数运算的分类,传统的集合运算:,把关系看成元组的集合,以元组作为集合中元素来进行运算,其运算是从关系的,“,水平,”,方向即行的角度进行的。,传统的集合运算:,并、差、交、笛卡尔积,专门的关系运算,:,不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特殊运算。,专门的关系运算:,选择、投影、连接、除,43,4,表示记号,(,1,),R,,,t,R,,,tAi,设关系模式为,R,(,A,1,,,A,2,,,,,An,),它的一个关系设为,R,。,t,R,表示,t,是,R,的一个元组,t,Ai,则表示元组,t,中相应于属性,Ai,的一个分量,44,(,2,),A,,,tA,,,A,若,A,=,A,i,1,,,A,i,2,,,,,A,ik,,,其中,A,i,1,,,A,i,2,,,,,A,ik,是,A,1,,,A,2,,,,,A,n,中的一部分,则,A,称为属性列或域列。,tA,=(,t,A,i,1,,,t,A,i,2,,,,,t,A,ik,),表示元组,t,在属性列,A,上诸分量的集合。,A,则表示,A,1,,,A,2,,,,,A,n,中去掉,A,i,1,,,A,i,2,,,,,A,ik,后剩余的属性组。,45,(,3,),t,r,t,s,R,为,n,目关系,,S,为,m,目关系。,t,r,R,,,t,s,S,,,t,r,t,s,称为元组的连接。它是一个,n,+,m,列的元组,前,n,个分量为,R,中的一个,n,元组,后,m,个分量为,S,中的一个,m,元组。,46,二、传统的集合运算,并,差,交,笛卡尔积,47,1.,并,R,和,S,具有相同的目,n,(,即两个关系都有,n,个属性,),相应的属性取自同一个域,R,S,仍为,n,目关系,由属于,R,或属于,S,的元组组成,R,S,= ,t,|,t,R,t,S,48,并运算实例,A,B,C,a1,b1,c1,a1,b2,c2,a2,b2,c1,A,B,C,a1,b1,c1,a1,b2,c2,a1,b3,c2,a2,b2,c1,A,B,C,a1,b2,c2,a1,b3,c2,a2,b2,c1,R,S,RS,49,2.,差,R,和,S,具有相同的目,n,相应的属性取自同一个域,R - S,具有相同的目,n,,由属于,R,而不属于,S,的,所有元组组成,R,-,S,= ,t,|,t,R,t,S,50,差运算实例,A,B,C,a1,b1,c1,a1,b2,c2,a2,b2,c1,A,B,C,a1,b1,c1,A,B,C,a1,b2,c2,a1,b3,c2,a2,b2,c1,R,S,R,-,S,51,3.,交,R,和,S,具有相同的目,n,相应的属性取自同一个域,R,S,仍为,n,目关系,由既属于,R,又属于,S,的元组组成,R,S,= ,t,|,t,R,t,S,52,交运算实例,A,B,C,a1,b1,c1,a1,b2,c2,a2,b2,c1,A,B,C,a1,b2,c2,a2,b2,c1,A,B,C,a1,b2,c2,a1,b3,c2,a2,b2,c1,R,S,R,S,53,4.,广义笛卡尔积,R,n,目关系,,k,1,个元组,S,m,目关系,,k,2,个元组,R,S,列:(,n,+,m,),列的元组的集合,元组的前,n,列是关系,R,的一个元组,后,m,列是关系,S,的一个元组,行,:,k,1,k,2,个元组,R,S,= ,t,r,t,s,|,t,r,R,t,s,S,54,广义笛卡尔积运算实例,A,B,C,a1,b1,c1,a1,b2,c2,a2,b2,c1,A,B,C,a1,b1,c1,a1,b1,c1,a1,b1,c1,a1,b2,c2,a1,b2,c2,a1,b2,c2,a2,b2,c1,a2,b2,c1,a2,b2,c1,A,B,C,a1,b2,c2,a1,b3,c2,a2,b2,c1,R,S,R,S,A,B,C,a1,b2,c2,a1,b3,c2,a2,b2,c1,a1,b2,c2,a1,b3,c2,a2,b2,c1,a1,b2,c2,a1,b3,c2,a2,b2,c1,55,三、专门的关系运算,选择,投影,连接,除,56,1.,选择,(,1,)选择又称为限制,(,2,)选择运算符的含义,是单目运算,即只对一个关系施加操作,在关系,R,中选择满足给定条件的,诸元组,的集合,语法格式:,(,),F,(,R,) = ,t,|,t,R,F,(,t,)= ,真,F,:,选择条件,是一个逻辑表达式,57,(,3,)选择运算是从行的角度进行的运算,(,4,)举例,设有一个学生,-,课程数据库,包括学生关系,Student,、课程关系,Course,和选修关系,SC,。,58,例,1,查询信息系(,IS,系)全体学生,Sdept,= IS,(Student),或,5 =IS,(Student),学 号,Sno,姓 名,Sname,性 别,Ssex,年 龄,Sage,所 在 系,Sdept,95001,李勇,男,20,CS,95002,刘晨,女,19,IS,95003,王敏,女,18,MA,95004,张立,男,19,IS,Student,例,2,例,3,例,1,例,4,59,Course,课程号,课程名,先行课,学分,Cno,Cname,Cpno,Ccredit,1,数据库,5,4,2,数学,2,3,信息系统,1,4,4,操作系统,6,3,5,数据结构,7,4,6,数据处理,2,7,PASCAL,语言,6,4,60,SC,学 号,课 程 号,成 绩,Sno,Cno,Grade,95001,1,92,95001,2,85,95001,3,88,95002,2,90,95002,3,80,例,9,61,例,1,查询信息系(,IS,系)全体学生,Sdept,= IS,(Student),或,5 =IS,(Student),结果:,Student,Sno,Sname,Ssex,Sage,Sdept,95002,刘晨,女,19,IS,95004,张立,男,19,IS,62,例,2,查询年龄小于,20,岁的学生,Sage 20,(Student),或,4 20,(Student),Sno,Sname,Ssex,Sage,Sdept,95002,刘晨,女,19,IS,95003,王敏,女,18,MA,95004,张立,男,19,IS,结果:,Student,63,2.,投影,1,)投影运算符的含义,从,R,中选择出若干,属性列,组成新的关系,A,(,R,) = ,t,A, |,t,R,A,:,R,中的属性列,64,2,)投影操作主要是从列的角度进行运算,但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行),65,3),举例,例,3,查询学生的姓名和所在系,即求,Student,关系上学生姓名和所在系两个属性上的投影,Sname,,,Sdept,(Student),或,2,,,5,(Student),66,Student,投影,结果:,Sname,Sdept,李勇,CS,刘晨,IS,王敏,MA,张立,IS,67,例,4,查询学生关系,Student,中都有哪些系,Sdept,(Student),Student,投影结果:,Sdept,CS,IS,MA,68,3.,连接,1,),连接也称为,连接,2,),连接运算的含义,从两个关系的笛卡尔积中选取属性间满足一定条件的,元组,R S,= |,t,r,R,t,s,S,t,r,A,t,s,B, ,A,和,B,:,分别为,R,和,S,上度数相等且可比的属性组,:,比较运算符,连接运算从,R,和,S,的广义笛卡尔积,R,S,中选取,(,R,关系,),在,A,属性组上的值与,(,S,关系,),在,B,属,性组上值满足比较关系的元组。,A,B,t,r,t,s,69,3,),两类常用连接运算,等值连接,什么是等值连接,为,“”,的连接运算称为等值连接,等值连接的含义,从关系,R,与,S,的广义笛卡尔积中选取,A,、,B,属性值相等的那些元组,即等值连接为:,R S,= |,t,r,R,t,s,S,t,r,A, =,t,s,B, ,A=B,t,r,t,s,70,自然连接,什么是自然连接,自然连接是一种特殊的等值连接两个关,系中进行比较的分量必须是相同的属性,组在结果中把重复的属性列去掉,自然连接的含义,R,和,S,具有相同的属性组,B,R,S,= | t,r,R,t,s,S,t,r,B, =,t,s,B, ,t,r,t,s,71,4,),一般的连接操作是从行的角度进行运算。,自然连接还需要取消重复列,所以是同时从,行和列,的角度进行运算。,A,B,R,S,72,5,),连接举例,A,B,C,a1,b1,5,a1,b2,6,a2,b3,8,a2,b4,12,B,E,b1,3,b2,7,b3,10,b3,2,b5,2,R,S,例,5,例,6,例,7,73,R,S,A,R.B,C,S.B,E,a1,b1,5,b2,7,a1,b1,5,b3,10,a1,b2,6,b2,7,a1,b2,6,b3,10,a2,b3,8,b3,10,C,E,例,5,74,等值连接,R,S,R.B=S.B,A,R.B,C,S.B,E,a1,b1,5,b1,3,a1,b2,6,b2,7,a2,b3,8,b3,10,a2,b3,8,b3,2,例,6,75,自然连接,R,S,A,B,C,E,a1,b1,5,3,a1,b2,6,7,a2,b3,8,10,a2,b3,8,2,例,7,76,4.,除,1,)除的定义,给定关系,R,(,X,,,Y,),和,S,(,Y,,,Z,),,,其中,X,,,Y,,,Z,为属性组。,R,中的,Y,与,S,中的,Y,可以有不同的属性名,但必须出自相同的域集。,R,与,S,的除运算得到一个新的关系,P(X),,,P,是,R,中满足下列条件的元组在,X,属性列上的投影:元组在,X,上分量值,x,的象集,Y,x,包含,S,在,Y,上投影的集合。,R,S,= ,t,r,X, |,t,r,R,Y,(,S,),Y,x,Y,x,:,x,在,R,中的象集,,,x,=,t,r,X,77,2),象集,Y,给定一个关系,R,(,X,,,Y,),,X,和,Y,为属性组,。,当,t,X,=,x,时,,,x,在,R,中的象集为,:,Y,x,=,t,Y,|,t,R,,,t,X,=,x,它表示,R,中属性组,X,上值为,x,的,诸元组在,Y,上分量的,集合,。,78,3),例,7,除法举例,A,B,C,a1,b1,c2,a2,b3,c7,a3,b4,c6,a1,b2,c3,a4,b6,c6,a2,b2,c3,a1,b2,c1,B,C,D,b1,c2,d1,b2,c1,d1,b2,c3,d2,R,S,A,a1,R,S,79,分析:,A,B,C,a1,b1,c2,a2,b3,c7,a3,b4,c6,a1,b2,c3,a4,b6,c6,a2,b2,c3,a1,b2,c1,R,例,7,中,x=,t,X,在,R,中的象集,Y,x,:,关系,R,的属性组,X,为,A,,,A,可以取四个值,a1, a2, a3,a4,。,其中,:,a1,的象集为,(,b1,c2), b2,c3),b2,c1) ,a2,的象集为,(,b3,c7), (b2,c3),a3,的象集为,(,b4,c6),a4,的象集为,(,b6,c6),80,关系,S,在,(,B,C,),上的投影为,(,b1,c2), b2,c3), b2,c1) ,只有,a1,的象集,(,B,C),a1,包含,(,B,C,),属性组上的投影,所以,R,S=,a1,.,关系,R,的属性,A,中,,a1,的象集为,(,b1,c2), b2,c3),b2,c1) ,a2,的象集为,(,b3,c7), (b2,c3),a3,的象集为,(,b4,c6),a4,的象集为,(,b6,c6),B,C,D,b1,c2,d1,b2,c1,d1,b2,c3,d2,S,81,例,7,除法举例,A,B,C,a1,b1,c2,a2,b3,c7,a3,b4,c6,a1,b2,c3,a4,b6,c6,a2,b2,c3,a1,b2,c1,B,C,D,b1,c2,d1,b2,c1,d1,b2,c3,d2,R,S,A,a1,R,S,R,S,= ,t,r,X, |,t,r,R,Y,(,S,),Y,x,Y,x,:,x,在,R,中的象集,,,x,=,t,r,X,82,4,)除操作是同时从行和列角度进行运算,R,S,83,5,综合举例,例,8,查询选修了,2,号课程的学生的学号。,Sno,(,Cno=2,(,SC,),95001,,,95002,SC,学 号,课 程 号,成 绩,Sno,Cno,Grade,95001,1,92,95001,2,85,95001,3,88,95002,2,90,95002,3,80,84,例,9,查询至少选修了一门其直接先行课为,5,号,课程的学生姓名。,Sname,(,Cpno=5,(Course SC Student),),或,Sname,(,Cpno=5,(Course),SC,Sno,,,Sname,(Student),85,小结,关系代数运算,关系代数运算,并、差、交、笛卡尔积、投影、选择、连接、除,基本运算,并、差、笛卡尔积、投影、选择,交、连接、除,可以用,5,种基本运算来表达,引进它们并不增加语言的能力,但可以简化表达,86,2.2,关系数据库标准语言,SQL,SQL,概述,数据定义,查询,数据更新,视图,数据控制,嵌入式,SQL,87,2.2.1,SQL,概述,SQL,(,Structured Query Language,结构化查询语言)。从,1974,年提出到至今已,SQL,成为国际标准。广泛应用于各种数据库中。,SQL,是一种介于关系代数和关系演算之间的结构化查询语言,但其功能并非仅是查询。,SQL,是一个通用的功能极强的,RDB,语言。,88,一、,SQL,的特点,1.,综合统一,SQL,集,DDL,、,DML,、,DCL,功能于一体。,SQL,数据操作符的统一。,(,查询、插入、删除、修改都只有一种操作符。,),2.,高度非过程化,SQL,语言是一种,非过程语言,,即用户只要提出“干什么”即可,不必管具体操作过程,也不必了解数据的存取路径,只要指明所需的数据即可。,89,3.,面向集合的操作方式,SQL,语言是一种,面向集合,的语言,每个命令的操作对象是一个或多个关系,结果也是一个关系。,4. SQL,语言既是,自含式语言,,又是,嵌入式语言,。可独立使用,也可嵌入到宿主语言中。,自含式语言可以独立使用交互命令。,嵌入式语言使其嵌入在高级语言中使用,供应用程序员开发应用程序。,5.,语言简洁,易学易用,SQL,设计巧妙,核心功能只需,9,个动词。在语言上接近英语。,90,二、,SQL,语言功能概述,SQL,功能,命令动词,数据查询,SELECT,数据定义,CREATE,、,DROP,、,ALTER,数据操纵,INSERT,、,UPDATE,、,DELETE,数据控制,GRANT,、,REVOKE,四部分:,数据定义功能、数据控制功能、,数据查询功能、数据操纵功能。,91,三、,SQL,的数据类型,数值型,字符串型,日期时间型,92,SQL,视图,1,视图,2,外模式,基本表,1,基本表,2,基本表,3,模式,存储文件,1,存储文件,2,内模式,四、,SQL,支持,RDB,的三级模式结构,93,2.2.2,数 据 定 义,94,一、定义、删除和更改基本表,1,定义基本表,CREATE TABLE,(, ,,, ,,, ,);,:,所要定义的基本表的名字,:,组成该表的各个属性(列),:,涉及相应属性列的完整性约束条件,:,涉及一个或多个属性列的完整性约束条件,95,例,1,建立一个“学生”表,Student,,,它由学号,Sno,、,姓名,Sname,、,性别,Ssex,、,年龄,Sage,、,所在系,Sdept,五个属性组成。其中学号不能为空并设为主键,姓名取值也唯一。,CREATE TABLE,Student,(,Sno,CHAR(5),NOT NULL PRIMARY KEY,,,Sname,CHAR(20),UNIQUE,,,/,列级完整性约束,Ssex,CHAR(2),DEFAULT,男, ,Sage,INT,CHECK,(Sage = 15 AND Sage =45),,,Sdept,CHAR(15),;,96,例,2,建立一个,“,学生选课,”,表,SC,,它由学号,Sno,、课程号,Cno,,修课成绩,Grade,组成,其中,(Sno, Cno),为主码。,CREATE,TABLE SC,(,Sno,CHAR(5) ,Cno,CHAR(3) ,Grade int,Primary key (Sno, Cno);,/,表级完整性约束,FOREIGN KEY,(,Sno,),REFERENCES,Student,(,Sno,),FOREIGN KEY,(,Cno,),REFERENCES,Course,(,Cno ),);,97,常用完整性约束,主码约束:,PRIMARY KEY,唯一性约束:,UNIQUE,非空值约束:,NOT NULL,参照完整性约束,执行该语句后,便产生了学生基本表的表框架,此表为一个空表。,如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。,98,2,、删除基本表,DROP,TABLE ;,基本表删除,数据、表上的索引都删除,表上的视图往往仍然保留,,但无法引用,删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述,例,3,删除,Student,表,DROP TABLE,Student ;,99,3,、修改基本表,ALTER TABLE,语句可以对表添加列、删除列、修改列的定义、定义主码、外码,也可以添加和删除约束。,ALTER,TABLE ,ADD, ,完整性约束, ,DROP, ,MODIFY, ,;,:,要修改的基本表,ADD,子句,:,增加新列和新的完整性约束条件,DROP,子句,:,删除指定的完整性约束条件,MODIFY,子句,:,用于修改列名和数据类型,100,例,4,向,Student,表增加,“,入学时间,”,列,其数,据类型为日期型。,ALTER TABLE Student,ADD,Scome DATE,;,不论基本表中原来是否已有数据,新增加的列一律为空值。,101,删除属性列,间接删除,/,直接,把表中要保留的列及其内容复制到一个新表中,删除原表,再将新表重命名为原表名,例,5,:直接删除属性列,:(,新,),ALTER TABLE Student Drop Scome,;,102,例,6,将年龄的数据类型改为半字长整数。,ALTER TABLE Student,MODIFY,Sage SMALLINT,;,注:修改原有的列定义有可能会破坏已有数据,例,7,删除学生姓名必须取唯一值的约束。,ALTER TABLE Student,DROP UNIQUE(Sname),;,103,二、建立与删除索引,建立索引是加快查询速度的有效手段,建立索引,DBA,或表的属主(即建立表的人)根据需要建立,有些,DBMS,自动建立以下列上的索引,PRIMARY KEY,UNIQUE,维护索引,DBMS,自动完成,使用索引,DBMS,自动选择是否使用索引以及使用哪些,索引,104,1,、建立索引,例,8,为学生,-,课程数据库中的,Student,,,Course,表建立索引。其中,Student,表按学号升序建唯一索引,,Course,表按课程号升序建唯一索引。,CREATE UNIQUE INDEX Stusno,ON Student(Sno),;,CREATE UNIQUE INDEX Coucno,ON Course(Cno),;,105,2,、删除索引,DROP INDEX ,;,删除索引时,系统会从数据字典中删去有关该索引的描述。,例,9,删除,Student,表的,Stusno,索引。,DROP INDEX Stusno,;,106,简单的,SQL,查询与关系代数的联系:,-,SELECT,A1,A2,An,FROM T1,T2,.,Tk,WHERE,F;,相当于:,A1,A2,An,F,(T1T2 Tk),-,其中,F,是连接条件,与后面的广义笛卡儿集构成连接。,2.2.3,查 询,107,一、概述,语句格式,SELECT,ALL|DISTINCT,,,FROM,,,WHERE, ,GROUP BY,HAVING, ,ORDER BY, ASC|DESC ,;,108,SELECT,子句,:指定要显示的属性列,FROM,子句,:指定查询对象,(,基本表或视图,),WHERE,子句,:指定查询条件,GROUP BY,子句:,对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。,HAVING,短语,:筛选出只有满足指定条件的组,ORDER BY,子句,:对查询结果表按指定列值的升序或降序排序,109,示例数据库,学生,-,课程数据库,学生表:,Student(Sno,,,Sname,,,Ssex,,,Sage,,,Sdept),课程表:,Course(Cno,,,Cname,,,Cpno,,,Ccredit),学生选课表:,SC(Sno,,,Cno,,,Grade),110,二、 单表查询,查询仅涉及一个表,是一种最简单的查询操作,1,、选择表中的若干列,2,、选择表中的若干元组,3,、对查询结果排序,4,、使用集函数,5,、对查询结果分组,111,1,、选择表中的若干列,(,1,)查询指定列,例,1,查询全体学生的学号与姓名。,SELECT Sno,,,Sname,FROM Student,;,112,(,2,)查询全部列,例,2,查询全体学生的详细记录。,SELECT Sno,,,Sname,,,Ssex,,,Sage,,,Sdept,FROM Student,;,或,SELECT,*,FROM Student,;,113,(,3,)查询经过计算的值,SELECT,子句的,为表达式,算术表达式,字符串常量,函数,列别名,114,例,3,查询全体学生的姓名、出生年份和所有,系,要求用小写字母表示所有系名。,SELECT Sname,,,Year of Birth: ,,,2009-Sage,,,ISLOWER(Sdept),FROM Student,;,115,输出结果:,Sname Year of Birth: 2009-Sage ISLOWER(Sdept),- - - -,李勇,Year of Birth: 1986 cs,刘晨,Year of Birth: 1987 is,王名,Year of Birth: 1988 ma,张立,Year of Birth: 1987 is,116,2,、选择表中的若干元组,(,1,)消除取值重复的行,在,SELECT,子句中使用,DISTINCT,短语,假设,SC,表中有下列数据,Sno Cno Grade,- - -,95001 1 92,95001 2 85,95001 3 88,95002 2 90,95002 3 80,117,例,4,查询选修了课程的学生学号。,(1) SELECT Sno,FROM SC;,或,SELECT,ALL,Sno,FROM SC;,结果:,Sno,-,95001,95001,95001,95002,95002,(2) SELECT,DISTINCT,Sno,FROM SC;,结果:,Sno,-,95001,95002,118,比较大小,在,WHERE,子句的,中使用比较运算符,=,,,,,=,,,=,,,!=,或,逻辑运算符,NOT +,比较运算符,(,2,)查询满足条件的元组,119,例,5,查询所有年龄在,20,岁以下的学生姓名及其,年龄。,SELECT Sname,,,Sage,FROM Student,WHERE,Sage 20,;,120,确定范围,使用谓词,BETWEEN AND ,NOT BETWEEN AND ,例,6,查询年龄在,2023,岁(包括,20,岁和,23,岁,),之间的学生的姓名、系别和年龄。,SELECT Sname,,,Sdept,,,Sage,FROM Student,WHERE Sage,BETWEEN,20,AND,23,;,121,确定集合,使用谓词,IN , NOT IN ,:用逗号分隔的一组取值,例,7,查询信息系,(,IS,)、,数学系,(,MA,),和计,算机科学系,(,CS,),学生的姓名和性别。,SELECT Sname,,,Ssex,FROM Student,WHERE,Sdept,IN,( IS,,,MA,,,CS );,122,字符串匹配,(,模糊查询,),%,(,百分号,),代表任意长度(长度可以为,0,)的字符串,例:,a%b,表示以,a,开头,以,b,结尾的任意长度的字符串。如,acb,,,addgb,,,ab,等都满足该匹配串,_,(,下横线,),代表任意单个字符,例:,a_b,表示以,a,开头,以,b,结尾的长度为,3,的任意字符串。如,acb,,,afb,等都满足该匹配串,123,例,8,查询所有姓刘学生的姓名、学号和性别。,SELECT Sname,,,Sno,,,Ssex,FROM Student,WHERE Sname,LIKE,刘,%,;,例,9,查询姓,“,欧阳,”,且全名为三个汉字的学,生的姓名。,SELECT Sname,FROM Student,WHERE Sname,LIKE,欧阳,-,-,;,124,涉及空值的查询,使用谓词,IS NULL,或,IS NOT NULL,“IS NULL”,不能用,“,= NULL”,代替,例,10,某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。,SELECT Sno,,,Cno,FROM SC,WHERE Grade,IS NULL,;,125,3,、对查询结果排序,使用,ORDER BY,子句,可以按一个或多个属性列排序,升序:,ASC,;降序:,DESC,;缺省值为升序,当排序列含空值时,ASC,:排序列为空值的元组最后显示,DESC,:,排序列为空值的元组最先显示,126,例,11,查询选修了,3,号课程的学生的学号及其,成绩,查询结果按分数降序排列。,SELECT Sno,,,Grade,FROM SC,WHERE Cno= 3 ,ORDER BY,Grade,DESC,;,127,查询结果,Sno Grade,- -,95020,95024,95007 92,95003 82,95010 82,95009 75,95014 61,95002 55,128,4,、使用集函数,5,类主要集函数,计数,COUNT,(,DISTINCT|,ALL, *,),COUNT,(,DISTINCT|,ALL, ,),计算总和,SUM,(,DISTINCT|,ALL, ,),计算平均值,AVG,(,DISTINCT|,ALL, ,),129,求最大值,MAX,(,DISTINCT|,ALL, ,),求最小值,MIN,(,DISTINCT|,ALL, ,),DISTINCT,短语,:,在计算时要取消指定列中的重复值,ALL,短语,:,不取消重复值,ALL,为缺省值,130,例,12,查询学生总人数。,SELECT,COUNT(*),/空值也统计,只有
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!