数据库课程详细教程 第06章.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库课程详细教程 第06章

【例6.47】从sc表中查询被学生选修了的课程。 SELECT 课程号 FROM sc GROUP BY 课程号 【例6.48】查询数据库中各个系的学生人数。 SELECT COUNT(*) AS 各系学生人数 FROM s GROUP BY 系 【例6.49】查询每个学生课程成绩在88分以上的课程的平均成绩。 SELECT 学号 ,avg(成绩) as 平均成绩 FROM sc WHERE 成绩88 GROUP BY 学号 【例6.47】从sc表中查询被学生选修了的课程。 SELECT 课程号 FROM sc GROUP BY 课程号 【例6.50】查询每个学生课程成绩在88分以上的课程的平均成绩(不满足的成绩以空值代替)。 SELECT 学号 ,avg(成绩) as 平均成绩 FROM sc where 成绩88 GROUP BY all 学号 【例6.51】查询选修课程4门及以上并且成绩都在65分以上的学生的学号和平均成绩。 SELECT 学号,AVG(成绩) AS 平均成绩 FROM sc WHERE 成绩=65 GROUP BY 学号 HAVING COUNT(课程号)=4 1)格式 SELECT 列表 [INTO 新表 ] FROM 基本表(或视图序列) [WHERE 条件表达式] [ORDER BY属性名[ASC|DESC] [,…n]] --排序子句 [COMPUTE [BY] 集函数(列名)] 2)功能 COMPUTE子句后直接跟需要被汇总(聚合)的字段,并通过其自带的BY子句指定分组依据,但要求COMPUTE BY后跟的关键字,必须出现在ORDER BY中。否则不能正确执行。 1)格式 SELECT 列表 [INTO 新表 ] FROM 基本表(或视图序列) [WHERE 条件表达式] [ORDER BY 属性名[ASC|DESC] [,…n]] --排序子句 [GROUP BY [ALL] 属性名表] --分组子句 [with CUBE] 2)功能 CUBE子句与GROUP WITH联合使用,可以按照GROUP WITH中指定的字段对整个数据表进行分类汇总。分类汇总时,会对GROUP BY中指定的所有字段进行组合汇总。并且使用GROUPING函数将执行汇总所得的那条记录标识为‘1’,可以很清楚地区分查询结果中带‘NULL’值的记录,哪些是原记录中含有NULL值字段的记录,而哪些是新生成的汇总记录。 【例6.53】查询每个学生的平均成绩,并汇总所有学生所有课程成绩的平均分。 SELECT 学号 ,avg(成绩) as 平均成绩 FROM sc GROUP BY 学号 with cube ---是所有学生所有课程成绩的平均分。 6.6.1 子查询的制约规则 子查询的选择列表中不允许出现 ntext、text 和 image 。 包括 GROUP BY 的子查询不能使用 DISTINCT 关键字。 不能指定 COMPUTE 和 INTO 子句。 只有在子查询中使用TOP关键字,才可以指定 ORDER BY子句。 由子查询创建的视图不能更新。 不能在ORDER BY、GROUP BY或COMPUTE BY之后使用子查询。 子查询中不能使用UNION关键字。 LOB(大对象数据)类型的字段不能作为子查询的比较条件。 【例6.57】查询陈小红同学的学号及所选修的课程号。 方法一:SELECT 子查询。 SELECT 学号,课程号 FROM sc WHERE 学号=(SELECT 学号 FROM s WHERE 姓名 = 陈小红) 该示例也可以用以下SELECT 连接查询获得相同的结果集。 方法二:SELECT 连接 SELECT 学号,课程号 FROM s JOIN sc ON (s.学号 = sc.学号) WHERE 姓名 = 陈小红 WHERE 比较运算符[ NOT ] ALL?( 子查询) 子查询的结果集的列必须与表达式1有相同的数据类型。 结果类型为布尔型。 S>ALL R:当S大于子查询R中的每一个值,该条件为真TRUE。 NOT S>ALL R:当且仅当S不是R中的最大值,该条件为真TRUE 【例6.59】查询比所有汽车系的学生年龄都小的学生。 SELECT * FROM s WHERE 出生日期 ALL(SELECT 出生日期 FROM s WHERE 系=汽车系) 【例6.57】查询陈小红同学的学号及所选修的课程号。 方法一:SELECT 子

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档