- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 总结子查询的结果作为集合的使用方式: 逻辑表达式 运算符 IN NOT IN , e op x SOME,ANY , e op x ALL EXISTS NOT EXISTS 3.3.3 集合运算★ SELECT查询出来的结果是一个集合,两个查询语句的结果可以进行集合运算。这时两个查询的来源可以没有任何关系,只要求查询表达式的数目和对应数据类型相一致。 集合运算有如下几种 并集运算:取两个查询结果的并集。使用UNION关键字。 例1: SELECT city FROM locations UNION SELECT city FROM customers; 这个操作将合并完全相同的数据形成一个结果记录。如果要保留重复的记录,需要使用 UNION ALL代替UNION。 交集运算:取两个查询结果的交集,使用INTERSECT关键字。 差集运算:取两个查询结果的差集。使用MINUS(Oracle)或者EXCEPT(MSSql)关键字。 可以对集合运算的总体结果进行排序,在语句的最后面写ORDER BY。这种情况下使用序号作标识是比较方便的。 3.3.4 其他高级SELECT语言★ 一、树状查询 二、灵活的子查询 3.3.4 SELECT语句小结 如何理解SELECT 语句的执行过程? ⑤ SELECT ① FROM ② [WHERE] 简单比较,字段IN(),连接条件。组合条件 ③ [GROUP BY ④ [HAVING]] ⑥ [ORDER BY] DB先看FROM子句,若多表则构造笛卡尔积,得到所有行;循环处理每个记录,判断时满足WHERE子句条件;若有子查询,则进行内层循环,外层变量此时做常量处理;若有GROUP BY子句,记录分组,对每一组视为一个整体,判断是否满足HAVING子句条件;对所有选出的记录集筛选出SELECT子句所需字段;最后一步处理ORDER BY子句。 SQL实际执行时需要进行语法分析,产生执行计划,对执行方式进行优化。一般说来, 尽量使用连接而不是子查询,特别是子查询内部使用外查询字段值的; 尽量不把子查询作为表使用; 没有必要不要使用DISTINCT,GROUP BY,ORDER BY; 子查询中不可有ORDER BY子句。 SQL的能力 SQL对关系代数是先备的,但不是可计算性的,原因是SQL非过程化。PL/SQL加入过程控制。 SQL能力缺陷 聚组函数有限; 树状查询(闭包查询),ORACLE中有一个子句 文本检索 如:有哪些信誉好的足球投注网站,关键字5个出现2个(10)即可 3.4 TOP-N问题 TOP-N问题是一个在实践中经常遇到的典型问题。 假设有一个表ranks,其中包含一个主键字段id,一个值字段score。问题是,按照值字段的次序只查询出排名在某个范围的记录。具体区分有如下几种: M1:按照score(增序)排序,排在最前面N位的记录(基本的TOP-N问题)。如果值字段出现重复(并列)时,也要准确地取出N条记录。 M2:按照score (增序)排序,排在最前面N位的记录,并且包含所有与第N条等值的记录(返回记录数目可能大于N)。 M3:按照score (增序)排序,返回score不同值的出现位于前N个的所有记录。 M4:按照score (增序)排序,排名在N1到N2之间的记录。(广义的TOP-N问题),一般不考虑并列,只考虑记录数目。 这种问题在实际应用中经常出现,如通过网站浏览数据时,记录数目很多,通常需要分页进行显示,其中每一页都只显示若干内容。我们可以使用ORDER BY子句进行排序,但如果把所有的数据传送到应用程序,然后只显示其中某个区间的记录,将是很低效的事情。因此有必要采取一种方案能够直接查询出需要的结果。 1、专用方案 MySql对此类问题的支持最为充分。MySql提供了一个SELECT语句的选项LIMIT,后面可以跟一个或两个参数。如果是一个参数N,将只返回查询的前N个结果;如果是两个参数N1和N2,将返回结果集中从第N1条记录(从零开始计数)开始的N2个记录。配合ORDER BY子句就可以完成前面提出的问题。 例1:M1问题的MySql解。 SELECT * FROM ranks ORDER BY score LIMIT 3; 例2:M4问
文档评论(0)