一文告诉你Sql的执行顺序是怎样的_数据库其它

来源:脚本之家  责任编辑:小易  

学过 Sql,或了解过 Sql 的人,应该都会写下面这行代码:

select * from t

上面代码表示查询 t 表中的所有信息,是 Sql 查询中最基础,最简单的一行代码,你可以把它理解成是其他编程语言中的Hello World。

select *只是你迈入 Sql 大门的第一步,在真实工作中,肯定不止这么简单的。我们来看一个例子。

现在有下面一个表 t ,存储了每个商品类别的成交明细,我们需要通过下面这张表获取订单量大于10对应的类别,并从中取出订单量前3的商品类别,会有一些测试的订单(catid=c666的为测试),我们需要过滤掉。

catid orderid
c1 1
c1 2
c1 3
c2 4
c2 5
c3 6
c100 10000

要做上面的需求,我们的 Sql 可以这么写:

select
 catid,
 count(orderid) as sales
from
 t
where 
 catid <> "c666"
group by 
 catid
having
 count(orderid) > 10
order by 
 count(orderid) desc
limit 3

上面的 Sql 代码中涉及到select、from、where、group by、having、order by、limit这7个关键词,基本上包括了 Sql 中所有的查询关键词,上面的顺序是这7个关键词的语法顺序,也就是你在写代码的时候,应该按照这个顺序写,那这7个关键词的执行顺序是什么样的呢?也就是先执行哪个再执行哪个?

可以肯定的是,肯定不是从上至下执行,如果是这样子的话,就没有写这篇文章的必要啦。

我一直坚持的一个态度就是,计算机在做事的时候和人没什么两样,基本逻辑和流程都一样,毕竟计算机也是人设计出来的。那既然这样,我们就来看看,如果是我们自己手动去做上面那个需求的时候,我们会怎么去做。

首先我是不是需要知道我要从哪个表去获取我想要的,也就是from;现在我知道从哪个表获取了,可是并不是这个表里面所有的信息都是我需要的,我需要把一些不需要的去掉(比如测试订单),或是把一些我需要的筛选出来,这就是where;现在我把我需要的订单明细筛选出来,可是我想要每个品类的订单量,这个时候是不是需要做一个分组聚合,也就是group by;分组聚合后的结果也并不是我们全部都要,我们只要大于10的品类,所以需要把大于10的筛选出来,非大于10的品类过滤掉,这就是having;现在我们想要的大部分信息都已经出来了,我们就可以用select把他们查询出来了;因为我们最后需要取前三的品类,所以我们需要把查询出来的结果进行一个降序排列,即order by;最后一步就是只把前三显示出来,做一个限制就行,也就是limit。

以上就是 Sql 语句的一个基本执行顺序,总结一下就是:

from-where-groupby-having-select-orderby-limit

到此这篇关于Sql的执行顺序的文章就介绍到这了,更多相关Sql的执行顺序内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:SQL语句执行顺序图文介绍SQL语句执行顺序详解SQL语句执行深入讲解(MySQL架构总览->查询执行流程->SQL解析顺序)从零开始学习SQL查询语句执行顺序关于SQL语句中的AND和OR执行顺序遇到的问题

  • 本文相关:
  • 关于sql注入的简要演示(入坑抛砖)
  • 本地sql注射攻略分析曝光
  • 取随机记录的语句
  • etl方法与过程讲解
  • 14张图看懂什么是区块链技术
  • navicat12.1系列破解激活教程亲测有效
  • sql注入原理与解决方法代码示例
  • 数据库的acid特性术语详解
  • dba_indexes视图的性能分析
  • 数据库 sql千万级数据规模处理概要
  • 一文告诉你,散户应如何抓涨停
  • 一文告诉你大学生该如何理财
  • 食补不如睡补,一篇文告诉你怎么睡最补
  • 皮肤冬季要补油,一文告诉你如何选择使用护肤油
  • 用英语写一篇短文告诉你的朋友你喜欢的颜色以及着...
  • 大闸蟹怎么吃,一篇图文告诉你
  • 员工离职率到底应该多少才是合适的,一文告诉你
  • 一篇短文告诉你即食燕窝怎么吃
  • 一篇短文告诉你什么是实名二三四要素验证
  • 谜语:有位好朋友,天天来碰头,事事告诉你,从来...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页sql语句执行顺序图文介绍sql语句执行顺序详解sql语句执行深入讲解(mysql架构总览->查询执行流程->sql解析顺序)从零开始学习sql查询语句执行顺序关于sql语句中的and和or执行顺序遇到的问题关于sql注入的简要演示(入坑抛砖)本地sql注射攻略分析曝光取随机记录的语句etl方法与过程讲解14张图看懂什么是区块链技术navicat12.1系列破解激活教程亲测有效sql注入原理与解决方法代码示例数据库的acid特性术语详解数据库 sql千万级数据规模处理概要sql join on 用法sqlserver、mysql、oracle三种数mysql mysqldump命令使用详解sql中代替like语句的另一种写法如何让sql运行得更快关于adox的相关知识如何取得一个表的所有字段名用逗sql server下数据库链接的使用方sql server 2005的表分区sql 查询语句积累建立在tablestore的wifi设备监管系统架构mssql自动同步设置方法收藏的sqlserver技巧集大数据时代的数据库选择:sql还是nosql?写出高性能sql语句的35条方法分析sql select distinct的使用方法mssql转mysql数据库的实际操作记录三表左连接查询的sql语句写法数据库同步优化技巧分享mysql与oracle 差异比较之一数据类型
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved