收藏 分享(赏)

联接查询和分组查询.ppt

上传人:精品资料 文档编号:11168039 上传时间:2020-02-11 格式:PPT 页数:37 大小:605.50KB
下载 相关 举报
联接查询和分组查询.ppt_第1页
第1页 / 共37页
联接查询和分组查询.ppt_第2页
第2页 / 共37页
联接查询和分组查询.ppt_第3页
第3页 / 共37页
联接查询和分组查询.ppt_第4页
第4页 / 共37页
联接查询和分组查询.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、第十一章,联接查询和分组查询,如下的T-SQL语句含义是什么?Temp表中A列为商品名称,请说出查询以大写字母开头的所有商品名称的T-SQL语句聚合函数COUNT()和SUM()各代表什么意思?,回顾和作业点评,SELECT Telephone FROM stu WHERE Telephone NOT LIKE 6%,SELECT A FROM Temp WHERE A LIKE A-Z% ,预习检查,分组查询主要解决什么问题? 多表联接主要解决什么问题?用在什么场合?,统计学生考试信息 从多个数据表中取得学生考试成绩单,本章任务,使用GROUP BY进行分组查询 掌握多表联接查询,本章目标,

2、需求1,每年级的学生人数各是多少?,分组查询原理,第一学期人数,第二学期人数,第三学期人数,三 组,分组查询用法,SELECT FROM WHERE GROUP BY ,分组查询语句,SELECT COUNT(*) AS 人数, SGrade AS 年级 FROM StudentsGROUP BY SGrade,SELECT CourseID, AVG(Score) AS 课程平均成绩 FROM Score GROUP BY CourseID,分组查询解析2-1,对分组后的每个组内的记录进行一个聚集,通常用到聚合函数,查询每门课程的平均分,按照什么进行分组?,分组查询解析2-2,SELECT

3、CourseID, AVG(Score) AS 课程平均成绩 FROM Score GROUP BY CourseID ORDER BY AVG(Score),查询每门课程的平均分,并且按照分数由低到高的顺序排列显示,SELECT StudentID, CourseID, AVG(Score) AS 课程平均成绩 FROM Score GROUP BY CourseID,思考,分组查询所查询的列 1、分组列 2、聚合函数计算出的列,分析以下的T-SQL,结果会怎样?,练习 使用分组查询学生相关信息,需求说明 查询每个年级的总学时数,并按照升序排列 查询每个参加考试的学员的平均分 查询每门课程的

4、平均分,并按照降序排列 查询每个学生参加的所有考试的总分,并按照降序排列,完成时间:15分钟,共性问题集中讲解,常见调试问题及解决办法 代码规范问题,共性问题集中讲解,需求2,统计每学期男女同学的人数,该怎么办?,对学生进行分组 计算每组学生的总人数,多列分组2-1,年级分组,性别分组,多列分组2-2,SELECT COUNT(*) AS 人数,SGrade AS 年级,SSex AS 性别FROM StudentS GROUP BY SGrade,SSex ORDER BY SGrade,ORDER BY 子句在这里的作用?,需求3,如何获得总人数超过15人的年级?,分组筛选,SELECT

5、FROM WHERE GROUP BY HAVING,SELECT COUNT(*) AS 人数,SGrade AS 年级FROM Students GROUP BY SGrade HAVING COUNT(*)15,分组筛选语句,WHERE子句: 用来筛选 FROM 子句中指定的操作所产生的行 GROUP BY子句: 用来分组 WHERE 子句的输出 HAVING子句: 用来从分组的结果中筛选行,WHERE与HAVING对比,SELECT 部门编号, COUNT(*) FROM 员工信息表 WHERE 工资 = 2000 GROUP BY 部门编号 HAVING COUNT(*) 1,思考,

6、查询有多个员工的工资不低于2000 的部门编号,分析以下的T-SQL,其作用是什么?,指导限定条件的分组查询2-1,训练要点 GROUP BY子句 HAVING子句 聚合函数 需求说明 查询学生相关信息 查询考试相关信息,讲解需求说明,指导限定条件的分组查询2-2,难点分析 计算学生的年龄 至少一次不及格的信息,DATEDIFF(dd,BornDate,GETDATE()/365,WHERE StudentResult60 GROUP BY StudentNo,完成时间:25分钟,小结,如果查询语句将得到以下的查询结果,那么以下的查询语句将输出哪些信息?,SELECT * FROM A,SEL

7、ECT A1,B1,MAX(C1) FROM A,需求4,如何同时从这两个表中取得数据?,内联接(INNER JOIN) 外联接 左外联接 (LEFT JOIN) 右外联接 (RIGHT JOIN),常用的多表联接查询,内联接3-1,Students,Score,查询结果,内联接使用比较运算符根据每个表的通用列中的值匹配两个表中的行,内联接3-2,SELECT FROM 表1 INNER JOIN 表2 ON ,SELECT FROM 表1,表2 WHERE ,SELECT S.SName,C.CourseID,C.Score FROM Score AS C INNER JOIN Studen

8、ts AS S ON C.StudentID = S.SCode,SELECT Students.SName, Score.CourseID, Score.Score FROM Students,Score WHERE Students.SCode = Score.StudentID,等价,内联接语句,内联接3-3,SELECT S.SName,C.CourseID,C.Score FROM Students AS S INNER JOIN Score AS C ON C.StudentID S.SCode,SELECT S.SName,C.CourseID,C.Score FROM Stud

9、ents AS S INNER JOIN Score AS C ON C.StudentID = S.SCode,15行,下面的查询语句返回的查询结果是一样的吗?,根据前面表中数据,下面的查询语句将会返回多少行记录?,SELECT Students.SName, Score.CourseID, Score.Score FROM Students,Score WHERE Students.SCode = Score.StudentID,两个语句的执行结果相同,指导两表内联接查询信息2-1,训练要点 两表内联接查询 INNER JOINON的使用 WHERE的使用 需求说明 查询学生相关信息 查询

10、考试相关信息,讲解需求说明,指导两表内联接查询信息2-2,难点分析 查询年级编号为1的年级名称、科目名称及学时,SELECT FROM Subject AS J INNER JOIN Grade AS G ON J.GradeId=G.GradeId WHERE G.GradeId=1,完成时间:20分钟,SELECT S.SName AS 姓名, CS.CourseName AS 课程, C.Score AS 成绩 FROM Students AS S INNER JOIN Score AS C ON (S.SCode = C.StudentID) INNER JOIN Course AS

11、CS ON (CS.CourseID = C.CourseID),三表内联接,使用WHERE语句如何实现?,练习三表内联接查询信息,需求说明 查询学生学号、姓名、考试科目名称及成绩 查询参加“走进Java编程世界”考试的学生姓名、成绩、考试日期,完成时间:10分钟,左外联接,Students,Score,查询结果,SELECT S.SName,C.CourseID,C.Score FROM Score AS C LEFT JOIN Students AS S ON C.StudentID = S.SCode,不一样,主表和从表位置已互换,SELECT S.SName,C.CourseID,C.

12、Score FROM Students AS S LEFT JOIN Score AS C ON C.StudentID = S.SCode,主表(左表)Students中的数据逐条匹配从表Score中的数据 1、匹配,返回到结果集 2、无匹配,NULL值返回到结果集,猜一猜:这样写,返回的查询结果是一样的吗?,SELECT 图书编号,图书名称,出版社名称 FROM 图书表 RIGHT OUTER JOIN 出版社表 ON 图书表.出版社编号 = 出版社表.出版社编号,右外联接,也许很久没出版书籍了,右外联接的原理与左外联接相同 右表逐条去匹配记录;否则NULL填充,练习使用外联接查询信息,需

13、求说明 查询所有科目的参考信息 查询从未考试的科目信息 查询所有年级对应的学生信息,完成时间:15分钟,在一个SQL语句中,GROUP BY、WHERE、HAVING这三部分正确使用次序是什么? 将以下的SQL语句改写成内联接查询的语句如下T-SQL语句返回结果是什么?,SELECT Students.SName, Score.CourseID,Score.Score FROM Students,Score WHERE Students.SCode = Score.StudentID,总结,SELECT * FROM Item AS aLEFT JOIN OrderDetails AS bON a.Icode=b.ItemCode,作业,课后作业 必做 教员备课时在此添加内容选做 教员备课时在此添加内容提交时间:xxx 提交形式:xxx预习作业 背诵英文单词 教员备课时在此添加内容,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报