数据库关系代数幻灯片.ppt
数据库关系代数第1页,共62页,编辑于2022年,星期六关系代数n关系代数语言n用传统的集合运算和专门的关系运算来表达查询的抽象语言n关系代数运算符n关系代数表达式n关系代数中有限次运算复合后形成的式子运算符运算符含义含义运算符运算符含义含义集合集合运算符运算符并差交广义笛卡尔积比较比较运算符运算符=大于大于等于小于小于等于等于不等于专门的专门的关系关系运算符运算符选择投影连接除逻辑逻辑运算符运算符非与或第2页,共62页,编辑于2022年,星期六表示记号nR,tR,tAi,A,tA,An设关系模式为R(A1,A2,An),它的一个关系设为RntR表示t是R的一个元组ntAi则表示元组t中相应于属性Ai的一个分量n若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,则A称为属性列或域列ntA=(tAi1,tAi2,tAik)表示元组t在属性列A上诸分量的集合nA 则表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的属性组第3页,共62页,编辑于2022年,星期六传统的集合运算n若R和S是同类关系(即它们都具有n个属性且相应属性取自同一个域),则可进行并、差、交运算。并、差、交运算。对两者进行集合运算之前,要对两者的属性列进行排序,保证两个关系的属性顺序相同。由属于R或属于S的元组组成由属于R而不属于S的元组组成由既属于R又属于S的元组组成第4页,共62页,编辑于2022年,星期六表示记号ntr tsnR为n目关系,S为m目关系ntr R,tsS,tr ts称为元组的连接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组第5页,共62页,编辑于2022年,星期六传统的集合运算n广义笛卡尔积广义笛卡尔积nR X S,其关系模式是R和S的模式的并集,是R和S的元组以所有可能的方式组合起来。当R和S有同名的属性,至少要为其中一个属性重新命名。数学描述数学描述:若关系R有k1个元组n个属性,关系S有k2个元组m个属性,则两个关系的广义笛卡尔积有k1*k2个元组n+m个属性(前n个属性来自于R,后m个属性来自于S)第6页,共62页,编辑于2022年,星期六R S SA B Ca1 b1 c1a1 b2 c2a2 b2 c1a1 b3 c2R R S SA B Ca1 b2 c2a2 b2 c1R-SR-SA B Ca1 b1 c1R R S S A B C A B C a1 b1 c1 a1 b2 c2 a1 b1 c1 a1 b3 c2 a1 b1 c1 a2 b2 c1 a1 b2 c2 a1 b2 c2 a1 b2 c2 a1 b3 c2 a1 b2 c2 a2 b2 c1 a2 b2 c1 a1 b2 c2 a2 b2 c1 a1 b3 c2 a2 b2 c1 a2 b2 c1a1 b1 c1a1 b2 c2a1 b2 c2a2 b2 c1Ra1 b2 c2a1 b2 c2a1 b3 c2a2 b2 c1S S第7页,共62页,编辑于2022年,星期六例:包括例:包括Student,Course,三个关系,三个关系 Student(Sno,Sname,Sex,Sage,Sdept)Course(Cno,Cname,Cpno,Ccredit)SC(Sno,Cno,Grade)用此例讲解专门的关系运算例子:例子:学生学生课程数据库课程数据库第8页,共62页,编辑于2022年,星期六例:学生例:学生课程数据库,包括课程数据库,包括Student,Course,SC三个关系三个关系 Sno Sname Ssex Sage Sdept95001 李勇 男 20 CS95002 刘晨 女 19 IS95003 王敏 女 18 MA95004 张立 男 19 IS StudentCno Cname Cpqo Ccredit1 数据库 5 42数学 23信息系统 1 44 操作系统 6 35 数据结构 7 4 6 数据处理 27 Pascal语言 6 4Course Sno Cno Grade95001 1 9295001 2 8595001 3 8895002 2 9095002 3 80SC第9页,共62页,编辑于2022年,星期六专门的关系运算:选择n记号:tR表示t是R的一个元组n选择选择n从关系R中选取使逻辑表达式F为真的元组,行选。记作n逻辑表达式F由逻辑运算符连接算术表达式,算术表达式基本形式为X1 Y1 其中表示比较运算符,X1,Y1是属性名或常量或简单函数,属性名可以用它的序号来代替第10页,共62页,编辑于2022年,星期六查询信息系全体学生:查询信息系全体学生:Sdept=IS(Student)或或 =IS(Student)查询年龄小于查询年龄小于20岁的学生:岁的学生:Sage (Student)或或 (Student)结果如下:结果如下:Sno Sname Ssex Sage Sdept95002 刘晨女 19 IS95004 张立男 19 ISSno Sname Ssex Sage Sdept95002 刘晨女 19 IS95003 王敏女 18 MA95004 张立男 19 IS1)选择运算例)选择运算例第11页,共62页,编辑于2022年,星期六关系代数:投影n定义:从关系R中选择出满足条件F的若干属性列并组成新的关系,列选 其中 表示元组t中相应于属性Ai的一个分量。注意:运算结果要去掉重复元组。第12页,共62页,编辑于2022年,星期六2)投影运算例)投影运算例查询学生的姓名和所在系:查询学生的姓名和所在系:Sname,SdeptSname,Sdept(Student)(Student)或或 2,52,5(Student)(Student)查询学生关系中有哪些系:查询学生关系中有哪些系:SdeptSdept(Student)(Student)或或 5 5(Student)(Student)结果如下:结果如下:Sname Sdept 李勇 CS 刘晨 IS 王敏 MA 张立 IS Sdept CS IS MA第13页,共62页,编辑于2022年,星期六关系代数:连接n连接连接n从关系R和S的笛卡尔积中选取属性间满足条件的元组n其中A和B分别是关系R和S上可比的属性组,是比较运算符n等值连接等值连接n从关系R和S的笛卡尔积中选取A,B属性值相等的元组n自然连接自然连接n特殊的等值连接,R和S具有相同的属性组B,在结果中去掉重复的属性列第14页,共62页,编辑于2022年,星期六连接n连连接接(包包含含等等值值连连接接):先将R和S做笛卡积,然后从RS的元组中选择满足条件C的元组集合。n自自然然连连接接:假设A1、A2、An是R和S的模式中的公共属性,那么如果R的元组r和S的元组s在这些属性上取值都相同,r和s组合而成的元组就归入该自然连接中。n一般的连接操作是从行的角度进行运算,自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。ABRS第15页,共62页,编辑于2022年,星期六3)连接运算例连接运算例设有如图的关系和关系设有如图的关系和关系A B Ca1 b1 5a1 b2 6a2 b3 8a2 b4 12RB E b1 3 b2 7 b3 10 b3 2 b5 2S 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 10R CE S 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等值连接 a1 b1 5 3 a1 b2 6 7 a2 b3 8 10 a2 b3 8 2自然连接R R.B=S.B SR S第16页,共62页,编辑于2022年,星期六表示记号:象集Zxn给定一个关系R(X,Z),X和Z为属性组当tX=x时,x在R中的象集(Images Set)为:Zx=tZ|t R,tX=x 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中属性组中属性组X上值为上值为x的诸的诸元组在元组在Z上分量的集合。上分量的集合。例子:a1的象集为的象集为(b1,c2),(b2,c3),(b2,c1)第17页,共62页,编辑于2022年,星期六关系代数:除n除除nR与S 的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:n关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组(R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集)n元组在X上分量值x的象集Yx包含S在Y上的投影第18页,共62页,编辑于2022年,星期六除n除操作是同时从行和列角度进行运算RS第19页,共62页,编辑于2022年,星期六4)除运算例除运算例设有如图的关系和设有如图的关系和 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 A a1则则 结果如下结果如下a1的象集为的象集为(b1,c2),(b2,c3),(b2,c1)a2的象集为的象集为(b3,c7),(b2,c3)a3的象集为的象集为(b4,c6)a4的象集为的象集为(b6,c6)在(,)上的投影为在(,)上的投影为(b1,c2),(b2,c1),(b2,c3)因只有因只有a1的象集包含了在(,)属的象集包含了在(,)属性组上的投影,故性组上的投影,故 a1第20页,共62页,编辑于2022年,星期六设有关系R、S 如图所示,求RS 的结果第21页,共62页,编辑于2022年,星期六找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);第二步:被除关系R中与S中不相同的属性列是X,关系R在属性(X)上做取消重复值的投影为X1,X2;第三步:求关系R中X属性对应的像集Y 根据关系R的记录,可以得到与X1值有关的记录,如图3所示;与X2有关的记录,如图4所示第22页,共62页,编辑于2022年,星期六第四步:判断包含关系RS其实就是判断关系R中X各个值的像集Y是否包含关系S中属性Y的所有值。对比即可发现:X1的像集只有Y1,不能包含关系S中属性Y的所有值,所以排除掉X1;而X2的像集包含了关系S中属性Y的所有值,所以RS的最终结果就是X2,第23页,共62页,编辑于2022年,星期六关系代数:综合应用1)在以上S-C数据库中,查询选修了1号课程的学生号码2)在以上S-C数据库中,查询选修了1号课程或3号课程的学生号码Sno(Cno=1(SC)Sno(Cno=1 v Cno=3(SC)Sno(Cno=1(SC)U Sno(Cno=1(SC)第24页,共62页,编辑于2022年,星期六2)查询选修了号课程的学生的学号解:Sno(Cno=2(SC))3)查询至少选修了一门其直接先行课为号课程的学生姓名解:Sname(Cpno=5(Course)SC Sno,Sname(Student))关系代数:综合应用第25页,共62页,编辑于2022年,星期六关系数据库语言关系数据库语言SQLSQL要求:查询命令,操作命令 第26页,共62页,编辑于2022年,星期六 SQL是是结结结结 构构构构 化化化化 查查查查 询询询询 语语语语 言言言言(Structured Query Language)的的缩缩写写,美美国国国国家家标标准准局局ANSIANSI在在19861986年年将将SQLSQL作作为为关关系系数数据据库库系系统统的的标标准准语语言言,后后被被国国际际标标准准化化组组织织(ISOISO)采采纳纳为为国国际际标标准准。现现在在很很多多大大型型数数据据库库都都实实现现了了SQLSQL语言。语言。SQLSQL概述概述第27页,共62页,编辑于2022年,星期六SQLSQL和和SQL SERVERSQL SERVER的区别的区别SQLSQL(structured query language)structured query language)结构化查询语言。结构化查询语言。它是一种标准,不是一种软件它是一种标准,不是一种软件SQL SERVERSQL SERVER是数据库管理系统的一种是数据库管理系统的一种它是一种软件,这种软件在遵循它是一种软件,这种软件在遵循SQLSQL这种标准,这种标准,很多数据库管理软件及开发工具都支持很多数据库管理软件及开发工具都支持SQLSQL这种这种标准。标准。第28页,共62页,编辑于2022年,星期六SQLSQL语言的特点语言的特点SQLSQL语言的特点语言的特点n1.综合统一综合统一n2.高度非过程化高度非过程化n3.面向集合的操作方式面向集合的操作方式n4.以同一种语法结构提供两种使用方法以同一种语法结构提供两种使用方法n5.语言简洁,易学易用语言简洁,易学易用第29页,共62页,编辑于2022年,星期六SQLSQL语句的书写准则语句的书写准则n n对大小写不敏感对大小写不敏感对大小写不敏感对大小写不敏感n一条语句可以写成一行或多行一条语句可以写成一行或多行n n关键字不能在行与行之间分开关键字不能在行与行之间分开关键字不能在行与行之间分开关键字不能在行与行之间分开n n数据项例如属性项、表、视图项等同时列出时,分数据项例如属性项、表、视图项等同时列出时,分数据项例如属性项、表、视图项等同时列出时,分数据项例如属性项、表、视图项等同时列出时,分隔符用逗号;字符或字符串常量要用单引号定界。隔符用逗号;字符或字符串常量要用单引号定界。隔符用逗号;字符或字符串常量要用单引号定界。隔符用逗号;字符或字符串常量要用单引号定界。第30页,共62页,编辑于2022年,星期六SQLSQL的的的的核核核核心心心心是是是是数数数数据据据据查查查查询询询询。对对对对于于于于数数数数据据据据库库库库的的的的查查查查询询询询操操操操作作作作是是是是通通通通过过过过 SELECT SELECT 查询命令实现的,它的基本形式由查询命令实现的,它的基本形式由查询命令实现的,它的基本形式由查询命令实现的,它的基本形式由 SELECTSELECTFROMFROMWHEREWHERE 查询块组成,多个查询块可以嵌套执行。查询块组成,多个查询块可以嵌套执行。第31页,共62页,编辑于2022年,星期六1、SELECT 查询语句和条件语句查询语句和条件语句SELECT 查询字段查询字段 FROM 表名表名 WHERE 条件条件 查询字段:查询字段:可以使用通配符可以使用通配符*、字段名、字段别名、字段名、字段别名表名:表名:数据库数据库.表名表名,表名,表名常用条件:常用条件:=等于等于、不等于、不等于、in 包含包含、not in 不包含、不包含、like 匹配匹配 BETWEEN 在范围在范围 、not BETWEEN 不在范围不在范围 条件运算:条件运算:and、or、()第32页,共62页,编辑于2022年,星期六n语句格式语句格式SELECT ALL|DISTINCT ,FROM,WHERE GROUP BY HAVING ORDER BY ASC|DESC ;指定要显示的属性列指定要显示的属性列指定要显示的属性列指定要显示的属性列指定查询对象指定查询对象指定查询对象指定查询对象指定查询条件指定查询条件指定查询条件指定查询条件查询结果按指定列查询结果按指定列查询结果按指定列查询结果按指定列的值分组的值分组的值分组的值分组筛选出只有满足筛选出只有满足指定条件的组指定条件的组对查询结果表按指列值的升对查询结果表按指列值的升对查询结果表按指列值的升对查询结果表按指列值的升序或降序排序序或降序排序序或降序排序序或降序排序 第33页,共62页,编辑于2022年,星期六查询工作的关键就在查询工作的关键就在通过分析怎样把实际问题中的自然通过分析怎样把实际问题中的自然语言描述转化为语言描述转化为1 1)从哪个表中查询)从哪个表中查询 即:即:from from 后的一项后的一项2 2)要查询哪些列)要查询哪些列 即:即:select select 后的一项后的一项3)3)要查询的条件要查询的条件 即:即:where where 后的一项后的一项完成查询工作的三个关键步骤 第3步最复杂第34页,共62页,编辑于2022年,星期六1 1、表达式比较表达式比较例如:查询全体学生的学号和姓名例如:查询全体学生的学号和姓名例如:查询全体学生的学号和姓名例如:查询全体学生的学号和姓名SELECT SnoSELECT Sno,SnameSnameFROM StudentFROM Student查询全体学生的详细记录查询全体学生的详细记录查询全体学生的详细记录查询全体学生的详细记录SELECT *SELECT *FROM StudentFROM Student 第35页,共62页,编辑于2022年,星期六查询所有年龄在查询所有年龄在20岁以下的学生的姓名和岁以下的学生的姓名和年龄年龄SELECT Sname,SageFROM StudentWHERE Sage20;第36页,共62页,编辑于2022年,星期六2.确定范围:BETWEEN.AND.NOT BETWEEN.AND.查询年龄在20到23岁之间的学生的姓名和年龄。SELECT Sname,SageFROM StudentWHERE Sage BETWEEN 20 AND 23;第37页,共62页,编辑于2022年,星期六3.确定集合确定集合 IN查询信息系(查询信息系(查询信息系(查询信息系(ISISISIS)和数学系()和数学系()和数学系()和数学系(MAMAMAMA)的学生的姓名和性别)的学生的姓名和性别)的学生的姓名和性别)的学生的姓名和性别SELECT SnameSELECT Sname,SsexSsexFROM StudentFROM StudentFROM StudentFROM StudentWHERE Sdept WHERE Sdept WHERE Sdept WHERE Sdept IN(IN(IN(IN(ISISISIS,MAMAMAMA)当与指定的值表中的任何一个匹配时,当与指定的值表中的任何一个匹配时,当与指定的值表中的任何一个匹配时,当与指定的值表中的任何一个匹配时,返回返回返回返回TRUETRUETRUETRUE,否则返回,否则返回,否则返回,否则返回FALSEFALSEFALSEFALSE 第38页,共62页,编辑于2022年,星期六4、字符匹配、字符匹配用用NOT LIKENOT LIKE 和和 LIKELIKE与通配符与通配符与通配符与通配符%和和和和_ _搭配搭配表示任意长度表示任意长度表示任意长度表示任意长度的字符串的字符串的字符串的字符串表示任意单个表示任意单个表示任意单个表示任意单个字符字符字符字符例如:查询所有姓刘的学生的姓名和学号例如:查询所有姓刘的学生的姓名和学号SELECT SnameSELECT Sname,SnoSnoFROM StudentFROM StudentWHERE Sname LIKE WHERE Sname LIKE WHERE Sname LIKE WHERE Sname LIKE 刘刘%2 2、SELECT*FROM mingdan WHERE SELECT*FROM mingdan WHERE 姓名姓名 LIKE LIKE _红红 第39页,共62页,编辑于2022年,星期六5 5、涉及空值的查询、涉及空值的查询、涉及空值的查询、涉及空值的查询 查询缺少成绩的学生学号和相应课程号查询缺少成绩的学生学号和相应课程号 SELECT Sno SELECT Sno,CnoCno FROM SC FROM SC FROM SC FROM SC WHERE Grade WHERE Grade WHERE Grade WHERE Grade IS NULLIS NULL第40页,共62页,编辑于2022年,星期六6、多重条件查询、多重条件查询 (AND OR)例如:查询计算机系年龄在例如:查询计算机系年龄在20岁以下的学岁以下的学生姓名生姓名SELECT Sname FROM Student WHERE Sdept=CS AND Sage20;第41页,共62页,编辑于2022年,星期六一般格式:一般格式:一般格式:一般格式:SELECT SELECT 列名列名1 1,列名,列名2 2,FROM FROM 表名表名WHERE WHERE 条件表达式条件表达式ORDER BYORDER BY 列名列名1 ASC|DESC 1 ASC|DESC,列名,列名2ASC|DESC2ASC|DESC 升序(默认)升序(默认)升序(默认)升序(默认)降序降序降序降序对查询结果排序第42页,共62页,编辑于2022年,星期六查询选修了查询选修了3号课程的学生学号及成绩,查询结果按分数的降序号课程的学生学号及成绩,查询结果按分数的降序排列。排列。SELECT Sno,GradeFROM SCWHERE Cno=3 ORDER BYORDER BY Grade DESC Grade DESC第43页,共62页,编辑于2022年,星期六注意:注意:注意:注意:(1 1 1 1)ORDER ORDER ORDER ORDER BYBYBYBY子子子子句句句句不不不不改改改改变变变变基基基基本本本本表表表表中中中中行行行行或或或或者者者者列列列列的的的的顺顺顺顺序序序序,只只只只改改改改变变变变查查查查询询询询结结结结果的排列顺序。果的排列顺序。果的排列顺序。果的排列顺序。(2 2 2 2)ORDER ORDER ORDER ORDER BYBYBYBY子子子子句句句句制制制制定定定定排排排排序序序序的的的的列列列列必必必必须须须须出出出出现现现现在在在在SELECTSELECTSELECTSELECT子子子子句句句句的的的的列列列列表表表表达达达达式式式式中。中。中。中。(3 3 3 3)排序是查询语句的最后一步工作,所以要把)排序是查询语句的最后一步工作,所以要把)排序是查询语句的最后一步工作,所以要把)排序是查询语句的最后一步工作,所以要把ORDER BYORDER BYORDER BYORDER BY子句一般放在查子句一般放在查子句一般放在查子句一般放在查询语句的最后。询语句的最后。询语句的最后。询语句的最后。第44页,共62页,编辑于2022年,星期六数据汇总数据汇总1、聚合函数、聚合函数表表 聚合函数一览表聚合函数一览表 聚合函数聚合函数含义含义Count(distinct|all*)Count(distinct|all*)统计元组(记录)个数统计元组(记录)个数Count(distinct|allCount(distinct|all)统计一列中不为统计一列中不为NULLNULL值的个数值的个数Sum(distinct|allSum(distinct|all)求一列值的总合(必须为数值型)求一列值的总合(必须为数值型)Avg(distinct|allAvg(distinct|all)求一列值的平均数(必须为数值型)求一列值的平均数(必须为数值型)Max(distinct|allMax(distinct|all)求一列值中的最大值求一列值中的最大值Min(distinct|allMin(distinct|all)求一列值中的最小值求一列值中的最小值表示去掉结果中的重复行表示去掉结果中的重复行表示去掉结果中的重复行表示去掉结果中的重复行 指定指定指定指定ALLALLALLALL选项或不指定则表选项或不指定则表选项或不指定则表选项或不指定则表示保留重复行示保留重复行示保留重复行示保留重复行 第45页,共62页,编辑于2022年,星期六例:查询学生总数例:查询学生总数例:查询学生总数例:查询学生总数SELECT SELECT COUNT(*)COUNT(*)FROM StudentFROM Student;计算计算计算计算1 1号课程的学生平均成绩号课程的学生平均成绩号课程的学生平均成绩号课程的学生平均成绩SELECT SELECT AVG(Grade)AVG(Grade)FROM SCFROM SCWHERE Cno=WHERE Cno=11;查询每个班的查询每个班的查询每个班的查询每个班的学生人数?学生人数?学生人数?学生人数?第46页,共62页,编辑于2022年,星期六2 2、GROUP BYGROUP BY子句子句子句子句GROUP BYGROUP BYGROUP BYGROUP BY子句用于对表或视图中数据的查询结果按某一列子句用于对表或视图中数据的查询结果按某一列子句用于对表或视图中数据的查询结果按某一列子句用于对表或视图中数据的查询结果按某一列或多列值分组,值相等的分为一组或多列值分组,值相等的分为一组或多列值分组,值相等的分为一组或多列值分组,值相等的分为一组 2 2、GROUP BYGROUP BY子句子句子句子句例:求各个课程号及相应的选课例:求各个课程号及相应的选课例:求各个课程号及相应的选课例:求各个课程号及相应的选课人数人数人数人数 SELECT Cno,COUNT(Sno)SELECT Cno,COUNT(Sno)SELECT Cno,COUNT(Sno)SELECT Cno,COUNT(Sno)FROM SCFROM SCFROM SCFROM SCGROUP BY CnoGROUP BY CnoGROUP BY CnoGROUP BY Cno 注意注意注意注意:SELECTSELECTSELECTSELECT子子子子句句句句的的的的列列列列表表表表中中中中只只只只能能能能包包包包含含含含在在在在GROUP GROUP GROUP GROUP BYBYBYBY中中中中指指指指出出出出的的的的列列列列或或或或在在在在聚合函数中指定的列。聚合函数中指定的列。聚合函数中指定的列。聚合函数中指定的列。GROUP BYGROUP BYGROUP BYGROUP BY子句常与聚合函数子句常与聚合函数子句常与聚合函数子句常与聚合函数联合使用,用于针对分组的联合使用,用于针对分组的联合使用,用于针对分组的联合使用,用于针对分组的统计汇总统计汇总统计汇总统计汇总 第47页,共62页,编辑于2022年,星期六3 3、HAVINGHAVING短语短语短语短语如如如如果果果果分分分分组组组组后后后后还还还还要要要要求求求求按按按按一一一一定定定定条条条条件件件件对对对对这这这这些些些些组组组组进进进进行行行行筛筛筛筛选选选选,最最最最终终终终只只只只输输输输出出出出满满满满足足足足制制制制定定定定条条条条件件件件的的的的组组组组,则则则则可可可可以以以以使使使使用用用用HAVINGHAVINGHAVINGHAVING短短短短语语语语指指指指定定定定筛筛筛筛选选选选条条条条件件件件。HAVINGHAVING通常与通常与GROUP BYGROUP BY子句一起使用。子句一起使用。SELECT SnoSELECT SnoFROM SCFROM SCFROM SCFROM SCGROUP BY SnoGROUP BY SnoHAVING COUNT(*)3HAVING COUNT(*)3例例例例查询选修了查询选修了查询选修了查询选修了3 3 3 3门以上课程的学生学号:门以上课程的学生学号:门以上课程的学生学号:门以上课程的学生学号:第48页,共62页,编辑于2022年,星期六Having 短语指定选择组的条件,只有满足条件的短语指定选择组的条件,只有满足条件的组才被选出来。组才被选出来。Where子句从基本表中选择满足条件的元组,子句从基本表中选择满足条件的元组,having选择满足条件的组选择满足条件的组第49页,共62页,编辑于2022年,星期六若若一一个个查查询询同同时时涉涉及及两两个个或或两两个个以以上上的的表表,则则称称为为连连接接查查询询。连连接接查查询询中中用用来来连连接接两两个个关关系系的的条条件件称称为为连连连连接接接接条条条条件件件件或或连连连连接接接接谓谓谓谓词词词词,一般格式为:,一般格式为:,一般格式为:,一般格式为:.2连接谓词中的列名称为连接字段连接谓词中的列名称为连接字段连接谓词中的列名称为连接字段连接谓词中的列名称为连接字段 连接查询连接查询第50页,共62页,编辑于2022年,星期六 连接查询中用来连接两个关系的条件称为连接查询中用来连接两个关系的条件称为连接条件连接条件或或连连接谓词接谓词,格式:,格式:.2其中比较运算符主要有:其中比较运算符主要有:=、=、=、!=!=当连接运算符为当连接运算符为=时,叫时,叫等值连接等值连接。使用其它运算符称为使用其它运算符称为非等值连接非等值连接。连接谓词中的连接谓词中的列名列名称为称为连接字段连接字段。n在在SELECT 中中 连接条件放在连接条件放在where 后面后面第51页,共62页,编辑于2022年,星期六例:查询每个学生及其选课情况例:查询每个学生及其选课情况Select Student.*,SC.*From Student,SCWhere Student.Sno=SC.Sno;第52页,共62页,编辑于2022年,星期六数据更新数据更新主要包括对数据库表的数据进行插入、修改、删除操作。主要包括对数据库表的数据进行插入、修改、删除操作。主要包括对数据库表的数据进行插入、修改、删除操作。主要包括对数据库表的数据进行插入、修改、删除操作。INSERTUPDATEDELETE第53页,共62页,编辑于2022年,星期六Insert 插入语句插入语句insert into 表名表名(字段字段,)values(值值,)insert into 表名表名 values(值值,)插入时须考虑清楚字段类型避免插入后出现缺值,乱码现象插入时须考虑清楚字段类型避免插入后出现缺值,乱码现象第54页,共62页,编辑于2022年,星期六插入数据插入数据 插入数据的操作有两种形式:插入数据的操作有两种形式:插入数据的操作有两种形式:插入数据的操作有两种形式:(1 1)使用使用VALUESVALUES子句向数据子句向数据库库的基本表表一次插入的基本表表一次插入一个元一个元组组;(2 2 2 2)插入)插入)插入)插入SELECTSELECTSELECTSELECT子查询的结果,一次插入一批数据子查询的结果,一次插入一批数据子查询的结果,一次插入一批数据子查询的结果,一次插入一批数据记录。记录。记录。记录。第55页,共62页,编辑于2022年,星期六1、插入单个元组、插入单个元组语法格式:语法格式:语法格式:语法格式:INSERT INSERT INTOINTOINTOINTO (,.)2.)VALUESVALUESVALUESVALUES(1,2)说明:说明:说明:说明:(1 1 1 1)属性列与常量必须一一对应,数据类型要一致)属性列与常量必须一一对应,数据类型要一致)属性列与常量必须一一对应,数据类型要一致)属性列与常量必须一一对应,数据类型要一致 ;(2 2 2 2)在基本表结构定义中未说明为)在基本表结构定义中未说明为)在基本表结构定义中未说明为)在基本表结构定义中未说明为NOT NULLNOT NULLNOT NULLNOT NULL的属性列,如果没有出现在的属性列,如果没有出现在的属性列,如果没有出现在的属性列,如果没有出现在INTOINTOINTOINTO子句后,这些列将取空值。已经说明为子句后,这些列将取空值。已经说明为子句后,这些列将取空值。已经说明为子句后,这些列将取空值。已经说明为NOT NULLNOT NULLNOT NULLNOT NULL的属性列,则必须出的属性列,则必须出的属性列,则必须出的属性列,则必须出现在现在现在现在INTOINTOINTOINTO子句后面子句后面子句后面子句后面;(3 3 3 3)如果)如果)如果)如果INTOINTOINTOINTO子句后面没有指定任何列,则子句后面没有指定任何列,则子句后面没有指定任何列,则子句后面没有指定任何列,则VALUESVALUESVALUESVALUES子句后面的常子句后面的常子句后面的常子句后面的常量个数必须与基本表中列的个数相等,且量个数必须与基本表中列的个数相等,且量个数必须与基本表中列的个数相等,且量个数必须与基本表中列的个数相等,且类型、顺序一致类型、顺序一致类型、顺序一致类型、顺序一致。第56页,共62页,编辑于2022年,星期六例例 插入一条选课记录(插入一条选课记录(95020,1)INSERT INTOINTO SC SC(Sno,Cno)VALUES(9502095020,1);表中所有的列表中所有的列表中所有的列表中所有的列第57页,共62页,编辑于2022年,星期六修改数据修改数据修改数据主要是对数据库表中一个或多个元组某个或某些属修改数据主要是对数据库表中一个或多个元组某个或某些属修改数据主要是对数据库表中一个或多个元组某个或某些属修改数据主要是对数据库表中一个或多个元组某个或某些属性的值进行更改性的值进行更改性的值进行更改性的值进行更改 。语法格式语法格式语法格式语法格式:UPDATEUPDATE SETSET =,=,WHERE WHERE WHERE WHERE 第58页,共62页,编辑于2022年,星期六1、修改一个元组的值、修改一个元组的值 例如:例如:例如:例如:UPDATEUPDATE Student StudentSETSETSETSET Sage=22 Sage=22WHERE Sno=95001WHERE Sno=95001WHERE Sno=95001WHERE Sno=95001;2、修改多个元组的值、修改多个元组的值例:例:例:例:将所有课程的学分改为将所有课程的学分改为将所有课程的学分改为将所有课程的学分改为2 2 2 2分分分分 UPDATE CourseUPDATE CourseSET Ccredit=2SET Ccredit=2SET Ccredit=2SET Ccredit=2例:将女生年龄增加例:将女生年龄增加例:将女生年龄增加例:将女生年龄增加1 1岁岁岁岁UPDATE StudentUPDATE StudentUPDATE StudentUPDATE StudentSET Sage=Sage+1SET Sage=Sage+1SET Sage=Sage+1SET Sage=Sage+1WHERE Ssex=WHERE Ssex=女女女女;第59页,共62页,编辑于2022年,星期六删除数据删除数据语法格式语法格式语法格式语法格式:DELETE FROM WHERE 注意:注意:注意:注意:DELETEDELETEDELETEDELETE命命命命令令令令删删删删除除除除的的的的是是是是一一一一个个个个或或或或多多多多个个个个元元元元组组组组(记记记记录录录录、行行行行),而而而而不不不不是是是是某某某某个个个个行行行行中中中中个个个个别别别别列列列列的的的的值值值值。不不不不需需需需要要要要的的的的某某某某个个个个行行行行的的的的个个个个别别别别列列列列的的的的值值值值,只只只只能能能能用用用用UPDATEUPDATEUPDATEUPDATE命命命命令令令令修修修修改改改改成成成成NULLNULLNULLNULL值值值值或或或或空空空空格格格格符符符符,不不不不能能能能被删除。被删除。被删除。被删除。第60页,共62页,编辑于2022年,星期六DELETEFROM StudentWHERE Sno=95001;第61页,共62页,编辑于2022年,星期六DELETEFROM Student第62页,共62页,编辑于2022年,星期六