第四章结构化查询语言sql四章结构化查询语言sql第四章结构化查询语言sql第四章结构化查询语言sql.ppt

第四章结构化查询语言sql四章结构化查询语言sql第四章结构化查询语言sql第四章结构化查询语言sql.ppt

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

(1)从选课表中检索出前5个课程信息。 select Top 5 * from Course (2)从选课表中检索出前面10%的课程信息。 select Top 10 PERCENT * from Course 7.7 使用COMPUTE和COMPUTE BY子句 [实例7.29] 使用COMPUTE统计学生成绩表中的课程号是1002的期末成绩的总和和期末成绩的平均成绩。 操作步骤: 归纳分析: COMPUTE子句或COMPUTE BY子句的作用和GROUP BY子句的作用有一定的相似处,它们有以下两方面的不同: (1) COMPUTE子句不符合ANSI标准,与其他数据库服务器不一定兼容。 (2) COMPUTE BY子句使用户得以用同一个SELECT语句既查看明细行,又查看汇行。可以计算子组的汇总值,也可以计算整个结果集的汇总值。 命令格式: COMPUTE 函数(被统计列名) [BY (列名) 命令说明: (1) 该语句按关键字BY后面的列清单实现数据的分组汇总。 (2) 在COMPUTE或COMPUTE BY子句中,不能包含text、ntext或image数据类型。 (3)在COMPUTE后的列名只能出现在聚合函数中。 (4)不能在使用COMPUTE子句的同时使用SELECT INTO子句。 [实例7.30] 使用COMPUTE BY分组统计学生成绩表中的1001号及1002号课程的期末成绩的总和和期末成绩的平均成绩。 操作步骤: 归纳分析: 在COMPUTE子句中使用BY关键字,可以按BY后面的列清单实现数据的分组汇总,但使用BY关键字之前,必须先使用ORDER BY子句对数据进行排序,且在COMPUTE BY后面的列必须包含在ORDER BY子句后面的列清单中,并且必须以相同的顺序进行。 [实例7.31] 在学生信息表中,在学号1001—1010中,求年龄的总值和平均年龄。 操作步骤: 归纳分析: 使用COMPUTE和COMPUTE BY子句需要注意以下几点: (1) COMPUTE子句不能和SELECT INTO子句一起使用。 (2) 如果具有ORDER BY子句,列名必须出现在SELECT中。 (3) 聚集函数不能带DISTINCT关键字。 (4) 如果使用COMPUTE BY子句,必须使用ORDER BY子句;而且COMPUTE BY子句的列名称和顺序必须和ORDERBY相同。 (5) 如果具有COMPUTE BY子句,必须使用ORDER BY子句;在COMPUTE BY中出现的列,只能等于或者小于ORDER BY的列,且顺序要相同。 例:查询选修了全部课程的学生姓名。 本题使用除运算的方法。由题意可得另一种语言,没有一个选了课的学生没有选course表里的课程。那么,我们需要两个NOT EXISTS表示双重否定; 另一种思路可详见书例4.52 P78 select Sname from Student where not exists( select * from Course where not exists( select * from SC where Sno=Student.sno and cno=Course.cno)) 例:查询至少选修了学生选修的全部课程的学生的学号,姓名。 没有一个选了课的学生没有选 选修的全部课程。 select Sno,Sname from Student where Sno in( select distinct Sno from SC as SC1 where not exists( select * from SC as SC2 where SC2.Sno and not exists(select * from SC as SC3 where SC3.Sno=SC1.Sno and SC3.cno=SC2.cno)) ) 归纳分析: 使用IN关键字进行嵌套查询的效率是较低的,尤其当一个列同时出现在外部查询和子查询中时,很可能当外部查询中的列值改变之后,子查询必须重新查询一次。查询嵌套的层次越多,效率越低,因此应当尽量避免子查询。可以将某些嵌套查询转化为等价的连接查询,以提高查询效率。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。 7.8.3 使用EXISTS的子查询 使用EXISTS关键字引入一个子查询时,就相当于进行一次数据是否存在的测试。为了便于理解,我们可以把EXISTS想象为一个函数,而子查询是这个EXI

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档