《关系数据库语言sql连接查询 信息管理系 数据库技术及应用教学课件》由会员分享,可在线阅读,更多相关《关系数据库语言sql连接查询 信息管理系 数据库技术及应用教学课件(16页珍藏版)》请在金锄头文库上搜索。
1、上午10时0分42秒,数据库技术及应用,1,关系数据库语言SQL 连接查询,信息管理系 都欣娟 15364772869,上午10时0分42秒,数据库技术及应用,2,上节回顾,WHERE从句的进一步使用 数据汇总,表达式比较:、 确定范围:BETWEENAND、NOT BETWEENAND 确定集合:IN、NOT IN 字符匹配:LIKE、NOT LIKE 涉及空值的查询:IS NULL、IS NOT NULL 多重条件查询:AND、OR,COUNT():统计元组个数 SUM():求一列值的总和 AVG():求一列值的平均数 MAX():求一列值的最大值 MIN():求一列值的最小值,上午10时
2、0分42秒,数据库技术及应用,3,上节回顾,查询每个学生的平均成绩,结果按平均成绩的降序排序。 select avg(score) as 平均成绩, sno as 学号 from grade group by sno order by avg(score) desc,上午10时0分42秒,数据库技术及应用,4,学习目标,掌握连接查询在实际中的应用。,上午10时0分42秒,数据库技术及应用,5,连接查询是关系数据库中最主要的查询。 若一个查询同时涉及两个或两个以上的表,则称为连接查询。 连接查询中用来连接两个关系的条件称为连接条件或连接谓词,一般格式为: .,连接谓词中的列名称为连接字段,例如:
3、XK.XH=STU_INFO.XH,连接查询的FROM后面跟多个表。,上午10时0分42秒,数据库技术及应用,6,其中比较运算符主要有:=、=、=、!= 当连接运算符为=时叫等值连接。 使用其它运算符称为非等值连接。,在SELECT中连接条件放在WHERE后面。,上午10时0分42秒,数据库技术及应用,7,查询工作的关键就在通过分析怎样把实际问题中的自然语言描述转化为 从哪个表中查询 即:FROM后的一项 要查询哪些列 即:SELECT后的一项 要查询的条件 即:WHERE后的一项,回顾:完成查询工作的三个关键步骤,上午10时0分42秒,数据库技术及应用,8,例1:查询每个学生及其选课情况,S
4、ELECT STU_INFO.*,XK.* FROM STU_INFO,XK WHERE STU_INFO.XH=XK.XH,上午10时0分42秒,数据库技术及应用,9,例2:查询物理012班每个学生及其选修课程的情况,SELECT STU_INFO.*,XK.* FROM STU_INFO,XK WHERE STU_INFO.XH=XK.XH AND BH=物理012 /*复合条件连接*/,上午10时0分42秒,数据库技术及应用,10,例3:查询选修了有机化学这门课程的学生的姓名,SELECT XM FROM STU_INFO,XK,GCOURSE WHERE GCOURSE.KM=有机化学
5、 AND GCOURSE.KCH=XK.KCH AND XK.XH=STU_INFO.XH,说明: 连接查询涉及的所有表名都放在FROM子句后面。 连接条件放在WHERE子句中。 如果属性列名在参加连接的各表中是唯一的,可以省略表名前缀;如果属性列名是两个表共同的属性,则一定要加表名前缀。,上午10时0分42秒,数据库技术及应用,11,在书写连接查询时,为了简化,可以为表名取别名,别名应该简单。别名只在本次查询有效。,例:SELECT XM FROM STU_INFO S,XK X,GCOURSE C WHERE C.KM=有机化学 AND C.KCH=X.KCH AND X.XH=S.XH,
6、上午10时0分42秒,数据库技术及应用,12,练习,已知:在数据库Student中有表: 学生表student(sno学号,sname姓名,ssex性别,sage年龄,sclass班级,sjiguan籍贯) 课程表course(cno课程号,cname课程名,cxuefen学分,ctea代课老师) 成绩表grade(sno学号,cno课程号,score成绩),上午10时0分42秒,数据库技术及应用,13,练习,查询1: 查询每个学生的平均成绩,并显示姓名,结果按平均成绩的降序排序;,SELECT AVG(SCORE) AS 平均分,SNAME FROM STUDENT,GRADE WHERE
7、STUDENT.SNO=GRADE.SNO GROUP BY STUDENT.SNO,SNAME ORDER BY AVG(SCORE) DESC,上午10时0分42秒,数据库技术及应用,14,练习,查询2: 查询选修了“大学英语”的学生的姓名;,SELECT SNAME FROM STUDENT,COURSE,GRADE WHERE STUDENT.SNO=GRADE.SNO AND GRADE.CNO=COURSE.CNO AND CNAME=大学英语,上午10时0分42秒,数据库技术及应用,15,小结,若一个查询同时涉及两个或两个以上的表,则称为连接查询。 连接查询中用来连接两个关系的条件称为连接条件或连接谓词,一般格式为: . 当连接运算符为=时,叫等值连接。,上午10时0分42秒,数据库技术及应用,16,思考,查询与刘玉涛在同一个班的学生。 分析: 首先把刘玉涛的班级查询出来; 然后对数据库表STUDENT从第一行起逐行扫描,每行的属性列SCLASS都与刘玉涛的班级比较。 涉及到两个查询块,嵌套查询,