第08章:子查询、更改表的内容.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文档。上传文档
查看更多
第08章:子查询、更改表的内容

本章目标 子查询 子查询的分类 插入数据 更新数据 子查询及分类 子查询是嵌入到另一个SELECT语句中的一个SELECT语句。通过使用子查询,可以使用简单的语句组成强大的语句。当需要从表中选择行,而选择条件却取决于该表自身中的数据时,子查询非常有用。 子查询主要分为以下两种基本类型 单行子查询 多行子查询 另外,还有以下3种类型 多列子查询 关联子查询 嵌套子查询 单行子查询 单行子查询 内部SELECT语句给外部的SELECT语句返回0行或1行。 可以在SELECT语句后面的WHERE、HAVING、FROM后面放置单行子查询 在WHERE子句中使用子查询-1 可以将另外一个查询作为WHERE子句的子查询 例如 SELECT first_name, last_name FROM customers WHERE customer_id = (SELECT customer_id FROM customers WHERE last_name = Brown); 查询效果如下图所示: 在WHERE子句中使用子查询-2 在单行子查询还可以使用其他比较运算符,如、、、=和= 例如,WHERE子句中使用,以及子查询中使用AVG()聚集函数 SELECT product_id, name, price FROM products WHERE price (SELECT AVG(price) FROM products); 查询结果如下图所示: 在HAVING子句中使用子查询 HAVING是在分组统计后用于过滤行,同样在HAVING子句后面可以跟子查询。单行子查询将返回结果用于HAVING子句过滤分组统计的行 例如 SELECT product_type_id, AVG(price) FROM products GROUP BY product_type_id HAVING AVG(price) (SELECT MAX(AVG(price)) FROM products GROUP BY product_type_id) ORDER BY product_type_id; 查询结果如下图所示: 在FROM子句中的子查询-1 将子查询用于FROM子句的数据源。将子查询放置于FROM子句之后为其提供数据。 例如 SELECT product_id FROM (SELECT product_id FROM products WHERE product_id 3); 查询结果如下图所示: 在FROM子句中的子查询-2 例如,外联结中,products表中查询product_id和price,子查询统计商品被售出的次数 SELECT prds.product_id, price, purchases_data.product_count FROM products prds, (SELECT product_id, COUNT(product_id) product_count FROM purchases GROUP BY product_id) purchases_data WHERE prds.product_id = purchases_data.product_id; 查询结果如下图所示: 使用单行子查询常见错误-1 如果子查询返回的结果是多行,而其使用的是比较运算符,将会出现错误 例如 使用单行子查询常见错误-2 子查询不能包含ORDER BY子句,排序必须在父查询中进行 例如 SELECT product_id, name, price FROM products WHERE price (SELECT AVG(price) FROM products) ORDER BY product_id DESC; 查询结果如下图所示: 多行子查询 多行子查询 内部SELECT语句给外部的SELECT语句返回1行或多行。 在父查询中可以使用IN、ANY或ALL操作符 例如 SELECT product_id, name FROM products WHERE product_id IN (1, 2, 3); 查询结果如下所示: 在多行子查询中使用IN IN是用来检查一个的值是否在指定的列表中。可以使用子查询来返回这个列表的值。同样可以使用NOT IN检查一个值是否不在指定的列表中。 例如,查询 SELECT product_id, name FROM products WHERE product_id IN (SELECT product_id FROM products WHERE name LIKE %e%);

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档