1、第第2章章 创建数据库创建数据库和和创建创建表表数据库原理与应用(SQL Server)12.1 关系模型关系模型2.2 关系代数关系代数2.3 关系关系演算演算2.4 SQL简介简介22.1 关系模型关系模型2.1.1关系数据结构关系数据结构1.关系关系1)域(Domain)定义定义2.1 域是一组具有相同数据类型的值的集合。例如,整数、正整数、实数、大于等于0且小于等于100的正整数、0,1,2,3,4等都可以是域。2.)笛卡尔积(Cartesian Product)定义定义2.2 设定一组域D1,D2,Dn,在这组域中可以是相同的域。定义D1,D2,Dn,的笛卡尔积为 D1D2Dn=(d
2、1,d2,dn)|diDi,i=1,2,n 数据库原理与应用(SQL Server)32.1.1 关系关系数据结构数据结构其中每一个元素(d1,d2,dn)叫做一个n元组(n-tuple)或简称元组(Tuple),元素中的每个值di(i=1,2,n)叫做一个分量(Component)。如果Di(i=1,2,n)为有限集,其基数(Cardinal number)为mi(i=1,2,n),则D1D2Dn的基数为笛卡尔积可以表示为一个二维表,表中每一行对应一个元组,每一列的值来自一个域。【例2.1】笛卡尔积举例 数据库原理与应用(SQL Server)1niiMm42.1.1 关系数据结构关系数据结
3、构 给出3个域:D1=学号集合stno=121001,121002 D2=姓名集合stname=周浩然,王丽萍 D3=性别集合 stsex=男,女 则D1,D2,D3,的笛卡尔积为:D1D2D3=(121001,周浩然,男),(121001,周浩然,女),(121001,王丽萍,男),(121001,王丽萍,女),(121002,周浩然,男),(121002,周浩然,女),(121002,王丽萍,男),(121002,王丽萍,女)其中(121001,周浩然,男),(121001,周浩然,女),(121002,王丽萍,男)等都是元组,121001,121002,周浩然,王丽萍 数据库原理与应用(
4、SQL Server)52.1.1 关系数据结构关系数据结构 男,女等都是分量,这个笛卡尔积的基数是222=8,即共有8个元组,可列成一张二维表,如表2.1所示。表2.1 D1,D2,D3的笛卡尔积 数据库原理与应用(SQL Server)62.1.1 关系数据结构关系数据结构3.)关系(Relation)定义定义2.3 笛卡尔积D1D2Dn的子集称为D1,D2,Dn上的关系,表示为R(D1,D2,Dn)这里的R表示关系的名称,n是关系的目或度(Degree)。当n=1时,称该关系为单元关系或一元关系。当n=2时,称该关系为二元关系。当n=m时,称该关系为m元关系。关系中的每个元素是关系中的元
5、组,通常用t表示。在一般情况下,D1,D2,Dn的笛卡尔积是没有实际意义的,只有它的某个子集才有实际意义,举例如下。数据库原理与应用(SQL Server)72.1.1 关系数据结构关系数据结构【例2.2】关系举例在例2.1的笛卡尔积中,许多元组是没有意义的,因为一个学号只标识一个学生的姓名,一个学生只有一个性别,表2.1的一个子集才有意义,才可以表示学生关系,将学生关系取名为S,表示为S(stno,stname,stsex),列成二维表如表2.2所示。表2.2 S关系 数据库原理与应用(SQL Server)82.1.1 关系数据结构关系数据结构(1)关系的元组、属性和候选码关系是笛卡尔积的
6、有限子集,所以关系也是一个二维表。元组(Tuple)表的每一行,对应一个元组。属性(Attribute)表的每一列,对应一个域,由于域可以相同,为了加以区分,必须对每一列起一个唯一的名字,称为属性。候选码(Candidate key)若关系中某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。数据库原理与应用(SQL Server)92.1.1 关系数据结构关系数据结构候选键码中的诸属性称为为主属性(Prime attribute),不包含在任何候选码中的属性称为非主属性(Non-prime attribute)或非码属性(Non-key attribute)。在最简单的情况下,候选码只
7、包含一个属性,在最极端的情况下,关系模式的所有属性组成这个关系模式的候选码,称为全码(All-key)。主码(Primary key)在一个关系中有多个候选码,从中选定一个作为主码。(2)关系的类型关系有3种类型:基本关系(又称基本表或基表)、查询表和视图表。数据库原理与应用(SQL Server)102.1.1 关系数据结构关系数据结构 基本关系:实际存在的表,是实际存储数据的逻辑表示 查询表:查询结果对应的表 视图表:由基本表或其它视图标导出的表,是虚表,不对应实际存储的数据(3)关系的性质关系具有以下的性质:列的同质性:每一列中的分量是同一类型的数据,来自同一个域。列名唯一性:每一列具有
8、不同的属性名,但不同列的值可以来自同一个域。数据库原理与应用(SQL Server)112.1.1 关系数据结构关系数据结构 元组相异性:关系中任意两个元组的候选码不能相同。行序的无关性:行的次序可以互换。列序的无关性:列的次序可以互换。分量原子性:分量值是原子的,即每一个分量都必须是不可分的数据项。(4)规范化关系模型要求关系必须是规范化(normalization)的,规范化要求关系必须满足一定的规范条件,而在规范条件中最基本的一条是每一个分量必须是不可分的数据项。规范化的关系简称为范式(Normal Form)。数据库原理与应用(SQL Server)122.1.1 关系数据结构关系数据
9、结构例如,表2.3所示的关系就是不规范的,存在”表中有表”的现象。表2.3 非规范化关系2.关系模式关系模式在关系数据库中,关系模式是型,关系是值。关系是元组的集合,关系模式是对关系的描述,所以关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自哪些域。数据库原理与应用(SQL Server)132.1.1 关系数据结构关系数据结构定义定义2.4 关系模式(Relation Schema)可以形式化地表示为R(U,D,DOM,F)其中:R是关系名,U是组成该关系的属性名集合,D是属性所来自的域,DOM是属性向域的映象集合,F是属性间的数据依赖关系集合。关系模式通常可以简记为R(
10、U)或 R(A1,A2,An)其中,R是关系名,A1,A2,An 为属性名。关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。数据库原理与应用(SQL Server)142.1.1 关系数据结构关系数据结构在实际应用中,我们常常把关系模式和关系统称为关系。3.关系数据库在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。关系数据库的型称为关系数据库模式,是对关系数据库的描述,包括若干域的定义和在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合。数
11、据库原理与应用(SQL Server)152.1.2 关系关系操作操作1.基本的关系操作基本的关系操作关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。查询操作是关系操作最重要的部分,可分为选择(Select)、投影(Project)、连接(Join)、除(Devide)、并(Union)、差(Except)、交(Intersection)、笛卡尔积等。其中的5种基本操作是并、差、笛卡尔积,选择、投影,其它操作可由基本操作来定义和导出。关系操作的特点是集合操作方式,即操作的对象与结果都是集合。这种操作方式亦称为一次一集合(set-
12、at-a-time)方式,相应地,非关系模型的数据操作方式则为一次一记录(record-at-a-time)方式。数据库原理与应用(SQL Server)162.1.2 关系操作关系操作2.关系操作语言关系操作语言关系操作语言是数据库管理系统提供的用户接口,是用户用来操作数据库的工具,关系操作语言灵活方便,表达能力强大,可分为关系代数语言、关系演算语言和结构化查询语言三类。(1)关系代数语言用对关系的运算来表达查询要求的语言,如ISBL。(2)关系演算语言 用谓词来表达查询要求的语言,又分为元组关系演算语言和域关系演算语言,前者如ALPHA,后者QBE。数据库原理与应用(SQL Server)
13、172.1.2 关系操作关系操作(3)结构化查询语言介于关系代数和关系运算之间,具有关系代数和关系演算双重特点,如SQL。以上三种语言,在表达能力上是完全等价的。关系操作语言是一章高度非过程化语言,存取路径的选择由数据库管理系统的优化机制自动完成。数据库原理与应用(SQL Server)182.1.3 关系的完整性关系的完整性1.实体完整性实体完整性(Entity Integrity)规则规则2.1实体完整性规则实体完整性规则 若属性(一个或一组属性)A是基本关系R的主属性,则A不能取空值。空值(null value)指”不知道”或”不存在”的值。例如,在学生关系S(stno,stname,s
14、tsex)中,学号stno是这个关系的主码,则stno不能取空值。又如在选课关系选课(学号,课程号,分数)中,”学号,课程号”为主码,则”学号”和”课程号”两个属性都不能取空值。实体完整性规则说明如下:(1)实体完整性规则是针对基本关系而言。一个基本表通常对应现实世界的一个实体集。数据库原理与应用(SQL Server)192.1.3 关系的完整性关系的完整性(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。(3)相应地,关系模型中以主码作为唯一性标识。(4)主码中的属性即主属性不能取空值。2.参照完整性(Referential Integrity)在现实世界中实体之间存在的联系,在
15、关系模型中都是用关系来描述,自然存在关系与关系间的引用,参照完整性一般指多个实体之间的联系,一般用外码实现,举例如下。【例2.3】学生实体与学院实体可用以下关系表示,其中的主码用下划线标识。数据库原理与应用(SQL Server)202.1.3 关系的完整性关系的完整性学生(学号,姓名,性别,出生日期,专业,总学分,学院号)学院(学院号,学院名,院长)这两个关系存在属性的引用,学生关系引用了学院关系的主码”学院号”,学生关系”学院号”必须是确实存在的学院的学院号,即学院关系有该学院的记录。【例2.4】学生、课程、学生与课程之间的联系可用以下3个关系表示,其中的主码用下划线标识。学生(学号,姓名
16、,性别,出生日期,专业,总学分)课程(课程号,课程名,学分)选课(学号,课程号,分数)数据库原理与应用(SQL Server)212.1.3 关系的完整性关系的完整性这3个关系存在属性的引用,选课关系引用了学生关系的主码”学号”和课程关系的主码”课程号”,选课关系”学号”和”课程号”的取值需要参照学生关系的”学号”取值和课程关系的”课程号”取值。【例2.5】学生关系的内部属性之间存在引用关系,其中的主码用下划线标识。学生(学号,姓名,性别,出生日期,专业,总学分,班长学号)在该关系中,”学号”属性是主码,”班长学号”属性是所在班级班长的学号,它引用了本关系”学号”属性,即”班长学号”必须是确实
17、存在的学生学号。数据库原理与应用(SQL Server)222.1.3 关系的完整性关系的完整性定义定义2.5 设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R是的外码(Foreign Key)。并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)或目标关系(Target Relation)。关系R和S不一定是不同的关系。在例2.3中,学生关系的”学院号”与学院关系的主码”学院号”相对应,所以,”学院号”属性是学生关系的外码,学生关系是参照关系,学院关系是
18、被参照关系。在例2.4中,选课关系”学号”和学生关系的主码”学号”相对应,选课关系”课程号”和课程关系的主码”课程号”相对应,数据库原理与应用(SQL Server)232.1.3 关系的完整性关系的完整性所以,”学号”属性和”课程号”属性是选课关系的外码,选课关系是参照关系,学生关系和课程关系都是被参照关系。在例2.5中,”班长学号”属性与本身的主码”学号”属性相对应,所以,”班长学号”属性是学生关系的外码,学生关系既是参照关系,也是被参照关系。外码不一定要与相应的主码同名,在例2.5中,学生关系的主码名是”学号”,外码名是”班长学号”。但在实际应用中,为了便于识别,当外码与相应的主码属于不
19、同的关系时,往往取相同的名字。参照完整性规则就是定义外码与主码之间的引用规则。数据库原理与应用(SQL Server)242.1.3 关系的完整性关系的完整性规则规则2.2 参照完整性规则参照完整性规则 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为 或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。在例2.3中,学生关系每个元组的”学院号”属性只能取下面两类值:(1)空值,表示尚未给该学生分配学院;(2)非空值,被参照关系”学院号”中一定存在一个元组,它的主码值等于该参照关系”学
20、院号”中的外码值。数据库原理与应用(SQL Server)252.1.3 关系的完整性关系的完整性3.用户定义完整性用户定义完整性(User-defined Integrity)用户定义的完整性是针对某一具体关系数据库的约束条件,使某一具体应用涉及数据必须满足语义要求。用户定义的完整性数据也称为域完整性或语义完整性,通过这些规则限制数据库只接受符合完整性约束条件的数据值,不接受违反约束条件的数据,从而保证数据库的中数据的有效性和可靠性。按应用语义,属性数据有:(1)类型与长度限制。(2)取值范围限制。例如,学生关系中”性别”数据只能是男或女,选课关系中”成绩”数据为1到100之间,等等。数据库
21、原理与应用(SQL Server)262.2 关系代数关系代数关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。关系代数是施加于关系上的一组集合代数运算,关系代数的运算对象是关系,运算结果也是关系。关系代数中的操作可以分为两类:(1)传统的集合运算,如并、交、差、笛卡儿积。这类运算将关系看成元组的集合,运算时从行的角度进行。(2)专门的关系运算,如选择、投影、连接、除。这些运算不仅涉及行而且也涉及到列。关系代数使用的运算符:(1)传统的集合操作:U(并)、(差)、(交)、(笛卡儿积)。数据库原理与应用(SQL Server)272.2 关系代数关系代数(2)专门的关系操作:(选择)、(
22、投影)、(连接)、(除)。(3)比较运算符:(大于)、(大于等于)、(小于)、(小于等于)、(等于)、(不等于)。(4)逻辑运算符:(与)、(或)、(非)。数据库原理与应用(SQL Server)282.2.1 传统的集合运算传统的集合运算传统的集合运算有并、差、交和笛卡尔积运算,它们都是二目运算。设关系R和关系S具有相同的n目(即两个关系都有n个属性),且相应的属性取自同一个域,t是元组变量,tR表示t是R的一个元组。以下定义并、差、交和笛卡尔积运算。1.并并(Union)关系R和关系S的并记为 ,即其结果仍为n目关系,由属于R或属于S的元组组成。数据库原理与应用(SQL Server)RS
23、|RSt tRts URS292.2.1 传统的集合运算传统的集合运算2.差差(Except)关系R和关系S的差记为 ,即其结果仍为n目关系,由属于R且不属于S的所有元组组成。3.交交(Intersection)关系R和关系S的交为 ,即 数据库原理与应用(SQL Server)RS|RSt tRts|RSt tRts I关系R和关系S的差记为RS 302.2.1 传统的集合运算传统的集合运算结果仍为n目关系,由既属于R又属于S的元组组成。关系的交可用差来表示,即4.笛卡尔积笛卡尔积(Cartesian Product)这里的笛卡尔积是广义笛卡尔积,因为笛卡尔积的元素是元组。设n目和m目的关系
24、R和S,它们的笛卡儿积是一个(n+m)目的元组集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有r个元组,S有s个元组,则关系R和关系S的笛卡儿积应当有rs个元组,记为RS,即 数据库原理与应用(SQL Server)()RSRRSI312.2.1 传统的集合运算传统的集合运算【例2.6】有2个关系R、S,如图2.1所示,求以下各传统的集合运算的结果。(1)(2)(3)(4)RS 数据库原理与应用(SQL Server)|rrssRSt ttRtSRSRS322.2.1 传统的集合运算传统的集合运算 图2.1 2个关系R、S解:(1)由属于R和属于S的所有不重复的元组组成。
25、(2)由属于R且不属于S的所有元组组成。(3)由既属于R又属于S的元组组成。(4)RS 为R和S的笛卡儿积,共有33=9个元组传统的集合运算结果如图2.2所示。数据库原理与应用(SQL Server)RSRS332.2.1 传统的集合运算传统的集合运算 图2.2 传统的集合运算结果 数据库原理与应用(SQL Server)342.2.2 专门的关系运算专门的关系运算专门的关系运算有选择、投影、连接和除等运算。在介绍专门的关系运算前,引入以下符号。(1)分量设关系模式为 ,它的一个关系设为R,表示t 是R 的一个元组,则 表示元组t 中属性Ai 上的一个分量。(2)属性组若 ,其中 是 中的一部
26、分,则 称A为属性组或属性列。表示元组t 在属性列A 上诸分量的集合。则表示 中去掉 后剩余的属性组。数据库原理与应用(SQL Server)12(,.,)nR A AA12,.,iiikAAAA12,.,iiikAAA12,.,nA AA12 ,.,iiikt At At At AA12,.,nA AA12,.,iiikAAA352.2.2 专门的关系运算专门的关系运算(3)元组的连接R 为 n目关系,S 为 m目关系,称为元组的连接(Concatenation)或元组的连接。(4)象集给定一个关系 ,Z和X为属性组,当时,x在R中的象集(Images Set)定义为 表示 中属性组 上值为
27、 的诸元组在 上分量的集合。数据库原理与应用(SQL Server)362.2.2 专门的关系运算专门的关系运算【例2.7】在关系R 中,Z和X 为属性组,X包含属性x1,x2,包含属性z1,z2,如图2.3所示,求X 在 R中的象集。图2.3 象集举例 数据库原理与应用(SQL Server)372.2.2 专门的关系运算专门的关系运算解:在关系 R中,X可取值 的象集为 的象集为 的象集为1.选择选择(Selection)在关系R中选出满足给定条件的诸元组称为选择,选择是从行的角度进行的运算,表示为 =t|tRF(t)=真其中F是一个逻辑表达式,表示选择条件,取逻辑值”真”或”假”,t表示
28、R中的元组,F(t)表示R中满足F条件的元组。数据库原理与应用(SQL Server)382.2.2 专门的关系运算专门的关系运算逻辑表达式F的基本形式是其中 由比较运算符(、)和逻辑运算符(、)组成,等是属性名、常量或简单函数,属性名也可用它的序号来代替。2.投影(Projection)在关系R中选出若干属性列组成新的关系称为投影,投影是从列的角度进行的运算,表示为其中 A为R的属性列。数据库原理与应用(SQL Server)()|ARt A tR392.2.2 专门的关系运算专门的关系运算【例2.8】关系R如图2.4所示,求以下选择和投影运算的结果。(1)(2)解:(1)由R的C属性值为8
29、的元组组成。(2)由R的A、B属性列组成。数据库原理与应用(SQL Server)402.2.2 专门的关系运算专门的关系运算选择和投影运算结果如图2.5所示。3.连接(Join)连接也称为连接,它是从两个关系R和S的笛卡尔积中选取属性值满足一定条件的元组,记作R S 数据库原理与应用(SQL Server)|rrsrsst ttRtStA t B412.2.2 专门的关系运算专门的关系运算其中A和B分别为R和S上度数相等且可比的属性组,为比较运算符,连接运算从R和S的笛卡尔积RS中选取R关系在A属性组上的值和S关系在B属性组上的值满足比较运算符的元组。下面介绍几种常用的连接。(1)等值连接(
30、Equijoin)为等号”=”的连接运算称为“等值连接”,记作R S等值连接从R和S的笛卡尔积RS中选取A B属性值相等的元组 数据库原理与应用(SQL Server)|rrsrsst ttRtSt At B422.2.2 专门的关系运算专门的关系运算(2)自然连接(Natural join)自然连接是除去重复属性的等值连接,记作R S等值连接与自然连接的区别如下:自然连接一定是等值连接,但等值连接不一定是自然连接。因为自然连接要求相等的分量必须是公共属性,而等值连接相等的分量不一定是公共属性。等值连接不把重复的属性去掉,而自然连接要把重复属性去掉。一般连接是从行的角度进行计算,而自然连接要取
31、消重复列,它同时从行和列的角度进行计算。数据库原理与应用(SQL Server)|rrsrsst ttRtStAt B432.2.2 专门的关系运算专门的关系运算(3)外连接(Outer join)两个关系R和S在做自然连接时,关系R中某些元组可能在S中不存在公共属性上值相等的元组,造成R中这些元组被舍弃,同样,S中某些元组也可能被舍弃。如果把舍弃的元组保存在结果关系中,而在其它属性上填空值(Null),这种连接称为全外连接(Full Outer Join),符号为R S.如果只把左边关系R中舍弃的元组保留,这种连接称为左外连接(Left Outer join 或Left join),符号为R
32、 S.如果只把右边关系S中舍弃的元组保留,这种连接称为右外连接(Right Outer join 或Right join),符号为R S.数据库原理与应用(SQL Server)442.2.2 专门的关系运算专门的关系运算【例2.9】关系R、S如图2.6所示,求以下各个连接运算的结果。(1)R S(2)R S(3)R S(4)R S(5)R S(6)R S 数据库原理与应用(SQL Server)452.2.2 专门的关系运算专门的关系运算 图2.6 关系R、S解:解:(1)R S 该连接由R的C属性值大于S的D属性值的元组连接组成。数据库原理与应用(SQL Server)462.2.2 专门
33、的关系运算专门的关系运算(2)R S该等值连接由R的B属性值等于S的B属性值的元组连接组成(3)R S 该自然连接由R的B属性值等于S的B属性值的元组连接组成,并去掉重复列。(4)R S 该左外连接取出左边关系R中舍弃的所有元组,用空值填充右边关系S中的属性,再把产生的元组添加到自然连接结果中。(5)R S 该右外连接取出右边关系S中舍弃的所有元组,用空值填充左边关系R中的属性,再把产生的元组添加到自然连接结果中。数据库原理与应用(SQL Server)472.2.2 专门的关系运算专门的关系运算(6)R S该全外连接既做左外连接又做右外连接,并把产生的元组添加到自然连接结果中。各个连接运算的
34、结果如图2.7所示。数据库原理与应用(SQL Server)482.2.2 专门的关系运算专门的关系运算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上投影的集合。记作 RS=tr X|trR Y(S)Yx其中的Yx为x在R中的象集,x=trX。除运算是同时从行和列的角度进行的运算。数据库原理与应用(SQL Server)492.2.2 专门的关系运算专门的关系运算【例
35、2.10】关系R,S如图2.8所示,求RS。解:在关系 中,A可取值a,b,ca的象集为 数据库原理与应用(SQL Server)502.2.2 专门的关系运算专门的关系运算b的象集为c的象集为S在 上的投影为可以看出,只有a的象集 包含了S在 上的投影,所以RS=a如图2.9所示。数据库原理与应用(SQL Server)512.2.2 专门的关系运算专门的关系运算【例2.11】设有如图2.10所示的学生课程数据库,包括学生关系S(Sno,Sname,Sex,Age,Speciality),各属性含义为学号、姓名、性别、年龄、专业;课程关系C(Cno,Cname,Teacher),各属性含义为
36、课程号、课程名、教师;选课关系SC(Sno,Cno,Grade),各属性含义为学号、课程号、成绩;试用关系代数表示下列查询语句,并给出(1)、(5)、(10)的查询结果。(1)查询”电子信息工程”专业学生的学号和姓名。(2)查询年龄小于22岁的女学生学号、姓名和年龄。(3)查询选修了”1001”号课程的学号、姓名。(4)查询选修了”1001”号课程或”2004”号课程的学号。数据库原理与应用(SQL Server)522.2.2 专门的关系运算专门的关系运算(5)查询未选修”1001”课程的学号、姓名。(6)查询选修课程名为”数据库原理与应用”的学号和姓名。(7)查询选修”郭亚平”老师所授课程
37、的学生姓名。(8)查询”刘德川”未选修课程的课程号。(9)查询”李莎”的”英语”成绩。(10)查询选修了全部课程的学号和姓名。数据库原理与应用(SQL Server)532.2.2 专门的关系运算专门的关系运算 数据库原理与应用(SQL Server)542.2.2 专门的关系运算专门的关系运算解:解:(1)查询结果如图2.11所示。数据库原理与应用(SQL Server)552.2.2 专门的关系运算专门的关系运算(2)(3)S)(4)(5)S)查询结果如图2.12所示。数据库原理与应用(SQL Server)Sno,Sname,SexAgeu5,表示元组的t第4个分量大于元组u的第5个分量
38、。数据库原理与应用(SQL Server)()t|()t R t602.3.1 元组关系演算元组关系演算(3)t ic或cti这里c是一个常量,该原子公式表示命题”元组t的第i个分量与常量a之间满足关系”,例如,t2=6,表示元组的t第2个分量等于6。在公式中各种运算符的优先级从高到低依次为:算术运算符、量词(、)、逻辑运算符(、)。其中,为存在量词符号,为全称量词符号。若元组演算公式中的一个元组变量前有存在量词()和全称量词(),则称该变量为约束元组变量,否则称自由元组变量。关系代数的5种基本运算可以用元组演算表达式表示如下。数据库原理与应用(SQL Server)612.3.1 元组关系演
39、算元组关系演算(1)并RS=t|R(t)S(t)。(2)差R-S=t|R(t)S(t)。(3)笛卡尔积RS=t(r+s)|(u(r)(v(s)(R(u)S(v)t1=u1tr=urtr+1=v1tr+s=vs)其中t(r+s)表示t有r+s个属性。(4)投影i1,ik(R)=t(k)|(u)(R(u)t1=ui1tk=uik)。数据库原理与应用(SQL Server)622.3.1 元组关系演算元组关系演算(5)选择 =t|R(t)F其中F是F的等价表示形式。上面定义的关系演算允许出现无限关系,例如,表示所有不属于R的元组,有无限多个,必须排除这类无意义的表达式。为此引入元组关系公式 的域,即
40、 。是所引用的所有值的集合,通常要进行安全限制,定义 是一个有限符号集。数据库原理与应用(SQL Server)|()tR t()dom()dom()dom632.3.1 元组关系演算元组关系演算【例2.12】有两个关系R和S,如图2.14所示,求以下元组关系演算结果:R1=t|R(t)S(t)R2=t|(u)(S(t)R(u)t2 u3)R3=t|(u)(R(t)S(u)t1 4z10 数据库原理与应用(SQL Server)702.3.2 域关系演算域关系演算(2)R2=xyz|R(xyz)S(xyz)z=8(3)R3=xyz|(u)(v)(R(zxu)W(yv)uv解解:(1)R1由R中
41、第2列大于4、第3列小于10的元组组成。(2)R2由R中第2列、大等于8的元组组成 数据库原理与应用(SQL Server)712.3.2 域关系演算域关系演算(3)R3由R中第2列、W中第1列、R中第1列组成,这些元组满足条件:R中第3列小于W中第2列。域关系演算结果如图3.17所示。【例2.15】设R和S分别是三元和二元关系,试把表达式:数据库原理与应用(SQL Server)722.3.2 域关系演算域关系演算转换成等价的:(1)中文查询句子。(2)元组关系演算表达式。(3)域关系演算表达式。解:解:(1)中文查询含义为:从R与S的笛卡尔积中选择R的第2列与S的第1列相等或者R的第3列与
42、S的第1列相等的元组,并投影R的第1列和S的第2列。(2)元组关系演算表达式为t(2)|(u)(v)(R(u)S(v)t1=u1t2=v2(u2=v1u3=v1)。(3)域关系演算表达式为xv|(x)(u)(R(xyz)S(uv)(y=uz=u)数据库原理与应用(SQL Server)732.4 SQL简介简介2.4.1 SQL语言分类语言分类通常将SQL语言分为以下4类。(1)数据定义语言(Data Definition Language,DDL)用于定义数据库对象,对数据库、数据库中的表、视图、索引等数据库对象进行建立和删除,DDL包括CREATE、ALTER、DROP等语句。(2)数据操
43、纵语言(Data Manipulation Language,DML)用于对数据库中的数据进行插入、修改、删除等操作,DML包括INSERT、UPDATE、DELETE等语句。数据库原理与应用(SQL Server)742.4.1 SQL语言分类语言分类(3)数据查询语言(Data Query Language,DQL)用于对数据库中的数据进行查询操作,例如用 SELECT语句进行查询操作。(4)数据控制语言(Data Control Language,DCL)用于控制用户对数据库的操作权限,DCL包括GRANT、REVOKE等语句。数据库原理与应用(SQL Server)752.4.2 SQ
44、L语言的特点语言的特点SQL语言具有高度非过程化、应用于数据库的语言、面向集合的操作方式、既是自含式语言又是嵌入式语言、综合统一、语言简洁和易学易用等特点。(1)高度非过程化SQL语言是非过程化语言,进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需说明具体处理过程和存取路径,处理过程和存取路径由系统自动完成。(2)应用于数据库的语言SQL语言本身不能独立于数据库而存在,它是应用于数据库和表的语言,使用SQL语言,应熟悉数据库中的表结构和样本数据。数据库原理与应用(SQL Server)762.4.2 SQL语言的特点语言的特点(3)面向集合的操作方式SQL语言采用集合操作方式,
45、不仅操作对象、查找结果可以是记录的集合,而且一次插入、删除、更新操作的对象也可以是记录的集合。(4)既是自含式语言、又是嵌入式语言SQL语言作为自含式语言,它能够用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C,C+,Java)程序中,供程序员设计程序时使用。在两种不同的使用方式下,SQL语言的语法结构基本上是一致的,提供了极大的灵活性与方便性。数据库原理与应用(SQL Server)772.4.2 SQL语言的特点语言的特点(5)综合统一SQL语言集数据查询(Data Query)、数据操纵(Data Man
46、ipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体。(6)语言简洁,易学易用SQL语言接近英语口语,易学使用,功能很强,由于设计巧妙,语言简洁,完成核心功能只用了9个动词,如表2.4所示。表2.4 SQL语言的动词 数据库原理与应用(SQL Server)782.4.3 SQL语言的发展历程语言的发展历程SQL是1986年10月由美国国家标准局(ANSI)通过的数据库语言美国标准。1987年,国际标准化组织(ISO)颁布了SQL正式国际标准。1989年4月,ISO提出了具有完整性特征的SQL89标准。1992年11月又公布了SQL9
47、2标准。SQL发展历程简介如下。1970年:E.F.Codd 发表了关系数据库理论。1974年1979年:IBM以Codd的理论为基础开发了“Sequel”,并重命名为“结构化查询语言”。1979年:Oracle发布了商业版SQL。数据库原理与应用(SQL Server)792.4.3 SQL语言的发展历程语言的发展历程1981年1984年:出现了其他商业版本,分别来自IBM(DB2),Data General,Relational Technology(INGRES)。1986年:SQL 86,ANSI和ISO的第一个标准SQL。1989年:SQL89,发布了具有完整性特征的SQL。1992年:SQL92,受到数据库管理系统生产商广泛支持。2003年:SQL 2003,包含了XML相关内容,自动生成列值等。2006年:SQL2006,定义了结构化查询语言与XML(包含XQuery)的关联应用。数据库原理与应用(SQL Server)