数据库课件第三章.pptVIP

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(6) 多条件查询 例 查询计算机软件专业男同学的学号和姓名。 SELECT Sno, Sname FROM Student WHERE Ssex= 男 OR Sdept= 计算机软件 7. 使用ORDER BY子句 例 将课程按学分升序排序。 SELECT * FROM Course ORDER BY Credit 例 查询选修了C301课程的学生的学号和成绩,查询结果按成绩降序排序。 SELECT Sno, Grade FROM SC WHERE Cno=‘C301’ ORDER BY Grade DESC ASC表示升序,DESC表示降序,默认情况下按升序排列。 3.3.3 多表查询 若一个查询同时涉及两个以上的表,则称之为多表查询(连接查询)。 例 查询每个学生及其选修课程的情况。 SELECT Student.*, SC.* FROM Student,SC WHERE Student.Sno=SC.Sno 连接条件中两个连接字段的类型必须是可比的,但不必相同。 查询结果包括了两个表的全部字段,其中Sno列重复了两次,一次是Student中的Sno,另一次是SC中的Cno。因此,在查询语句中可以直接写所需要的字段名,对于重复的列一定要加上表名,加以限制,指明是哪个表中的字段。 SELECT Student.Sno,SN,Sex,Age,Dept,Cno,Grade FROM Student,SC WHERE Student.Sno=SC.Sno 若字段名在各个表中是惟一的,可以把字段名前的表名去掉。 当WHERE子句中可以有多个连接条件时,称为复合条件连接。 例 查询所有学生(姓名)选修的课程名和成绩。 SELECT Student.Sno,Course.Cno,Grade FROM Student,Course,SC WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno 连接操作不仅可以在两个表之间进行,也可以是一个表与其自己进行连接,称为表的自身连接。 例 查询所有比“李明”大的学生的姓名和年龄。 SELECT X.Sname, X.Sage FROM Student X,Student Y WHERE X.SageY.Sage AND Y.Sname= 李明 3.3.4 查询聚合数据 1. 聚合函数 COUNT(*) 统计表中元组个数。 COUNT(属性名) 统计一列中列值的个数。 SUM 计算一列值的总和(此列必须是数值型)。 AVG 计算一列值的平均值(此列必须是数值型)。 MAX 求一列值中的最大值。 MIN 求一列值中的最小值。 例 求计算机软件专业学生的平均年龄。 SELECT AVG(Sage) FROM Student WHERE Sdept= 计算机软件 例 统计学校共开设多少门课程。 SELECT COUNT(*) FROM SC 例 统计学校共有几个专业。 SELECT COUNT (DISTINCT Sdept) FROM Student 计算出的Sdept值有重复,用Distinct去除掉重复的专业。 GROUP BY子句的功能是将查询结果按某一列或多列的值进行分组,然后再对每个组进行计算。在一个查询语句中,可以对任意多个列进行分组。使用GROUP BY子句时,如果在SELECT的查询列表中含有聚合函数,则是针对每个组计算出一个汇总值,而不是对整个表或某一列,从而实现对查询结果的分组汇总。 2. 使用GROUP BY子句 例 查询各门课程的选修人数。 SELECT Cno,COUNT(*) FROM SC GROUP BY Cno HAVING子句用来指定分组后结果集的筛选条件,它的功能和WHERE子句类似,但它的操作对像是GROUP BY子句指定的已经分组的元组,而WHERE子句的操作对象是FROM子句指定的表。HAVING子句常与GROUP BY子句一起使用。 例 求选课在3门以上并且成绩及格的学生,并统计平均成绩,按总成绩降序排列。 SELECT Sno,AVG(Grade) Average FROM SC WHERE Grade=60 GROUP BY Sno HAVING COUNT(*)=3 ORDER BY Average DESC 3.3.5 嵌套查询 1. 使用谓词IN的子查询 在嵌套查询中,子查询的结果往往是一个集合,所以谓词IN是嵌套查询中最经常使用的谓词,与之相反的是NOT IN 谓词。 嵌套查询是由里向外处理的,先执行子查询,然后将子查询的结果作为查询条件再执行外层查询,即外层查询可以利用子查询的结果,子查询不依赖于外层查询。 例 查

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档