数据库的查询和优化.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.3.4 WHERE子句 3.范围比较 范围比较主要使用BETWEEN和IN关键字。其中IN关键字还可以在子查询中使用。 例4.21 查询考场号在1000-1009之间的考场号、考试教室。 select testid,classroom from exam where testid between 1000 and 1009; 执行结果: 4.3.4 WHERE子句 4.子查询 当一个查询是另一个查询的条件时,称之为子查询。子查询可以使用几个简单命令构造功能强大的复合命令。一个子查询会返回一个标量(单一值)、一个行、一个列或一个表(一行或多行及一列或多列)。子查询最常用于SELECT-SQL命令的WHERE子句中,是一个SELECT语句,它嵌套在一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。本节主要讲解子查询在WHERE子句中的用法。 子查询语法: expression [NOT] IN (sqlstatement) comparison [ANY | ALL | SOME] (sqlstatement) [NOT] EXISTS (sqlstatement) 例4.23 查找参加了计算机网络考试的学生准考证号、姓名。 select zkzh,name from student where zkzh in ( select zkzh from examinfo where course=计算机网络 ); 4.3.4 WHERE子句 例4.24 查询在2105D考试的学生姓名,性别。 select name,sex from student where zkzh in ( select zkzh from examinfo where testid in ( select testid from exam where classroom=2105D ) ); 执行结果: 注释:如本例所示,IN子查询一次只能够返回一列数据,如果查询内容来源于3个表格,需要使用嵌套子查询。如果想要进行行比较,可以使用“=”,如下例所示。 4.3.4 WHERE子句 例4.25 查询和准考证号为140203226的考生同年出生,性别相同的考生姓名,出生日期。 select name,birth from student where (year(birth),sex)= ( select year(birth),sex from student where zkzh=140203226 ); 例4.26 查找比姓王的学生年龄都小的学生姓名,出生日期。 select name,birth from student where birthall ( select birth from student where name like王% ); 4.3.4 WHERE子句 例4.27查找不小于年龄最小的姓王学生的学生姓名,出生日期。 select name,birth from student where birth=any ( select birth from student where name like王% ); 例4.28 查找参加了软件测试考试的学生姓名。 select name from student where exists ( select * from examinfo where zkzh=student.zkzh and course=软件测试 ); 4.3.5 GROUP BY子句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。GROUP BY子句通常和聚合函数同时使用,后跟列名或表达式,可使用ASC(升序)或DESC(降序)进行排序。并且,MySQL还提供了WITH ROLLUP对分组结果进行汇总。 例4.29 查询各门课程参加考试的考生人数。 select course,count(*) as 考生人数 from examinfo group by course; 4.3.5 GROUP BY子句 例4.30 查询各专业的男生人数、女生人数和专业总人数,以及学生总人数。 select major,sex,count(*) as 考生人数 from student group by major,sex with rollup; 注释:本例不仅使用了GROUP BY分组,还使用了WITH ROLLUP对结果进行了汇总。汇

文档评论(0)

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

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

1亿VIP精品文档

相关文档