第4章 高级SQL精要.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 高级SQL精要

使用分组汇总子句 当需要显示分组的汇总数据时,就应使用GROUP BY子句。该子句的功能是根据指定的列将表中数据分成多个组后进行汇总 其语法格式为: * * SELECT column_name1[,…n] FROM table_name WHERE search_condition GROUP BY [ ALL ]colum_name1[,…n] [ HAVING search_condition ] 使用分组汇总子句 * * 注意: 使用GROUP BY子句为每一个组产生一个汇总结果,每个组只返回一行,不返回详细信息。 SELECT子句中指定的列必须是GROUP BY子句中指定的列,或者是和聚合函数一起使用。 如果包含WHERE子句,则只对满足WHERE条件的行进行分组汇总。 如果GROUP BY子句使用关键字ALL,则WHERE子句将不起作用。 HAVING子句可进一步排除不满足条件的组 使用分组汇总子句 * * 注意: 当同时存在GROUP BY子句、HAVING子句和WHERE子句时,其执行顺序为:先WHERE子句,后GROUP BY子句,再HAVING子句。即先用WHERE子句过滤不符合条件的数据记录,接着用GROUP BY子句对余下的数据记录按指定列分组、汇总,最后再用HAVING子句排除不符合条件的组。 使用分组汇总子句 * * 如果GROUP BY子句中指定了多个列,则表示要基于这些列的唯一组合来进行分组。在分组过程中,首先按第一列进行分组并按升序排列,然后再按第二列进行分组并按升序排列,依次类推,最后在分好的组中进行汇总。 使用明细汇总子句 使用GROUP BY对查询出来的数据作分类汇总后,只能显示统计结果,看不到详细的数据。使用COMPUTE和COMPUTE BY子句既能浏览详细数据又可看到统计的结果 COMPUTE生成的汇总列,出现在结果集的最后 其语法格式为: * * COMPUTE affregate_function(column_name)[,…n] [ BY column_name [,…n] ] 表示聚合函数 使用明细汇总子句 * * 使用明细汇总子句 * * COMPUTE类似于总计 使用明细汇总子句 * * COMPUTE BY类似于小计 使用明细汇总子句 * * 练习: 1、查询年纪小于20岁的同学的总人数,平均分,最高、最低分; 2、查询每个班的男女生人数,平均分; 3、查询每个班的班号及每个班的分数总和,最高,最低,总人数 4、查询所有同学信息,并对每个班的分数总和,最高,最低,总人数进行汇总 * Any question? 查询“2009”年选课的学生学号和姓名 use student go select ID,name from student inner join takes on student.id=takes.id where year=2009 * 此处的inner join与join功能相同:如果表中有至少一个匹配,则返回行;否则,不返回。 Left join:即使右表中没有匹配,也从左表返回所有的行。 Right join:即使左表中没有匹配,也从右表返回所有的行。 Full join:只要其中一个表中存在匹配,就返回行。 练习 * 作业 使用 进行多表查询,要求包含以上几中连接关键字。 LEFT JOIN RIGHT JOIN FULL JOIN CROSS JOIN INNER JOIN 多表查询——子查询 学习目标 会运用IN子查询查询信息 理解子查询和连接查询的区别 所谓嵌套查询指的是在一个SELECT查询内再嵌入一个SELECT查询。外层的SELECT语句叫外部查询,内层的SELECT语句叫子查询 使用子查询时需注意: 子查询可以嵌套多层 子查询需用圆括号()括起来 子查询的SELECT语句中不能使用image、text或ntext数据类型 * * 例1、查询和“张三”同班的学生信息 【程序代码】 USE student GO SELECT * FROM student WHERE classno= (SELECT classno FROM student WHERE sname=‘张三) 课堂练习: 查询与李四性别相同的同学的信息 思考:假如有叫李四的同学有两位,且性别不同时,会怎么样? 子查询返回值类型为单列多值 如果子查询中返回的是单列多值,则必须在子查询前使用关键字ALL或ANY,否则系统会提示错误信息 * * 例2 查询比“0101”班学生入学成绩都高的其他班的学生的学号和姓名。 USE

文档评论(0)

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

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

1亿VIP精品文档

相关文档