- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十一章 连接查询和分组查询
使用group by 进行分组查询
语法:
Select 列名
From 表名
Group by 列名
查询男女学生的人数格式多少
分析:
首先按照性别进行分组:group by SSex
其次对每个组进行总数的统计,用到聚合函数count()。
完整的T-SQL语句如下:
Select count(*) AS 人数,SSex from Students
Group by SSex
查询每个科目的平均分,并且按照由低到高的顺序排列显示
Select CourseID,avg(Score) AS 课程平均成绩
From Score
Group by CourseID
Order by avg(Score) DESC
多列分组查询
Select count(*) AS 人数,SGrade AS 年级, SSex AS 性别
From Students
Group by SGrade,SSex
Order by SGrade
使用having 子句进行分组筛选
查询年纪总人数超过15的年级
Select count(*) AS 人数,SGrade AS 年级
From Students
Group by SGrade
Having count(*)15
查询平均分及格的课程信息
Select CourseID AS 课程编号,avg(Score) AS 课程平均成绩
From students
Group by GourseID
Having avg(score)=60
Having ,where,order by 和group by句子可以在同一个select语句中哟起使用,使用顺序如下
Where→group by → having →order by
查询每门课程及格总人数和及格学生的平均分
Select count(*) AS 人数,avg(Score) AS 平均分, CrouseID AS 课程
From SCore
Where Score=60
Group by CrouseID
查询每门课程及格人数和及格平均分在80分以上的记录
Select count(*) AS 人数,avg(Score) AS 平均分,CrouseID AS 课程
From Score
Where Score=60
Group by CrouseID
Having avg(Score)80
Order by CrouseID
多表连接查询
多表连接查询的分类
多表连接查询实际上是通过各个表之间共同列的关联性来查询数据的,他是关系数据库查询最主要的特征。
常用的连接:内链接,外连接
内链接
内链接是最典型,最常用的连接查询,它根据表中共同的列来进行匹配,特别是两个表存在主外建关系时通常会使用到内链接查询
B.外连接
外连接是至少返回一个表中的所有记录,根据匹配条件有选择性地返回另一张表的记录。外连接可以是左外连接,有外链接
内链接查询
内链接查询通常会使用向“=”或“”等比较运算符来判断两列数据值是否相等
内链接使用inner join 、、、on关键字或where子句来进行表之间的关联。内链接查询可以通过两种方式实现
在where子句中指定连接条件
例如:查询学生姓名和成绩的T-SQL如下
Select Student、Sname,Score、CourseID,Score、Score
From Student,Score
Where Students.Scode=Score.StudentID
在from子句中使用insert join 、、、on
上面查询也可一通过这种方式来实现
Select s.Sname,c.courseID ,c.Score
From Students AS s
Inner join Score AS c on(s.Score=c.StudentID)
在上面的内链接查询中:
A:insner join 用来连接两个表
B:inner 可以省略
C:on用来设置条件
D:AS指定表的“别名”,如果查询的别名在用到两个或多个表中不重复,则对这一列的引用不必用表名来限定
外连接查询
与内部连接相对的方式称为外部链接。在外部联接中参与联接的表有主从之分,以主表的每行数据匹配从表的数据列,江都和联接条件的数据直接返回到结果集中;对那些不符合连接条件的列,将被填上NULL值(空值)后在返回到结果集中
左外连接查询
左外连接的结果集包括left join 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行
左外连接使用left join 、、、on 或 left outer join 、、、on 关键字来进行表之间的关联
例如 :要统计所有学生的考试情况,要求显示所参加考试学生
文档评论(0)