数据库原理及应用(第3版)课件:关系数据库基础_第1页
数据库原理及应用(第3版)课件:关系数据库基础_第2页
数据库原理及应用(第3版)课件:关系数据库基础_第3页
数据库原理及应用(第3版)课件:关系数据库基础_第4页
数据库原理及应用(第3版)课件:关系数据库基础_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关系数据库基础数据库原理及应用基于SQLServer2022(第3版)关系数据库基础目录2.1关系模型概述2.2关系模型的完整性 2.3常用的关系运算2.4*关系演算与查询优化2.5常量、变量、函数和表达式2.6实验2常量变量函数表达应用2.7本章小结 教学目标

教学目标●掌握关系模型及关系数据库的基本概念●掌握关系模型常用的完整性规则及主要用法●学会运用常用的关系运算解决实际问题●了解关系演算和查询优化的基本方法和过程●掌握常量、变量、函数和表达式概念和用法重点重点同步实验(上机)友情提示重点下列选项中,不属于数据模型要素的是()。数据管理数据操作数据完整性约束数据结构ABCD提交单选题1分要点复习概念模型用于信息世界的建模,下列()不是概念模型。E-R模型和扩展E-R模型层次、网状和关系模型各种语义数据模型面向对象模型ABCD提交单选题1分在数据库技术中,()数据模型是使用公共属性(外键)实现数据之间联系的。层次网状关系面向对象ABCD提交单选题1分下列关于外模式的叙述中,错误的是()。外模式处理的数据实际存储在数据库中外模式是保证数据安全性的一个有效措施一个数据库可以有多个外模式外模式通常是模式的子集ABCD提交单选题1分在数据库的三级模式结构中,外模式/模式之间映像的个数是()。只有1个与外模式的个数相同由系统参数确定可以有任意多个ABCD提交单选题1分2.1.1关系模型的基本概念

1.关系及关系模型常用概念1)关系。关系是一个二维表(简称为表),表示数据的逻辑结构,将现实世界中实体及其联系归结为简单的二维关系,其中表中的行代表一条记录(元组),每列代表一个属性,一般形式定义为:R(D1,D2,...,Dn)表示D1╳D2╳...╳Dn的子集域D1,D2,...,Dn上的关系,其中R表示关系名,n是关系的列(或目)数。2.1关系模型概述关系模型的应用最广泛。关系型数据库系统主要是利用关系型数据库管理系统RDBMS为核心,统一管理控制各种业务数据的处理与共享,关系型数据库在实际业务中应用最广泛最常用,极大地推动了经济、商贸、金融、交通、运输、物流、教育和办公等各领域或行业各种大量业务数据的处理。案例2-12)元组、属性。记录和属性。在关系模型中,二维表中的行称为记录(或元组)。二维表的列称为属性。每个属性对应表中一个字段,属性名即字段名,属性值为其字段值。3)域。域(Domain)是一组具有相同数据类型值的集合。用于表示属性的取值范围,属性A的域用DOM(A)表示,每个属性对应一个域,不同属性可以具有相同域。2.1关系模型概述

不同域示例。D1={百分制成绩X,1≤X≤100}表示百分制成绩的集合。D2={男,女}表示性别集合。D3={企业职工},表示企业18岁-60岁在职员工(特殊情况延迟退休等除外)的集合。案例2-24)关系模型。关系模型(RelationModel)是以关系(表结构)表示的模型,可用键(或称主属性)唯一标识记录,键可以是单一属性或属性组。关系模型的组成包括关系数据结构、关系操作和关系完整性约束。5)元数和基数。元数指关系(数据表)中属性(列)的个数。基数指元组的个数。表2-1的关系的元数和基数分别为6和5。2.1关系模型概述

高校学生数据表。高校学生数据表包含的主要信息为:学号、姓名、性别、专业、出生日期和家庭地址。表头表示关系型,从第二行开始以下各行都是这个关系型的实例(记录)。如表2-1所示。案例2-32.超键、候选键、主键和外键1)超键。是指在关系模式中,能唯一标识记录(元组)的属性组。如(学号,姓名)。2)候选键。是指没有多余属性的超键。如学号、工号、订单号。3)主键。是指在关系中选取的候选键之一,主键不能为空值。如学生(学号,姓名,专业)的主键可以选“学号”,也可以选(学号,姓名)。4)外键。若在关系R中包含另一个关系S的主键所对应的属性组K,则称K为R的外键。如对于选课(学号,课程号,成绩),其中“学号”就是“选课”关系的外键。

注意:外键是指另一个关系的主键。在多表调用数据时,需要多表之间借助主键和外键建立关联,实现记录之间一一对应(避免出错)。2.1关系模型概述采用二维表格结构表达实体及实体间联系的数据模型是()。层次模型网状模型关系模型面向对象模型ABCD提交单选题1分在关系数据模型中,一个关系中的主键()。可以取NULL(空值)只能是单个属性不能是其他关系的外键只能有一个ABCD提交单选题1分2.1.2关系的类型与性质关系有三种类型:基本关系(或称基本表或表)、查询表和视图表。基本表是实际存在的(存储)表。查询表是查询结果对应的表(常为部分数据)。视图表是由表或其他视图表导出的虚表,不对应实际存储的数据。2.1关系模型概述关系(表)具有6条基本性质,包括:1)关系中属性(列)是同质的,即每一列中的属性值(数据项)是同一种类型,即要求同列同类同域。2)关系中属性(列)是原子的,每个属性(列)不可再分。3)任何两行(记录)不能完全相同。以免造成不一致或错误等问题,保证实体的唯一性和完整性。如客户一次存款只能有一条记录。4)任何两列不能同名。不同的列可以来自同一域,即列值类型可以相同。5)关系中的行(记录)不分先后顺序,任意两行记录的次序可以交换。6)关系中属性(列)不分先后顺序,即属性(列)的次序可以任意交换。2.1关系模型概述2.1关系模型概述

高校学生不规范数据表。高校学生数据表包括以下数据项:学号、姓名、性别、专业、出生日期(年、月、日)和家庭地址。表头表示关系型,从第二行开始及以下各行都是一个关系型的实例。如表2-2所示。案例2-4此例中属性“出生日期”再分为年、月、日三分部分(不是原子的),导致属性“出生日期”不符合关系基本性质,是一种不规范关系,直接影响数据处理。根据关系规范化理论要求,关系数据库中的关系必须满足:其每一属性都是()。互相关联的长度可变的互不相关的不可再分解的ABCD提交单选题1分2.1.3关系模式的表示关系模式(Relationschema)是对关系结构和特征的描述,形式化表示为:R(U,D,DOM,F),其中R为关系名,U为组成该关系的属性(列)名集合,D为属性组U中属性取值的域,DOM为属性域的映像集合,F为属性之间数据的依赖关系集合。关系模式可以简记为R(U)或R(A1,A2,...,An),其中R为关系名,A1,A2,...,An为属性名。如,学生关系的关系模式可表示为:学生(学号,姓名,性别,专业,出生日期,家庭地址)2.1关系模型概述2.1.3关系模式的表示关系模式主要描述两方面的内容:1)关系模式指明关系(表)的结构(型),即构成的属性(列)及其域(常为属性的数据类型和长度等),以及属性与域之间的映射(对应)关系。2)关系模式应确定属性间的相互关联关系和属性本身的约束条件。对于属性间的相互关联关系表现为一个表的主键同外键对应。2.1关系模型概述关系数据库是()的集合,其结构是由关系模式定义的。元组列字段表ABCD提交单选题1分2.1.4E-R图与关系模型之间的转换1.转换规则E-R图组成三要素包括实体、实体的属性和实体间的联系,而关系模型是用二维表表示现实世界中实体之间的联系,即关系模式集合,所以将E-R图转换为关系模型(表),就是将E-R图转换成关系的过程。实体和联系类型的转换规则为:1)实体转换关系规则。将每一个实体转换成一个关系时,实体的属性就是关系的属性,实体的标识符就是关系的键,如案例2-1中学生的学号为关系的键。2)二元联系类型的转换规则。①若实体间联系为一对一,则将两个实体类型转换成两个关系模式的过程中,任选一个属性(组)在其中加入另一个关系模式的键和联系类型的属性。②若实体间的联系是一对多,则在多的一端实体的关系中,加上一的一端实体的键和联系的属性。③若实体间的联系是多对多,则将联系也转换为关系,其属性为两端实体的键加上联系的属性,而键为两端实体键的组合。2.1关系模型概述2.1.4E-R图与关系模型之间的转换2.转换方法对于一对一(1:1)、一对多(1:n)和多对多(m:n)三种情况的两个实体(事物)联系转换为关系(二维表)的方法,可以通过应用实例分别概述。(1)一对一联系的转换方法2.1关系模型概述

学生和身份证之间的关系为一对一关系。学生与身份证实体关系图如图2-1所示。在学生端加入身份证号做为联系属性在两者之间建立一对一关系。学生(学号,身份证号,姓名,性别,专业,出生日期,家庭地址),其中学号为主键(PK),身份证号为外键(FK)关联到关系身份证。身份证(身份证号,签发机关,有效期始,有效期止),身份证号为主键。案例2-52.1.4E-R图与关系模型之间的转换(2)一对多联系的转换方法【方法一】:可以将联系与多的一端实体所对应的关系合并,并加一端实体的主键和联系的属性,组成新的关系(表)的属性(列)。【方法二】:可以将联系转换为一个独立关系模式,其属性包含联系自身的属性以及相连接的两端实体的主键,组成新的关系(表)的属性(列)。2.1关系模型概述2.1关系模型概述

商品订单和订单项之间的一对多关系。每一个商品订单包含一个或多个订单项,同时,一个或多个订单项组成一个订单。订单和订单项的关系定义如下。订单和订单项的E-R图如图2-2所示。订单表(订单ID,会员ID,是否付款,运送方式,运费,提交时间)。订单项表(订单项ID,订单ID,商品ID,商品数量)。

案例2-62.1.4E-R图与关系模型之间的转换(3)多对多联系的转换方法对于实体之间是多对多的联系情况,各个实体可以直接转换为关系模式,联系则独立转换一个关系模式,其属性包括联系自身的属性和相连各实体的主键。2.1关系模型概述

2.1关系模型概述

高校学生选课联系。一个学生可以选多门课程,一门课程可被多个学生选修,学生与课程是多对多联系。学生和课程实体转换为相应的独立关系模式,同时选课联系转换一个单独关系模式。其E-R图如图2-3所示。关系模式:学生(学号,身份证号,姓名,性别,专业,出生日期,家庭地址),学号为主键(PK)。课程(课程代码,系部编号,学期,课程名称,课程类型,学分),课程代码为主键。学生选课(学号,课程代码,成绩),学号和课程代码为组合主键,学号、课程代码为外键。案例2-72.1关系模型概述

讨论思考

1)什么是关系模式?其形式化表示是什么?2)关系(二维表)具有什么六条基本性质?3)由E-R图向关系模型的转换规则和方法?关系模型的完整性规则是指对关系的约束条件,是数据操作中应遵守的规则,保证其正确相容性。主要有三类完整性约束:实体完整性、参照完整性和用户定义的完整性,前两个称为关系的不变性,是关系模型必须满足的完整性约束条件,由系统自动实现。用户定义的完整性是业务应用时实际遵循的规则。2.2关系模型的完整性2.2关系模型的完整性2.2.1关系模型的实体完整性实体完整性(EntityIntegrity)规则。如果属性A(单一属性(组))是基本关系R的主属性,则属性A不能取空值。由于主键是记录的唯一标识(调用的指定位置),如果主属性为空将导致记录不可区分,这与实体的定义矛盾。如,学生数据表的“学号”不能为空,如果为空则标明学生不存在,后续的学生选课和学生选课成绩就无法查找与数据处理。实体完整性要求保证每个关系(二维表)有且仅有一个主键,而且每个主键的值必须唯一切不能为空值或重复,以确保数据操作的正确完整可靠。2.2.2

参照完整性(ReferencialIntegrity)在实际应用中,关系模型中实体及其之间的联系可用关系表示。如用户查询数据时经常需要通过主键和外键进行多表之间数据关联或引用。参照完整性(ReferencialIntegrity)形式化的定义:如果F是关系R的一个或一组属性,但不是R的键,K是关系S的主键。若F与主键K相对应,则称F是关系R的外键。并称关系R为参照关系,关系S为被参照关系或目标关系。参照完整性体现在两方面:实现多表之间的关联,外键的取值必须是另一表的主键的有效值或是空值(暂时未定)。2.2关系模型的完整性1)参照关系R和被参照关系(目标关系)不一定是不同关系.见案例2-9。2)外键名不一定要和补参照关系中相对应的主键同名,如案例2-9中的外键主管与主键职员编号就不同名。3)外键值是否允许为空,应视具体问题定。案例2-8中学生选课关系中学号和课程代码不允许为空,如果为空则没有实际意义,数据为无用数据。2.2关系模型的完整性

学生实体和专业实体之间的关系。高校学生实体和专业实体之间的联系。学生(学号,身份证号,姓名,性别,专业编号,出生日期,家庭地址),其中学号为主键(PK)。专业(专业编号,专业名称)其中专业编号为主键(PK)同时是“学生”关系的外键。案例2-8

注意

企业职员数据表。企业职员数据表。职员(职员编号,姓名,性别,民族,出生年月,所在部门,籍贯,政治面貌,家庭地址,联系电话,主管)。职员关系中,“职员编号”为主键,主管属性表示该员工主管的编号,它引用了本关系“职员编号”,因为主管也是职员中有一员,只是职位不同。所以职员关系中主管必须是“职员编号”(列/字段)中的某个值,或者为空值(表示尚未分配主管)。案例2-92.2.3用户定义的完整性(User-definedIntegrity)用户定义的完整性(User-definedIntegrity)是指对数据表中字段属性的约束(实际要求),包括属性的值域、类型、宽度和小数点位数等,是由确定关系结构时所定义字段属性决定的。如,在客户申请银行卡时,银行对身份证进行合法验证,要求其字段长度为18位。域完整性(DomainIntegrity)指属性(列)的值域的完整性。如数据类型、格式、值域范围、是否允许空值等。是针对某一具体数据库的约束条件,保证表中某些列不能输入无效的值。域完整性限制了某些属性中的值,将属性限制在一个有限集合。如通常正式职工年龄在18-60之间。2.2关系模型的完整性

讨论思考1)在关系模型中具体有哪几类完整性约束?2)关系中为何满足实体完整性和参照完整性?3)试举例说明用户定义的完整性应用案例。2.2关系模型的完整性设有关系SC(SNO,CNO,GRADE),主键是(SNO,CNO)。下列遵循实体完整性规则的是()。只有SNO不能取空值只有CNO不能取空值只有GRADE不能取空值SNO与CNO都不能去空值ABCD提交单选题1分下列对于关系的叙述中,不正确的是()。关系中的每个属性是不可分解的在关系中的元组的顺序是无关紧要的任意的一个二维表都是一个关系每一个关系仅有一种记录类型ABCD提交单选题1分以下4题基于如下两个关系表,其中雇员信息表EMP的主键是雇员号,并且工资金额不得小于1500元;部门信息表DEPT的主键是部门号。题1:如果向“EMP”表中插入下行数据(NULL,‘李静’,‘03’,1200),则该操作违反了()。实体完整性规则参照完整性规则用户定义完整性规则实体完整性规则和用户定义完整性规则ABCD提交单选题1分题2:如果从“DEPT”表中删除部门号=‘01’的数据行,则该操作违反了()。实体完整性规则参照完整性规则用户定义完整性规则都违反ABCD提交单选题1分题3:下列操作不能正确执行(这里不考虑置空值和级联操作)的是()。从EMP中删除雇员号=‘010’的行在EMP中插入行(‘102’,‘赵敏’,‘01’,2000)将EMP中雇员号=‘056’的工资改为2600将EMP中雇员号=‘101’的部门号改为‘05’ABCD提交单选题1分题4:下列操作不能正确执行(这里不考虑置空值和级联操作)的是()。从DEPT中删除部门号=‘03’的行在DEPT中插入行(‘06’,‘计划部’,‘李浩’)将DEPT中部门号=‘02’的部门号改为‘10’将DEPT中部门号=‘01’的负责人改为‘陈颖欣’ABCD提交单选题1分2.3.1关系运算符和运算种类1.关系运算的种类关系运算种类有两种:传统关系运算和专门关系运算。传统关系运算将关系作为集合,并对“水平”方向行运算,专门关系运算涉及到行和列。(1)传统关系运算主要使用传统的集合运算方法,将关系(表)作为行(记录)的集合,从关系的行方向进行(集合)运算,常用的是两个关系的运算。传统的集合运算可以实现的基本操作为:1)并运算。在数据库中,用于实现对指定数据的插入和添加操作。2)差运算。在数据库中,用于实现对指定数据记录的删除操作。3)差并结合。修改数据的操作,要先删除(差)后插入(并)操作。(2)专门的关系运算专门关系运算是针对关系数据库专门设计的,涉及到关系的行和列。利用比较和逻辑运算符可以实现辅助专门的关系运算符操作。有时还需要对关系本身运算,如果需要显示表中某列的值,就需要利用关系的专门运算中的“投影”。2.3常用的关系运算2.3.1关系运算符和运算种类2.关系运算种类关系运算符有四种:集合运算符、专门关系运算符、(算术)比较运算符和逻辑运算符。具体的使用方法将在后面结合应用案例介绍。1)集合运算符:∪(并运算)、─(差运算)、∩(交运算)、╳(笛卡尔集)。2)专门的关系运算符:σ(选择)、(投影),⋈(连接)、÷(除)。3)(算术)比较运算符:>(大于)、≥(大于等于)、<、≤、=、≠。4)逻辑运算符:﹁(非)、∧(与)、∨(并)。

2.3常用的关系运算2.3.2传统的关系运算传统的关系运算可以归纳为集合运算,即对两个关系的集合运算,传统的关系运算主要包括四种:并、差、交和广义笛卡尔集。1.并运算设关系R和关系S具有相同的n目(属性/列),且相应的属性取自同一个域,则关系R和关系S的并(Union)由属于R或属S的记录(元组)组成。其结果关系的目仍为n,记为R∪S。形式化定义为:R∪S={t|t∈R∨t∈S}其中,t表示关系R或S中的记录,即关系R或S中的行。

注意:R∪S的结果集合是R中记录和S中记录合并一起构成的一个新关系,特别要指出的是合并后的结果必须要除去重复记录。

2.3常用的关系运算

2.3.2传统的关系运算

2.3常用的关系运算

已知关系R和关系S如表2-3和表2-4所示,计算机关系R和关系S的并集(R∪S)。案例2-10表2-5R∪S结果2.3.2传统的关系运算2.差运算设关系R和关系S具有相同的n目(列/属性),且相应的属性取自同一个域,则关系R和关系S的差(Difference)由属于R且不属于S的记录组成。其结果关系的目数仍为n,记为R-S。形式化定义为:R-S={t|t∈R∧tS}其中,t表示属于R且不属于(差掉)S的所有记录。2.3常用的关系运算

已知关系R和关系S如表2-3和表2-4所示,求关系R和S的差R-S。其计算结果如表2-6所示。案例2-112.3.2传统的关系运算3.交运算设关系R和关系S具有相同的n目(列/属性),且相应的属性取自同一个域,则关系R和关系S的交(Intersection)由属于R且属于S的记录组成。其结果关系的属性数仍为n,记为R∩S。形式化定义为:R∩S={t|t∈R∧t∈S}其中,t为同时属于关系R和S中的所有记录,即关系R且S中行的公共部分。2.3常用的关系运算

已知关系R和关系S如表2-3和表2-4所示,计算关系R且S中行的公共部分。R∩S的结果如表2-7所示。案例2-122.3.2传统的关系运算4.广义笛卡尔积设关系R和关系S的目(列/属性)分别为r及s。关系R和S的广义笛卡尔积(ExtendedCartesian)R╳S是一个(r+s)目的记录集合(新关系有r+s列),每个记录前r个分量(属性值)来自关系R的一个记录,后s个分量是关系S的一个记录。关系R和关系S的笛卡尔积记为R╳S,其形式化定义为:R╳S={t|t=<tr,ts>∧trR∧tsS}说明:tr、ts中r,s为上标,分别表示r个分量和s个分量。若关系R的基数(行数)k1,关系S的基数为k2,则关系R和关系S的笛卡尔积的基数为k1╳k2。

2.3常用的关系运算2.3.2传统的关系运算

2.3常用的关系运算

已知关系R和关系S如表2-4和表2-8所示,求关系R和S的广义笛卡尔积,具体的结果如表2-9所示。案例2-13下列()关系运算不要求“R和S具有相同的属性个数,且它们对应的属性取自同一个域”。R∪SR∩SR-SR×SABCD提交单选题1分设关系R和S的元数分别是r和s,且R有m个元组,S有n个元组。执行T=R×S后,()。T的元数是(r×s),且有(m+n)个元组T的元数是(r×s),且有(m×n)个元组T的元数是(r+s),且有(m+n)个元组T的元数是(r+s),且有(m×n)个元组ABCD提交单选题1分设关系R和S具有相同的属性个数,且相应的属性取自同一个域,则{t|t∈R∨t∈S}定义的是()。R-SR∪SR∩SR-(R-S)ABCD提交单选题1分设关系R和S具有相同的属性个数,且相应的属性取自同一个域,则{t|t∈R∧t∉S}定义的是()。R-SR∪SR∩SR×SABCD提交单选题1分2.3.3专门的关系运算专门的关系运算有四种:选择运算、投影运算、连接运算和除运算。其中,选择运算可以在多表中选取符合满足条件的记录并构成新关系(表),投影运算可选取记录中指定的属性(列)构成新关系,连接运算可选取符合条件的记录串联(连接)成新关系,除运算可选取像集符合条件的记录的多个属性(列)构成新关系。2.3常用的关系运算2.3.3专门的关系运算1.选择运算选择(Selection)运算也称限制(Restriction)是对关系进行水平(行)分割(选取)。选择是在表中选取符合指定条件的记录,记为σF(R)。其中,σ为选择运算符,F表示选择条件,F通常是一个逻辑表达式,其取值为逻辑值“真”(成立)或“假”(不成立)。σF(R)表示从R中选取满足条件F的记录(行)所构成的新关系,形式化定义为:σF(R)={t|tR∧F(t)=true}逻辑表达式F的基本形式为:XθY,其中,θ表示比较运算,可以是>、≥、<、≤、=、≠。X和Y为属性名或为常量或为简单函数,属性名可以用其的序号替代。在基本的选择条件中可以进一步进行逻辑运算,包括非(﹁)、与(∧)、或(∨)运算。2.3常用的关系运算2.3.3专门的关系运算

2.3常用的关系运算

在商品信息表中,如表2-10所示,查询出所有产地为“深圳”的商品信息。在“商品”数据表中,进行选择运算σ产地=’深圳’或σ8=‘深圳’,其结果表2-11所示。案例2-14表2-10商品信息表表2-11产地为“深圳”选择结果【案例2-15】查询商品价格低于500元的商品信息。在“商品”数据表中,选择运算σ价格<500或σ3<500,其结果如表2-12所示。案例2-15表2-12价格低于500选择运算结果2.3.3专门的关系运算2.投影运算投影(Projection)运算是对关系(表)进行垂直分割,即对关系的列方向的筛选。投影运算是在一个关系中选取某些属性或列,并重新排列其顺序,再删掉重复记录后构成的新关系,是对二维表的垂直分割,记为,其中为投影运算符,A为关系R中的属性列。投影运算的形式化定义为:2.3常用的关系运算2.3.3专门的关系运算

2.3常用的关系运算

已知商品信息表如2-10所示,查询商品的产地信息。投影运算或的结果如表2-13所示。案例2-16

已知商品信息表如2-10所示,查询商品的名称和价格信息。投影运算或的结果如表2-14所示。案例2-172.3.3专门的关系运算3.连接(Join)运算

连接又称θ连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。形式化定义如下:其中A和B分别为关系R和关系S上度数相同且可比的属性组。θ为比较运算符。连接运算从R和S的笛卡尔积R╳S中选取R关系在A属性组上的值与S关系在B属性组上值满足比较关系θ的元组。连接运算中有两种最常用的连接,一种是等值连接(Equijoin),别一种是自然连接(NaturalJoin)。2.3常用的关系运算2.3.3专门的关系运算3.连接(Join)运算

1)等值连接,如果θ为“=”的连接运算称为等值连接。等值连接从关系R和关系S与广义笛卡尔积中选取A,B属性相等的元组,即等值连接为:2)自然连接,是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。如果关系R和S具有相同的属性组B,则自然连接可记为:注意:一般的连接操作是从行的角度进行运算。但自然连接还需要取消重复列,所以是同时从行和列的角度进行的运算。2.3常用的关系运算2.3.3专门的关系运算

2.3常用的关系运算

设有两个关系R和关系S,分别如表2-15和表2-16)所示,,求、和。案例2-182.3.3专门的关系运算 自然连接与等值连接的主要区别包括:1)等值连接中相等的属性可以是相同属性,也可以不同属性,而自然连接中相等的属性必须是相同的属性。2)自然连接结果必须去除重复属性,而等值连接的结不需要去除重复属性。3)自然连接用于有公共属性的情况。若两个关系没有公共属性,则它们不能进行自然连接,而等值连接无此要求。自然连接在多表数据调用时常用。2.3常用的关系运算2.3.3专门的关系运算4.除运算(Division)给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作:其中为x在R中的像集,。除运算通常是对关系的行和列角度进行操作。2.3常用的关系运算2.3.3专门的关系运算除运算的计算过程,可按如下进行:1)将被关系的属性分为像集和结果属性两部分,与除关系相同的属性归于像集,不相同的属性归于结果集。2)在除关系中,在与被除关系相同的属性(像集属性)上投影,得到除目标数据集。3)将被除关系分组,将结果属性值相同的元组分为一组。4)观察每个组,若它的像集属值中包括除目标数据集,则对应的结果属性值应该属于除法运算结果集,并去掉与原被除关系相同的分组。2.3常用的关系运算2.3.3专门的关系运算

2.3常用的关系运算

已知关系R(表2-20)和关系S(表2-21),求。案例2-192.3.3专门的关系运算具体除运算计算过程:1)关系R中属性组A,B的取值为{(2,1),(2,2),(3,2)},其中,(2,1)的像集为{(a,c),(b,d)},(2,2)的像集为{(a,d)},(3,2)的像集为{(b,d),(b,c)}。2)关系S在属性组(C,D)上的投影为{(a,c),(b,d)}3)找出全部属性组A,B像集包含关系S属性组C,D上的投影的取值,即为新关系R÷S,此处通过比较(1)和(2),可以发现只有元组(2,1)的像集包含关系S在属性组C,D上的投影,所以R÷S只有一个元组(2,1),即R÷S运算结果如表2-22所示。除的基本运算可以表示为等价关表达式:

2.3常用的关系运算2.3.3专门的关系运算

2.3常用的关系运算案例2-202.3关系模型概述

讨论思考1)交、并、差运算的两个关系必须满足什么条件?2)除运算的结果主要表示什么具体的含义?3)等值连接和自然连接之间的区别是什么?从两个关系的笛卡尔乘积中,选取它们属性间满足某个条件的元组的操作称为()。选择差θ连接自然连接ABCD提交单选题1分在关系代数中有一种连接操作,要求执行该连接操作的两个关系中进行比较的分量必须是相同的属性或属性组,并在结果中去掉重复的属性。这种连接操作称为()。半连接等值连接自然连接θ连接ABCD提交单选题1分设有关系R=(A,B,C),与SQL语句selectdistinctAfromRwhereB=17等价的关系代数表达式是()。πA,B(σB=17(R))σB=17(πA,B(R))πA(σB=17(R))σB=17(πA(R))ABCD提交单选题1分设有学生信息关系STUDENT(sno,sname,sex,age,dept)。“查找信息技术学院(IT)中年龄小于20岁的学生的姓名”,该操作正确的关系代数表达式是()。πsname(σdept=IT∧age<20(STUDENT))σdept=IT∧age<20(πsname

(STUDENT))σsname(πdept=IT∧age<20(STUDENT))以上都不对ABCD提交单选题1分关系演算与关系运算不同,是以数理逻辑中的谓词演算为基础的一种运算。与关系代数相比较,关系演算是非过程化的。关系演算只需描述结果的信息,而不需给现获得信息的具体过程。按谓词变元的不同,关系演算可分为记录关系演算和域关系演算。记录关系演算以记录为变量,域关系演算以域为变量。*2.4关系演算与查询优化*2.4.1关系演算概述1.记录关系演算记录关系演算(TupleRelationalCalculus)中,其形式化表达为:其中,为记录变量,表示一个元数固定的记录,是以记录变量为基础的公式。该表达式的含义是使为真的记录的组合。关系演算由原子公式和运算符组成。*2.4关系演算与查询优化*2.4.1关系演算概述原子公式有三类:

(1)R(t)。R是关系名,t是元组变量,R(t)表示t是关系R的一个元组。(2)。其中t和s是元组变量,θ是算术比较运算符(如>、<、=、≥等)。表示元组t的第i个分量与元组s的第j个分量满足关系。例如t[3]≥s[5]表示t第3个分量大于等于s的第5个分量。

(3)或。其中C表示一个常量,t是元组变量,是算术比较运算符。表示t的第i个分量与常量C满足关系。例如,t[2]>5表示t的第2个分量大于5。*2.4关系演算与查询优化*2.4.1关系演算概述*2.4关系演算与查询优化*2.4.1关系演算概述*2.4关系演算与查询优化*2.4.1关系演算概述*2.4关系演算与查询优化

案例2-212.4.1关系演算概述*2.4关系演算与查询优化*2.4.1关系演算概述2.域关系演算:

*2.4关系演算与查询优化

查询性别为男的所有售货员的编号和姓名。案例2-22*2.4.2查询优化常用规则与算法1.关系代数等价变换规则常用的等价变换规则如下:

*2.4关系演算与查询优化*2.4.2查询优化常用规则与算法

*2.4关系演算与查询优化*2.4.2查询优化常用规则与算法

*2.4关系演算与查询优化*2.4.2查询优化常用规则与算法2.关系表达式的优化算法*2.4关系演算与查询优化*2.4关系演算与查询优化

讨论思考1)什么是关系演算?在其公式中运算符优先级?2)记录关系演算和域关系演算有何区别和联系?3)进行查询优化的具体主要原因是什么?4)试举例说明关系表达式优化的过程。

2.5常量、变量、函数和表达式2.5.1标识符及使用规则标识符(Identifer)是指用于标识数据库对象名称的字符串,如,服务器、数据库、表、视图、索引和存储过程等。用于对指定数据库对象的操作,如查询指定表的数据必须指定查询表的表名,也有一些对象是可选的标识符,如创建约束时的标识符由系统默认生成。按照其用法标识符分为两类:常规标识符和界定标识符。1.常规标识符常规标识符(Regularidentifer)又称规则标识符,其命名规则为:1)标识符组成为字母、数字、下划线、@符号、#和$符号,其中字母可以是大小写英文字母或其他语言的字符,如表名:“商品信息A_1”。2)标识符的首字符不能是数字或“$”符号。3)标识符不允许使用SQL保留字,如,命令sp_help或函数名max、desc、asc等。4)标识符内不允许有空格或特殊字符,如?、%、&、*等。5)标识符的长度不能超过128个字符。

2.5.1标识符及使用规则

2.界定标识符界定标识符又称分隔标识符,包括两种:1)方括号或引号。对不符合标识符命名规则的标识符,如标识符中包含SQLServer关键字或内嵌的空格和其他不是规则规定的字符时,要用界定标识符[]或双引号将其括起来。2)空格和保留字。如,在标识符[productname]和“insert”中,分别将界定标识符用于带有空格和保留字insert的标识符中。2.5常量、变量、函数和表达式

标识符示例。规则标识符示例:_Product、Company、课程信息表、Customer_01、Product_Type_Name等;不规标识符示例:tblproduct、productName&123等;案例2-23说明:1)符合标识符格式的可用标识符分隔,也可不分隔。对于不符合格式规则的标识符必须进行分格。如,对于标识符productTypeName必须进行分隔,分隔后的标识符为[productTypeName]或“productTypeName”。2)使用分隔标识符的两种情况:①对象名称中包含SQLSever保留关键时需要使用界定标识符,如[select]。②对象名称中使用了未列入限定字符的字符,如[prodoct[1]table]。3)引用标识符。默认情况下,只能使用括号分界定标符。如果使用引用标识符,需要将Quoted_Identifier标志设为ON。2.5常量、变量、函数和表达式

2.5.2常用的数据类型在SQLServer中,常用操作需要指定列、常量、变量、表达式和参数等对象的数据类型,指定对象的数据类型相当于定义该对象的特性为:1)对象所含的数据类型,如字符型、整数型、货币型。2)每列所存储的数据项(字段)值的长度(宽度)或大小。3)数值精度、小数位数(仅用于数值数据类型)。SQLServer提供的系统数据类型如表2-23所示,详见数据类型手册。2.5常量、变量、函数和表达式

2.5.2数据类型2.5常量、变量、函数和表达式表2-23SQLServer系统数据类型

2.5.3常量和变量及其用法

1.常量的表示及用法常量是指在程序运行过程中其值保持不变的量。表示一个特定数据值的符号,也称为文字值或标量值。其格式取决于其所表示的值的数据类型,具体数据类型如表2-23所示。根据不同的数据类型,常量可分为字符型常量、整型常量、日期常量、实型常量、货币常量和全局唯一标识符。(1)字符型常量字符型常量组成为字母、数字字符(a-z、A-Z及0-9)和特殊字符(如!、@和#等字符)。通常放在单引号内。如果字符型常量中包含单引号字符时,则需要使用两个单引号表示,如,定义一个字符型常量I'mastudent,应写成'I''mastudent'。字符型常量有两种:ASCII和Unicode字符型常量。①ASCII字符型常量。是由ASCII字符构成的字符串,应放在单引号内,如‘abcd’。②Unicode字符型常量。在常量前面加一个N,如N'abcd'(其中N必须大写,在SQL92标准中表示国际语言)。2.5常量、变量、函数和表达式

2.5.3常量和变量及其用法(2)整型常量整型常量通常表示整数。主要包括二进制整数、十进制整数和十六进制整数。如,二进制1100,十六进制0x4b等。(3)日期时间型常量日期时间型常量用于表示日期或时间,常用单引号将所表示的日期或时间括在其中。如,‘2019-08-09’、‘July-10-1998’、‘08/24/1998’或'2020年8月9日'等。(4)实型常量实型常量用于表示定点数或浮点数,如126.35、5E10。(5)货币常量以货币符号开头,如¥600.45。SQLServer不强制分组,每隔3个数字由一个逗号分隔。(6)全局唯一标识全局唯一标识符(GloballyUniqueIdentificationNumbers,GUID)是一个128位二进制数组成(16字节),用于所有需要唯一标识的计算机和网址。2.5常量、变量、函数和表达式

2.5.3常量和变量及其用法2.变量的表示及用法变量是指在程序运行过程中其值可以发生变化的量,包括局部变量和全局变量两种。(1)局部变量局部变量是由用户定义,其作用域局限在一定范围内的SQL对象。作用域:若局部变量在一个批处理、存储过程、触发器中被定义,则其作用域就是此批处理、存储过程、触发器。局部变量的声明。局部变量的声明语句格式为:DECLARE@变量名1[AS]数据类型,@变量名2[AS]数据类型,...,@变量名n[AS]数据类型

2.5常量、变量、函数和表达式

2.5.3常量和变量及其用法注意:①局部变量名必须以@开头。②局部变量必须先定义,然后在SQL语句中使用,默认值为NULL。③数据类型要求:系统提供的类型、用户定义的数据类型或别名数据类型。变量不能是text、ntext或image数据类型。局部变量的赋值。局部变量的赋值语句的语法为:格式一:set@变量名=表达式格式二:select@变量名=表达式或

select@变量名=输出值from表where条件或select@变量名1=表达式1[,@变量名2=表达式2,...,@变量n=表达式n] 2.5常量、变量、函数和表达式

2.5.3常量和变量及其用法

useLibrary go declare@bookNamevarchar(64) select@bookName=书名 frombooks where馆藏号='WC13201' select@bookNameas‘书名’执行结果:2.5常量、变量、函数和表达式

利用select命令为变量@bookName赋值,并通过此命令使变量输出结果(实际的具体书名)。案例2-24

2.5.3常量和变量及其用法

useLibrary go declare@bookNamevarchar(64) select@bookName=书名 frombooks

select@bookNameas‘书名’执行结果:2.5常量、变量、函数和表达式

利用select命令查询变量返回多个结果,并将最后一个结果值赋给变量。案例2-25

2.5.3常量和变量及其用法

useLibrary go declare@novarchar(18) set@no='WC13201' declare@bookNamevarchar(64) select@bookName=书名 frombooks where馆藏号=@no select@bookNameas‘书名‘执行结果:2.5常量、变量、函数和表达式

利用Set和select语句给局部变量no赋值的实际用法,并利用select语句显示变量bookName的结果。案例2-262.5.3常量和变量及其用法(2)全局变量全局变量是SQLSever系统定义并提供信息的变量。用于检测服务器及系统的运行情况,用户不能定义全局变量,也不能使用Set语句对全局变量进行赋值。定义全局变量的格式为:@@变量名SQLServer系统提供33个全局变量,方便用户掌握SQLServer服务器运行情况。常用的全局变量如表2-24所示,更多可查阅SQLServer手册。2.5常量、变量、函数和表达式

2.5常量、变量、函数和表达式表2-24常用系统全局变量2.5.4常用函数及其用法函数是指具有完成某种特定功能的程序,在SQL编程中也可理解为具有一定功能的SQL语句集合,其处理结果称为返回值,处理过程称为函数体。SQLServer提供了丰富的内置函数,且允许用户自定义函数。利用这些函数可以方便地实现各种运算和操作,常用select查看函数的返回值(结果)。1.SQLServer常用函数用法SQLServer提供的常用内置函数分为14类。每种类型的内置函数都可以完成某种类型的操作,其内置函数的分类如表2-25所示。2.5常量、变量、函数和表达式2.5.4常用函数及其用法2.5常量、变量、函数和表达式表2-25SQLServer的内置函数种类和功能2.5.4常用函数及其用法(1)聚合函数及其用法聚合函数又称为统计函数。所有聚合函数均为确定性函数,只要使用一组特定输入值(数值型)调用聚合函数,该函数将返回同类型的值,其名称和功能见表2-26。2.5常量、变量、函数和表达式表2-26常用聚合函数2.5.4常用函数及其用法

useLibrary go select* frombooks where单价=(selectmax(单价)frombooks)执行结果:2.5常量、变量、函数和表达式

查询图书表中价格最高的图书。请看几个上述表中常用的聚合函数的应用实例,注意其具体用法。案例2-27

2.5.4常用函数及其用法(2)数学函数。数学函数用于对数字表达式进行数学运算并返回计算结果。SQLServer提供了20多个用于处理整数与浮点值的数学函数。表2-27列举了部分常用数学函数。2.5常量、变量、函数和表达式表2-27常用数学函数

2.5.4常用函数及其用法

(3)字符函数字符函数又称为字符串函数,用于计算、格式化和处理字符串变量,或将对象转换为字符串。与数学函数类似,为了方便用户进行字符型数据的各种操作和运算,SQLServer提供了功能全面的字符串处理函数,表2-28对常用的字符串处理函数进行简要介绍。2.5常量、变量、函数和表达式表2-28常用字符函数

2.5.4常用函数及其用法由于字符函数在实际编程中应用较为广泛,下面就表2-28中的每个函数给出相应的示例,示例如表2-29所示。2.5常量、变量、函数和表达式表2-29常用字符函数应用示例

2.5.4常用函数及其用法(4)日期时间函数SQLServer提供了9个日期时间处理函数,如表2-30所示。在SQLServer提供的日期时间处理函数中,一些日期时间函数常量及其含义和格式与用法,如表2-31所示。2.5常量、变量、函数和表达式表2-31常用的日期时间格式表2-30常用日期时间函数

2.5.4常用函数及其用法

2.5常量、变量、函数和表达式

常用的日期时间函数实际应用格式和方法。请看几个表中常用的日期时间函数的应用实例,注意其具体用法案例2-281)dateadd函数示例,该函数三个参数第一个参数是增加时间的类型,包括天、月、年等,第二个参数是增加数量,第三个参数为要增加的日期,返回值为增加日期数量后的时间。selectgetdate()as'当前日期'selectdateadd(day,1,getdate())as‘当前日期加1天’

selectdateadd(month,1,getdate())as'当前日期加1月'

selectdateadd(year,1,getdate())as‘当前日期加1年’

2.5.4常用函数及其用法2.5常量、变量、函数和表达式2)datediff函数declare@enddatetimedeclare@startdatetimeset@end=getdate()set@start=dateadd(year,-2,@end)select@startas'开始时间'select@endas'结束时间'selectdatediff(year,@start,@end)as‘结束时间与开始时间的差’3)DATENAME函数selectgetdate()as'当前日期’selectdatename(dw,getdate())as'当天星期几’selectdatename(day,getdate())as'当月第几天’selectdatename(month,getdate())as'当年第几月’selectdatename(year,getdate())as'当前年'2.5.4常用函数及其用法*2.自定义函数SQLServer为了扩展和方便用户,提供了自定义函数,返回值是一个临时表或数值。自定义函数不支持输出参数(可用存储过程)。函数返回值形式不同可创建三类自定义函数。1)标量值自定义函数标量值自定义函数的返回值是一个确定类型的标量值,其返回值类型为除text、ntext、image、timestamp和table类型之外的任意类型,即标量值自定义函数返回的是一个数值。定义标量值自定义函数的语法结构为:CREATEFUNCTION函数名称(@参数1类型1,[@参数2类型2,...,@参数n类型n])RETURNS返回值类型[WITHENCRYPTION][AS]BEGIN函数体语句序列RETURN返回值END

2.5常量、变量、函数和表达式2.5.4常用函数及其用法

createfunctiongetBorrowBookCount(@cardnochar(10))returnsintasbegin

declare@bookCountintset@bookCount=(selectcount(卡号)fromborrowingwhere卡号=@cardno)return@bookCountEnd创建函数后执行以下语句:useLibrarygoselectdbo.getBorrowBookCount('2008213124')as'借书数量'执行结果如是图。2.5常量、变量、函数和表达式

在Libaray示例数据库中创建函数根据读者卡号,查询该用户的借书数。案例2-292.5.4常用函数及其用法2.5常量、变量、函数和表达式2)内联表值自定义函数内联表值自定义函数是以表形式返回一个值(表的数据)。内联表值自定义函数没有BEGIN...END语句中包含的函数体,而直接用RETURNS子句,其中包含SELECT语句将数据从数据库中筛选形成表。使用内联表值自定义函数可提供参数化的视图功能。内联表值自定义函数的语法结构为:CREATEFUNCTION函数名称(@参数1类型1,[@参数2类型2,...,@参数n类型n])RETURNSTABLE[WITHENCRYPTION][AS]RETURN(查询语句)

2.5.4常用函数及其用法

createfunctiongetBorrowBookList(@cardnochar(10))returnstableasreturn(select*fromborrowingwhere卡号=@cardno)执行语句:select*fromgetBorrowBookList('2008213124’)执行结果: 2.5常量、变量、函数和表达式

在Libaray示例数据库中,创建函数根据读者卡号,查询该用户所借的所有图书。案例2-30

2.5.4常用函数及其用法

2.5常量、变量、函数和表达式3)多语句表值自定义函数多语句表值自定义函数可看作标量值和内联表值型自定义函数的结合体。此类函数的返回值是一个表,但与标量值自定义函数一样,有一个有BEGIN...END语句块中包含的函数体,返回值的表中的数据是由函数体中的语名插入的。因此,其可以进行多次查询,对数据进行多次筛选与合并,弥补了内联表自定义函数的不足。

2.5.5常用运算符及其用法运算符是指具体的运算符号,用于算术运算、字符串连接、赋值或在字段、常量和变量之间的比较。主要有6大类运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、连接运算符和按位运算符。在表达式中连接常量、变量和函数,需注意连接过程优先级。1.运算符的种类1)算术运算符。可以在两个表达式上执行数学运算,这两个表达式可以是任何数值数据类型。SQLServer主要的算术运算符见表2-32。2)比较运算符。用于比较两个同类表达式的大小,表达式可以是字符、数字或日期型数据,其比较结果是Boolean值。SQLServer主要比较运算符见表2-33。

2.5常量、变量、函数和表达式

2.5.5运算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论