设为首页 收藏本站
查看: 1271|回复: 0

[经验分享] sql语句 (根据网络资料整理)

[复制链接]

尚未签到

发表于 2018-10-23 12:05:59 | 显示全部楼层 |阅读模式
  SQL 语句的语法顺序和其执行顺序完全不一样,其执行顺序大致为:
  FROM
  WHERE
  GROUP BY
  HAVING
  SELECT
  DISTINCT
  UNION
  ORDER BY
  FROM 才是 SQL 语句执行的第一步,并非 SELECT 。数据库在执行 SQL 语句的第一步是将数据
  从硬盘加载到数据缓冲区中,以便对这些数据进行操作.
  SELECT 是在大部分语句执行了之后才执行的,严格的说是在 FROM 和 GROUP BY 之后执行的。理解这一点是非常重要的,这就是你不能在 WHERE 中使用在 SELECT 中设定别名的字段作为判断条件的原因。
  无论在语法上还是在执行顺序上, UNION 总是排在在 ORDER BY 之前。很多人认为每个 UNION
  段都能使用 ORDER BY 排序,但是根据 SQL 语言标准和各个数据库 SQL 的执行差异来看,这并不是真的。尽管某些数据库允许 SQL 语句对子查询(subqueries)或者派生表(derived tables)进行
  排序,但是这并不说明这个排序在 UNION 操作过后仍保持排序后的顺序。
  SQL 语言的核心是对表的引用
  尽量不要使用逗号来代替 JOIN 进行表的连接,这样会提高你的 SQL 语句的可读性,并且可以避免一
  些错误。
  尽管没有严格的规定说明你何时应该使用 IN ,何时应该使用 EXISTS ,但是这些事情你还是应该知
  道的:
  IN比 EXISTS 的可读性更好
  EXISTS 比IN 的表达性更好(更适合复杂的语句)
  二者之间性能没有差异(但对于某些数据库来说性能差异会非常大
  SQL 语句中不能包含变量。但是你能写出类似于变量的语句,这些就叫做派生表 (as 别名.类似变量
  )
  SQL 语句中 GROUP BY 是对表的引用进行的操作
  当你应用 GROUP BY 的时候, SELECT 后没有使用聚合函数的列,都要出现在 GROUP BY 后面。
  SELECT 语句有很多特殊的规则,至少你应该熟悉以下几条:
  你仅能够使用那些能通过表引用而得来的字段;
  如果你有 GROUP BY 语句,你只能够使用 GROUP BY 语句后面的字段或者聚合函数;
  当你的语句中没有 GROUP BY 的时候,可以使用开窗函数代替聚合函数;
  当你的语句中没有 GROUP BY 的时候,你不能同时使用聚合函数和其它函数;
  有一些方法可以将普通函数封装在聚合函数中;
  集合运算( set operation):
  集合运算主要操作在于集合上,事实上指的就是对表的一种操作。从概念上来说,他们很好理解:
  DISTINCT 在映射之后对数据进行去重
  UNION 将两个子查询拼接起来并去重
  UNION ALL 将两个子查询拼接起来但不去重
  EXCEPT 将第二个字查询中的结果从第一个子查询中去掉
  INTERSECT 保留两个子查询中都有的结果并去重


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625443-1-1.html 上篇帖子: SQL Server 黑盒跟踪 -- 深入进阶 下篇帖子: 脚本实现方便配置DHCP-server
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表