1、1 第第 二二 章章关系数据库基本原理关系数据库基本原理与技术与技术2 关系数据库关系数据库 关系数据库标准语言关系数据库标准语言SQLSQL数据库设计数据库设计关系数据库设计理论关系数据库设计理论32.1 2.1 关系数据库关系数据库2.1.1 2.1.1 关系数据结构关系数据结构 关系模型建立在集合代数的基础上。关系模型建立在集合代数的基础上。关系数据结构的基本概念关系数据结构的基本概念v关系的基本概念关系的基本概念v关系模式关系模式v关系数据库关系数据库一、关系的基本概念一、关系的基本概念v 域域v 笛卡尔积笛卡尔积v 关系关系41 1 域域域是具有相同数据类型的值的集合。域是具有相同数
2、据类型的值的集合。例:整数、例:整数、00,1 1、男,女男,女、2626个字母。个字母。域用域用D D表示表示域中所包含的值的个数称为域的域中所包含的值的个数称为域的 (用(用m m表示)。表示)。关系中用域表示属性的取值范围。例如:关系中用域表示属性的取值范围。例如:vD1=D1=张力,李岩,王平张力,李岩,王平 m1=3 m1=3(基数)(基数)vD2=D2=男,女男,女 m2=2 m2=2vD3=18,19,20 m3=3D3=18,19,20 m3=3v其中,其中,D1D1,D2D2,D3D3为域名,分别表示学生为域名,分别表示学生关系中姓名、性别、年龄的集合。关系中姓名、性别、年龄
3、的集合。52.2.笛卡尔积笛卡尔积1)1)笛卡尔积的定义笛卡尔积的定义 给定一组域给定一组域 D1D1,D2D2,DnDn。D1D1,D2D2,DnDn的笛卡尔积为:的笛卡尔积为:D1D1D2D2DnDn=(d1d1,d2d2,dndn)|diDidiDi,i=1i=1,2 2,n n。6例:例:D1=D1=张力,李岩,王平张力,李岩,王平 姓名姓名 D2=D2=安阳,北京,上海安阳,北京,上海 籍贯籍贯 D3=18,19,20 D3=18,19,20 年龄年龄 则则 D1D1D2D2D3=(D3=(张力,安阳,张力,安阳,18)18),(张力,(张力,安阳,安阳,1919),),(王平,上海
4、,(王平,上海,2020)共共计计2727个元素,则由个元素,则由2727个元组组成。个元组组成。所有域的所有取值的一个组合所有域的所有取值的一个组合不能重复不能重复7 2)2)元组元组v笛卡尔积中每一个元素(笛卡尔积中每一个元素(d1d1,d2d2,dndn)叫作一个元组。叫作一个元组。3)3)分量分量v笛卡尔积元素(笛卡尔积元素(d1d1,d2d2,dndn)中的每一)中的每一个值个值didi叫作一个分量。来自相应的域叫作一个分量。来自相应的域(diDidiDi)v元组的每个分量(元组的每个分量(didi)是按序排列的。)是按序排列的。如:(如:(1 1,2 2,3 3)(2 2,3 3,
5、1 1)8 4 4)基数基数 若若DiDi(i i1 1,2 2,n n)为有限集,其基数)为有限集,其基数 为为mimi(i i1 1,2 2,n n),),则则 D1D1D2D2DnDn的基数的基数M M为:为:笛卡尔积的基数是所有域的基数的累乘之积笛卡尔积的基数是所有域的基数的累乘之积在上例中,基数:在上例中,基数:3 33 33 32727即即 D1D1D2D2D3D3共有共有3 33 33 32727个元组个元组mMini 195 5)笛卡尔积的表示方法)笛卡尔积的表示方法 笛卡尔积可表示为一个笛卡尔积可表示为一个。表中的每行。表中的每行 对应一个元组,表中的每列对应一个域。对应一个
6、元组,表中的每列对应一个域。在上例中,在上例中,2727个元组可列成一张二维表个元组可列成一张二维表 表表2.1 D12.1 D1,D2D2,D3 D3 的笛卡尔积的笛卡尔积姓名姓名 籍贯籍贯年龄年龄张力张力 张力张力张力张力张力张力张力张力安阳安阳安阳安阳安阳安阳北京北京北京北京18181919202018181919103.3.关系关系1)1)关系关系D1D1D2D2DnDn的的叫作在域叫作在域D1D1,D2D2,DnDn上的关系,表示为上的关系,表示为 R R(D1D1,D2D2,DnDn)R R:关系名:关系名 n n:关系的目或度:关系的目或度当当n=1n=1时,称为时,称为单元单元
7、关系。关系。当当n=2n=2时,称为时,称为二元二元关系。关系。当当n=nn=n时,称为时,称为n n元元关系关系。注意:注意:关系是笛卡尔积的有限子集。数学上关系是笛关系是笛卡尔积的有限子集。数学上关系是笛卡尔积的任意子集,但在实际应用中关系是笛卡尔积的任意子集,但在实际应用中关系是笛卡尔积中所取的卡尔积中所取的有意义的子集有意义的子集。11姓名姓名 籍贯籍贯年龄年龄张力张力李岩李岩王平王平 安阳安阳北京北京上海上海 1818191920 20 如果张力是安阳人年龄如果张力是安阳人年龄1818,李岩是北京人年,李岩是北京人年龄龄1919,王平是上海人年龄,王平是上海人年龄2020,则只有下面
8、这个,则只有下面这个关系有意义的。关系有意义的。表表2.2 2.2 关系的表示关系的表示122)2)元组元组关系中的每个元素是关系中的元组,通常关系中的每个元素是关系中的元组,通常用用t t表示。表示。3)3)属性属性关系中不同列可以对应相同的域,为了加关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属以区分,必须对每列起一个名字,称为属性(性(AttributeAttribute)。)。n n目关系必有目关系必有n n个属性。个属性。13 4)码)码候选码候选码v若关系中的某一属性组的值能唯一地标识若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为一个元组,则
9、称该属性组为v在最简单的情况下,候选码只包含一个属在最简单的情况下,候选码只包含一个属性。性。v例:例:v学生(学生(学号学号,姓名姓名,年龄,宿舍,专业),年龄,宿舍,专业)(假设没有重名假设没有重名)14全码全码v在最极端的情况下,关系模式的所有属性在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为组是这个关系模式的候选码,称为(All-key)。)。v下面是一个全码的例子:下面是一个全码的例子:v假设有教师授课关系假设有教师授课关系TCS,分别有三个属,分别有三个属性性v TCS(教师,课程,学生教师,课程,学生)全码全码v三个属性的组合是关系三个属性的组合是关系TCS的
10、候选码,称的候选码,称为为全码全码。15主码主码v如果一个关系中有多个候选键,则从中选定如果一个关系中有多个候选键,则从中选定一个为一个为。v主码又称主码又称(Primary Key)(Primary Key),或简称,或简称为为例:假设在学生关系中没有重名的学生,例:假设在学生关系中没有重名的学生,则则“学号学号”和和“姓名姓名”都可作为学生关系都可作为学生关系的候选键。如果选定的候选键。如果选定“学号学号”作为数据操作为数据操作的依据,则作的依据,则“学号学号”为主关系键。为主关系键。16主关系键是关系模型中的一个重要概念。主关系键是关系模型中的一个重要概念。每个关系每个关系一个主关系键,
11、选定以一个主关系键,选定以后,不能随意改变。后,不能随意改变。每个关系必定每个关系必定主关系键,因主关系键,因为关系的元组无重复。为关系的元组无重复。通常用通常用作为主关系键。作为主关系键。主属性与非码属性主属性与非码属性v主属性:主属性:包含在候选码中的的各属性称包含在候选码中的的各属性称为主属性。为主属性。v非码属性:非码属性:不包含在任何候选码中的属不包含在任何候选码中的属性称为非码属性。性称为非码属性。v主属性和非主属性相排斥、互补。主属性和非主属性相排斥、互补。17外码外码 外码:外码:引用其它关系的键或本关系的键称外键。引用其它关系的键或本关系的键称外键。如果一个关系的属性或属性组
12、并非该关系的关如果一个关系的属性或属性组并非该关系的关键字,但它们是另外的一个关系关键字,则称键字,但它们是另外的一个关系关键字,则称其为该关系的外码。其为该关系的外码。18例:例:学生(学生(学号学号,姓名姓名,年龄,宿舍,专业),年龄,宿舍,专业)(假设没有重名假设没有重名)课程(课程(课程号课程号,课程名,学分),课程名,学分)选修(选修(学号学号,课程号课程号,成绩),成绩)课程课程1(课程号课程号,课程名,学分,开课时间,课程名,学分,开课时间,)19关系的类型:关系的类型:基本表、查询视图基本表、查询视图关系是满足特定规范性要求的二维表格关系是满足特定规范性要求的二维表格在关系模型
13、中关系具有如下特性:在关系模型中关系具有如下特性:1.1.关系中不允许出现相同的元组。关系中不允许出现相同的元组。v但许多关系数据库产品没有遵循这一性质。但许多关系数据库产品没有遵循这一性质。例如例如:Oracle:Oracle,FoxProFoxPro等都允许关系表中存等都允许关系表中存在两个完全相同的元组,除非用户特别定义在两个完全相同的元组,除非用户特别定义了相应的约束条件。了相应的约束条件。二、二、关系的类型和性质关系的类型和性质 202.v可以改变元组的顺序使其具有某种排序,可以改变元组的顺序使其具有某种排序,然后按照顺序查询数据,可以提高查询然后按照顺序查询数据,可以提高查询速度。
14、速度。213.关系中属性的顺序是无关紧要的,即列关系中属性的顺序是无关紧要的,即列 的顺序可以任意交换。的顺序可以任意交换。v交换时,应连同属性名一起交换,否则交换时,应连同属性名一起交换,否则 将得到不同的关系。将得到不同的关系。4.同一属性名下的各个属性值必须来自同同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。一个域,是同一类型的数据。225.关系中各个属性必须有不同的名字,不同关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可的属性可来自同一个域,即它们的分量可取自同一个域。取自同一个域。v例:有如下表中关系,职业与兼职是两个例:有如下表中关系,职业与
15、兼职是两个不同的属性,但它们取自同一个域。不同的属性,但它们取自同一个域。职业教师,工人,辅导员。职业教师,工人,辅导员。姓名姓名职业职业兼职兼职张强张强教师教师辅导员辅导员王丽王丽工人工人教师教师刘宁刘宁教师教师辅导员辅导员236.关系中每一分量必须是不可分的数据关系中每一分量必须是不可分的数据项。项。v所有属性值都是原子的,即是一个确所有属性值都是原子的,即是一个确 定的值,而不是值的集合。定的值,而不是值的集合。v 属性值可以为空值,表示属性值可以为空值,表示“未知未知”或或“不可使用不可使用”。v满足此条件的关系称为满足此条件的关系称为规范化关系规范化关系,否则称为否则称为非规范化关系
16、非规范化关系。24例:籍贯含有省、市两项,出现了例:籍贯含有省、市两项,出现了“表中有表表中有表”的现象,则为非规范化关系,而把籍贯分成省、的现象,则为非规范化关系,而把籍贯分成省、市两列,则将其规范化。市两列,则将其规范化。姓名姓名籍贯籍贯 姓名姓名省省市市省省市市 张强张强吉林吉林长春长春 张强张强吉林吉林长春长春王丽王丽山西山西大同大同 王丽王丽山西山西大同大同25关系模式是对关系的描述关系模式是对关系的描述关系模式可以形式化地表示为:关系模式可以形式化地表示为:R(U,D,dom,F)R 关系名关系名U 组成该关系的属性名集合组成该关系的属性名集合D 属性组属性组U中属性所来自的域中属
17、性所来自的域dom 属性向域的映象集合属性向域的映象集合F 属性间的数据依赖关系集合属性间的数据依赖关系集合26例:例:“学生学生”的关系的关系,U=U=学号,姓名,成绩学号,姓名,成绩 设设 S1=01001S1=01001,0100201002,.,01999,01999,S2=S2=张三,李四,张三,李四,.,王五,王五,S3=0 S3=0,1 1,.,100,100,则则 D=S1 S2 S3D=S1 S2 S3 DOM(DOM(学号学号)=S1)=S1 DOM(DOM(姓名姓名)=S2 )=S2 DOM(DOM(成绩成绩)=S3)=S3 27关系模式通常可以简记为关系模式通常可以简记
18、为 R(U)或或 R(A1,A2,An)R 关系名关系名A1,A2,An 属性名属性名注:注:域名及属性向域的映象常常直接说明为域名及属性向域的映象常常直接说明为 属性的类型、长度属性的类型、长度28四四.关系数据库关系数据库在一个给定的应用领域中,所有实体及实在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据体之间联系的关系的集合构成一个关系数据库。一个数据库可以库。一个数据库可以包含多个包含多个基本表。基本表。关系数据库也有型和值之分关系数据库也有型和值之分v关系数据库的型关系数据库的型称为关系数据库模式,称为关系数据库模式,是对关系数据库的描述是对关系数据库的描述
19、若干域的定义若干域的定义在这些域上定义的若干关系模式在这些域上定义的若干关系模式v关系数据库的值关系数据库的值是这些关系模式在某一是这些关系模式在某一时刻对应的关系的集合,通常简称为关时刻对应的关系的集合,通常简称为关系数据库系数据库292.1.2 关系的完整性关系的完整性关系模型的完整性规则是对关系的某种约关系模型的完整性规则是对关系的某种约束条件。束条件。关系模型中三类完整性约束:关系模型中三类完整性约束:v实体完整性实体完整性v参照完整性参照完整性v用户定义的完整性用户定义的完整性实体完整性和参照完整性是关系模型必须实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的
20、满足的完整性约束条件,被称作是关系的两个两个不变性不变性,应该由关系系统自动支持。,应该由关系系统自动支持。30v关系数据模型用关系描述事物之间的关系数据模型用关系描述事物之间的联系,且这种联系都隐含在它们的公联系,且这种联系都隐含在它们的公共属性中,尤其是外键。共属性中,尤其是外键。v因此关系模型不能显示的表示这种实因此关系模型不能显示的表示这种实物之间的联系,这是一个缺点。物之间的联系,这是一个缺点。31学号学号姓名姓名性别性别班级班级001张三丰张三丰男男计计1002小昭小昭女女计计1003灭绝灭绝女女计计1007邦得邦得男男计计1008周星星周星星男男计计1课号课号课名课名学分学分k0
21、01武功武功6k002英语英语4k003语文语文2k004数据库数据库4学号学号课号课号成绩成绩001k00190002k00168003k00180007k00170008k0017532实体完整性:实体完整性:v若属性若属性A A是基本关系是基本关系R R的主属性,则的主属性,则A A不能不能取空值取空值(空值代表不确定或不知道)。(空值代表不确定或不知道)。v 一个基本关系对应现实世界的一个实体一个基本关系对应现实世界的一个实体集。现实世界中的实体是相互区分的,集。现实世界中的实体是相互区分的,即具有唯一标识。即具有唯一标识。v主属性取空值,就说明存在某个不可标主属性取空值,就说明存在某
22、个不可标识的实体,即存在不可区分的实体,所识的实体,即存在不可区分的实体,所以叫以叫实体完整性实体完整性。v例:选修(例:选修(学号,课程号学号,课程号,成绩),成绩)“学号、课程号学号、课程号”为主码,则两个属为主码,则两个属性都不能取空值。性都不能取空值。33参照完整性:参照完整性:v在关系模型中实体及实体间的联系都是用关在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间系来描述的,因此可能存在着关系与关系间的引用。的引用。v 例:学生实体、专业实体以及专业与学生例:学生实体、专业实体以及专业与学生 间的一对多联系。间的一对多联系。学生(学生(学号学号,姓名,性别
23、,姓名,性别,专业号专业号,年龄),年龄)专业(专业(专业号专业号,专业名),专业名)34参照完整性:参照完整性:若属性若属性F F是关系是关系R R的外码,它与基的外码,它与基本关系本关系S S的主码的主码KSKS相对应,则对于相对应,则对于R R中的每一个中的每一个元组在元组在F F上的值必为:上的值必为:v或者取空值(或者取空值(F F的每个属性值均为空值)的每个属性值均为空值)v或者等于或者等于S S中某个元组的主码值。中某个元组的主码值。例:例:关系关系 R:学生(学生(学号学号,姓名,性别,姓名,性别,专业号专业号,年龄)年龄)F 关系关系 S:专业(专业(专业号专业号,专业名),
24、专业名)KS35学学 号号姓姓 名名性性 别别专专 业业 号号年年 龄龄8 0 1张张 三三女女0 11 98 0 2李李 四四男男0 12 08 0 3王王 五五男男0 12 08 0 4赵赵 六六女女0 22 08 0 5钱钱 七七男男0 21 9专专 业业 号号专专 业业 名名0 1信信 息息0 2数数 学学0 3计计 算算 机机学生(学生(学号学号,姓名,性别,姓名,性别,专业号专业号,年龄),年龄)专业(专业(专业号专业号,专业名),专业名)36学生关系中每个元组的学生关系中每个元组的“专业号专业号”属性只属性只取下面两类值:取下面两类值:(1 1)空值,表示尚未给该学生分配专业)空
25、值,表示尚未给该学生分配专业(2 2)非空值,这时该值必须是专业关系中某个)非空值,这时该值必须是专业关系中某个元组的元组的“专业号专业号”值,表示该学生不可能分值,表示该学生不可能分配到一个不存在的专业中配到一个不存在的专业中37用户定义的完整性是针对某一具体关系数据用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而制,以便用统一的系统的方法处理它们,而不要由应用程序承
26、担这一功能。不要由应用程序承担这一功能。38例例:课程课程(课程号课程号,课程名,学分,课程名,学分)v“课程号”属性必须取唯一值v非主属性“课程名”也不能取空值v“学分”属性只能取值1,2,3,4392.1.3 关系代数关系代数概述概述传统的集合运算传统的集合运算 专门的关系运算专门的关系运算40一、概述一、概述1.1.关系代数关系代数2.2.关系代数运算的三个要素关系代数运算的三个要素3.3.关系代数运算的分类关系代数运算的分类4.4.表示记号表示记号1.1.关系代数关系代数一种抽象的查询语言一种抽象的查询语言用对关系的运算来表达查询2 2关系代数运算的三个要素关系代数运算的三个要素运算对
27、象:关系运算结果:关系运算符:四类41四类运算符有:v集合运算符v(并),-(差),(交),(广义笛卡尔积)。将关系看成元组的集合运算是从关系的“水平”方向即行的角度来进行v专门的关系运算符v(选择),(投影),(连接),(除);不仅涉及行而且涉及列42v算术比较符辅助专门的关系运算符进行操作v逻辑运算符辅助专门的关系运算符进行操作433 3关系代数运算的分类关系代数运算的分类传统的集合运算:传统的集合运算:把关系看成元组的集合,以把关系看成元组的集合,以元组作为集合中元素来进行运算,其运算是从元组作为集合中元素来进行运算,其运算是从关系的关系的“水平水平”方向即行的角度进行的。方向即行的角度
28、进行的。v传统的集合运算:并、差、交、笛卡尔积专门的关系运算专门的关系运算:不仅涉及行运算,也涉及列不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特运算,这种运算是为数据库的应用而引进的特殊运算。殊运算。选择、投影、连接、除444 4表示记号表示记号 (1)R,t R,tAi 设关系模式为设关系模式为R(A1,A2,An)它的一个关系设为它的一个关系设为R。t R表示表示t是是R的一个元组的一个元组 tAi则表示元组则表示元组t中相应于属性中相应于属性Ai的一个分量的一个分量 45(2)A,tA,A 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的
29、一部分,则A称为属性列或域列。tA=(tAi1,tAi2,tAik)表示元组t在属性列A上诸分量的集合。A则表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的属性组。46(3)tr ts R为n目关系,S为m目关系。tr R,tsS,tr ts称为元组的连接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。47二、传统的集合运算二、传统的集合运算并并差差交交笛卡尔积笛卡尔积481.1.并并 R和和Sv具有相同的目n(即两个关系都有n个属性)v相应的属性取自同一个域RS v仍为n目关系,由属于R或属于S的元组组成 RS=t|t Rt S 49并运算实例并
30、运算实例ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSRS502.2.差差R和和Sv具有相同的目nv相应的属性取自同一个域R-S v具有相同的目n,由属于R而不属于S的所有元组组成 R-S=t|t Rt S 51差运算实例差运算实例ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1ABCa1b2c2a1b3c2a2b2c1RSR-S 52 3.3.交交R R 和和S Sv具有相同的目nv相应的属性取自同一个域R R S Sv仍为n目关系,由既属于R又属于S的元组组成 R S=t|t Rt
31、S 53交运算实例交运算实例ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR S 544.4.广义笛卡尔积广义笛卡尔积Rvn目关系,k1个元组Svm目关系,k2个元组RS v列:(n+m)列的元组的集合元组的前n列是关系R的一个元组后m列是关系S的一个元组v行:k1k2个元组RS=tr ts|tr R tsS 55广义笛卡尔积运算实例广义笛卡尔积运算实例ABCa1 b1c1a1 b2c2a2 b2c1ABCa1b1c1a1b1c1a1b1c1a1b2c2a1b2c2a1b2c2a2b2c1a2b2c1a2b2c1ABCa1
32、 b2 c2a1 b3 c2a2 b2 c1RSR S ABCa1b2 c2a1b3 c2a2b2 c1a1b2 c2a1b3 c2a2b2 c1a1b2 c2a1b3 c2a2b2 c156三、专门的关系运算三、专门的关系运算选择选择投影投影连接连接除除571.1.选择选择(1)选择又称为限制)选择又称为限制(2)选择运算符的含义)选择运算符的含义 是单目运算,即只对一个关系施加操作是单目运算,即只对一个关系施加操作v在关系R中选择满足给定条件的诸元组的集合v语法格式:()F(R)=t|tRF(t)=真vF:选择条件,是一个逻辑表达式 58(3 3)选择运算是从行的角度进行的运算)选择运算是
33、从行的角度进行的运算 (4 4)举例)举例设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC。59 例例1 1 查询信息系(查询信息系(ISIS系)全体学生系)全体学生 SdeptSdept =IS=IS(Student)(Student)或或 5=IS 5=IS(Student)(Student)学学 号号Sno姓姓 名名Sname性性 别别Ssex年年 龄龄Sage所所 在在 系系Sdept95001李勇李勇男男20CS95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS Student例2例3例1例460Cour
34、se课程号课程号课程名课程名先行课先行课学分学分CnoCnameCpnoCcredit1数据库数据库542数学数学 23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理 27PASCAL语言语言6461 SC学学 号号课课 程程 号号成成 绩绩SnoCnoGrade9500119295001285950013889500229095002380例962 例例1 1 查询信息系(查询信息系(ISIS系)全体学生系)全体学生 Sdept=IS(Student)或或 5=IS(Student)结果:结果:StudentSnoSnameSsexSageSdept950
35、02刘晨刘晨女女19IS95004张立张立男男19IS63 例例2 2 查询年龄小于查询年龄小于2020岁的学生岁的学生 Sage 20(Student)或或 4 20(Student)SnoSnameSsexSageSdept95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS 结果:结果:Student642.2.投影投影1 1)投影运算符的含义)投影运算符的含义v从R 中选择出若干属性列组成新的关系 A(R)=tA|t R A:R 中的属性列 652 2)投影操作主要是从列的角度进行运算)投影操作主要是从列的角度进行运算v但投影之后不仅取消了原关系中
36、的某些列,而且还可能取消某些元组(避免重复行)663)3)举例举例 例例3 3 查询学生的姓名和所在系查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影 Sname,Sdept(Student)或 2,5(Student)67Student投影结果:投影结果:SnameSdept李勇李勇CS刘晨刘晨IS王敏王敏MA张立张立IS68 例例4 4 查询学生关系查询学生关系StudentStudent中都有哪些系中都有哪些系 Sdept(Student)Student投影结果:投影结果:SdeptCSISMA693.3.连接连接1)连接也称为连接也称为连接连接2)连接运算
37、的含义连接运算的含义v从两个关系的笛卡尔积中选取属性间满足一定条件的元组 R S=|tr Rts StrAtsB A和B:分别为R和S上度数相等且可比的属性组:比较运算符 v连接运算从R和S的广义笛卡尔积RS中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。ABtr ts70 3)两类常用连接运算两类常用连接运算v等值连接什么是等值连接为“”的连接运算称为等值连接 等值连接的含义从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:R S=|tr Rts StrA=tsB A=Btr ts71v自然连接什么是自然连接自然连接是一种特殊的等值连接两
38、个关系中进行比较的分量必须是相同的属性组在结果中把重复的属性列去掉自然连接的含义R和S具有相同的属性组B R S=|tr Rts StrB=tsB tr ts72 4)一般的连接操作是从行的角度进行运算。一般的连接操作是从行的角度进行运算。v自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。ABRS735)连接举例连接举例 ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS例5例6例774 R S AR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310 CE例例575 等值连接等值连接 R S R
39、.B=S.B AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32例例676 自然连接自然连接 R S ABCEa1b153a1b267a2b3810a2b382 例例7777 4.4.除除1)除的定义)除的定义给定关系给定关系R(X,Y)和和S(Y,Z),其中其中X,Y,Z为属性组。为属性组。R中的中的Y与与S中的中的Y可以有不同的属性可以有不同的属性名,但必须出自相同的域集。名,但必须出自相同的域集。R与与S的除运算得的除运算得到一个新的关系到一个新的关系P(X),P是是R中满足下列条件的中满足下列条件的元组在元组在X属性列上的投影:元组在属性列上的投影:元
40、组在X上分量值上分量值x的象集的象集Yx包含包含S在在Y上投影的集合。上投影的集合。RS=tr X|tr RY(S)Yx Yx:x在R中的象集,x=trX782)2)象集象集Y Y 给定一个关系给定一个关系R(X,Y),),X和和Y为属性组为属性组。当当tX=x时时,x在在R中的象集为中的象集为:Yx=tY|t R,tX=x 它表示它表示R中属性组中属性组X上值为上值为x的的诸元组在诸元组在Y上分上分量的量的集合集合。793)3)例例77除法举例除法举例ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2RSAa1
41、RS80v分析:分析:ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1R例例7中中x=tX在在R中的象集中的象集Yx:关系关系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)81关系关系S在在(B,C)上的投影为上的投影为(b1,c2),(b2,c3),(b2,c1)只有只有a1的象集的象集(B,C)a1包含包含 (B,C)属性组
42、上的投影,所以属性组上的投影,所以RS=a1.关系关系R的属性的属性A中,中,a1的象集为的象集为(b1,c2),(b2,c3),(b2,c1)a2的象集为的象集为(b3,c7),(b2,c3)a3的象集为的象集为(b4,c6)a4的象集为的象集为(b6,c6)BCDb1c2d1b2c1d1b2c3d2S82v 例例77除法举例除法举例ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2RSAa1RSRS=tr X|tr RY(S)Yx Yx:x在R中的象集,x=trX834 4)除操作是同时从行和列角度进行运算)
43、除操作是同时从行和列角度进行运算 RS845 5 综合举例综合举例 例例8 8 查询选修了查询选修了2 2号课程的学生的学号。号课程的学生的学号。Sno(Cno=2(SC)95001,95002 SC学学 号号课课 程程 号号成成 绩绩SnoCnoGrade950011929500128595001388950022909500238085 例例9 9 查询至少选修了一门其直接先行课为查询至少选修了一门其直接先行课为5 5号号 课程的学生姓名。课程的学生姓名。Sname(Cpno=5(Course SC Student)或或 Sname(Cpno=5(Course)SC Sno,Sname(S
44、tudent)86小结小结 关系代数运算关系代数运算v关系代数运算并、差、交、笛卡尔积、投影、选择、连接、除v基本运算并、差、笛卡尔积、投影、选择v交、连接、除可以用5种基本运算来表达 引进它们并不增加语言的能力,但可以简化表达872.2 2.2 关系数据库标准语言关系数据库标准语言SQLSQLSQL概述概述数据定义数据定义查询查询数据更新数据更新视图视图数据控制数据控制嵌入式嵌入式SQLSQL882.2.1 2.2.1 SQLSQL概述概述SQL(Structured Query Language 结构化结构化查询语言)。从查询语言)。从1974年提出到至今已年提出到至今已SQL成成为国际标
45、准。广泛应用于各种数据库中。为国际标准。广泛应用于各种数据库中。SQL是一种介于关系代数和关系演算之间的是一种介于关系代数和关系演算之间的结构化查询语言,但其功能并非仅是查询。结构化查询语言,但其功能并非仅是查询。SQL是一个通用的功能极强的是一个通用的功能极强的RDB语言。语言。89一、一、SQLSQL的特点的特点1.综合统一vSQL集DDL、DML、DCL功能于一体。vSQL数据操作符的统一。(查询、插入、删除、修改都只有一种操作符。)2.高度非过程化vSQL语言是一种非过程语言,即用户只要提出“干什么”即可,不必管具体操作过程,也不必了解数据的存取路径,只要指明所需的数据即可。903.3
46、.面向集合的操作方式面向集合的操作方式vSQL语言是一种面向集合的语言,每个命令的操作对象是一个或多个关系,结果也是一个关系。4.SQL4.SQL语言既是语言既是自含式语言自含式语言,又是,又是嵌入式语言嵌入式语言。可独立使用,也可嵌入到宿主语言中。可独立使用,也可嵌入到宿主语言中。v自含式语言可以独立使用交互命令。v嵌入式语言使其嵌入在高级语言中使用,供应用程序员开发应用程序。5.5.语言简洁,易学易用语言简洁,易学易用vSQL设计巧妙,核心功能只需9个动词。在语言上接近英语。91二、二、SQLSQL语言功能概述语言功能概述SQL功能功能命令动词命令动词数据查询数据查询SELECT数据定义数
47、据定义CREATE、DROP、ALTER数据操纵数据操纵 INSERT、UPDATE、DELETE数据控制数据控制GRANT、REVOKE四部分:四部分:数据定义功能、数据控制功能、数据定义功能、数据控制功能、数据查询功能、数据操纵功能。数据查询功能、数据操纵功能。92三、三、SQLSQL的数据类型的数据类型数值型数值型 字符串型字符串型日期时间型日期时间型93 SQL 视图视图1 视图视图2 基本表基本表1 基本表基本表2 基本表基本表3 存储文件存储文件1 存储文件存储文件2 四、四、SQLSQL支持支持RDBRDB的三级模式结构的三级模式结构942.2.2 数数 据据 定定 义义 95
48、CREATE TABLE (,););v:所要定义的基本表的名字v:组成该表的各个属性(列)v:涉及相应属性列的完整性约束条件v:涉及一个或多个属性列的完整性约束条件 96例例1 建立一个建立一个“学生学生”表表Student,它由学号它由学号Sno、姓名姓名Sname、性别性别Ssex、年龄年龄Sage、所在系所在系Sdept五个属性组成。其中学号不能为空并设为五个属性组成。其中学号不能为空并设为主键,姓名取值也唯一。主键,姓名取值也唯一。CREATE TABLE Student (Sno CHAR(5)NOT NULL PRIMARY KEY,Sname CHAR(20)UNIQUE,Ss
49、ex CHAR(2)DEFAULT 男,Sage INT CHECK(Sage=15 AND Sage=45),Sdept CHAR(15);97 例例2 2 建立一个建立一个“学生选课学生选课”表表SCSC,它由学,它由学号号SnoSno、课程号、课程号CnoCno,修课成绩,修课成绩GradeGrade组成,其组成,其中中(SnoSno,CnoCno)为主码。为主码。TABLE SC(Sno CHAR(5),Cno CHAR(3),Grade int,Primary key(Sno,Cno);FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN K
50、EY(Cno)REFERENCES Course(Cno);98常用完整性约束常用完整性约束v主码约束:PRIMARY KEYv唯一性约束:UNIQUEv非空值约束:NOT NULLv参照完整性约束执行该语句后,便产生了学生基本表的表框架,执行该语句后,便产生了学生基本表的表框架,此表为一个空表。此表为一个空表。如果完整性约束条件涉及到该表的多个属性列,如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级则必须定义在表级上,否则既可以定义在列级也可以定义在表级。也可以定义在表级。992 2、删除基本表、删除基本表 TABLE;基本表删除基本表删除 数据、表上的索引