韦德国际1946英国 > 计算机网络 > sql和MySQL的语句执行顺序分析_Mysql_脚本之家,S

原标题:sql和MySQL的语句执行顺序分析_Mysql_脚本之家,S

浏览次数:186 时间:2019-12-12

SELECT语句实施种种
      SELECT语句中子句的奉行顺序与SELECT语句中子句的输入顺序是不相符的,所以并非从SELECT子句开首实行的,而是服从上面包车型地铁风度翩翩生机勃勃施行:
      开始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->O福特ExplorerDER BY子句->SELECT子句->LIMIT子句->最终结果
      每一种子句施行后都会发出叁当中级结果,供接下来的子句使用,要是一纸空文某些子句,就跳过

3-4对查询结果开展排序

从那一个顺序中大家轻巧发掘,全部的 查询语句都以从from从前实行的,在实行进度中,每一种步骤都会为下四个手续生成一个虚构表,那几个设想表将作为下二个实施步骤的输入。

二个到位的SELECT语句包罗可选的多少个子句。SELECT语句的概念如下: SELECT clause [FROM clause] [WHERE clause] [GROUP BY clause] [HAVING clau...

计算表中数量的行数
SELECT COUNT(*)
  FROM Product;

. 执行 GROUP BY 子句, 把 tb_Grade 表按 "学子姓名" 列实行分组(注:这一步开首才得以利用select中的别称,他回去的是一个游标,并非一个表,所以在where中不得以行使select中的别称,而having却得以选用,谢谢网络亲密的朋友zyt1369 提出这一个主题素材卡塔尔

SELECT语句定义
      一个成功的SELECT语句富含可选的多少个子句。SELECT语句的定义如下:
<SELECT clause> [<FROM clause>] [<WHERE clause>] [<GROUP BY clause>] [<HAVING clause>] [<ORDER BY clause>] [<LIMIT clause>]
    SELECT子句是必选的,此外子句如WHERE子句、GROUP BY子句等是可选的。
      叁个SELECT语句中,子句的相继是稳固的。举个例子GROUP BY子句不会放在WHERE子句的前头。

3.3
SELECT *
FROM Product
ORDER BY regist_date DESC, sale_price;

明日遭逢八个难题正是mysql中insert into 和update以致delete语句中能使用as小名吧?近日还在查阅,可是在查看资料时意识了有的方便的学识,给我们分享一下,就是关于sql以致MySQL语句推行种种:sql和mysql实践顺序,开掘内部机制是相仿的。最大分别是在外号的引用上。

OTiguanDE卡宴 BY子句中能够动用的列
--SELECT子句中未包含的列也可以在ORDER BY子句中使用
SELECT product_name, sale_price, purchase_price
  FROM Product
 ORDER BY product_id;

SELECT product_type, COUNT(*)
  FROM Product
 GROUP BY product_type
 ORDER BY COUNT(*);

图片 1

3-13.png

select 考生姓名, max as max总成绩 from tb_Grade where 考生姓名 is not null group by 考生姓名 having max > 600 order by max总成绩 
与聚合函数和GROUP BY子句关于的广大错误
  • 1.在SELECT子句中书写的剩余的列

在行使聚合函数时,SELECT子句只可以现身3种成分:
常数
聚合函数
GROUP BY子句中钦赐的列名(聚合键)

--发生错误
SELECT product_name, purchase_price, COUNT(*)
  FROM Product
 GROUP BY purchase_price;

原因:通过purchase_price将表分组现在,结果中的黄金时代行数据就表示大器晚成组取差别价位的货品。聚合键和商品名不是一定的。

  • 2.在GROUP BY子句中写了列的小名
--发生错误
SELECT product_type AS pt, COUNT(*)
  FROM product
 GROUP BY pt;

张冠李戴原因:SELECT子句在GROUP BY子句之后实践,pt外号还从未被定义

  • 3GROUP BY子句的结果能排序吗
    不能够,顺序随机
  • 4在WHERE子句中使用聚合函数
    首先大家依照商品连串总结数据行数:
SELECT product_type, COUNT(*)
  FROM Product
 GROUP BY product_type;

图片 2

3-5.png

若果大家想收取总个数为2的货品种类,也正是前两行,能或无法用WHERE子句来抉择吧?

SELECT product_type, COUNT(*)
  FROM Product
 WHERE COUNT(*) = 2
 GROUP BY product_type;

图片 3

3-6.png

实行错误,这是由于在SQL中聚合函数(COUNT等)只可以在SELECT子句和HAVING子句(以致O兰德讴歌RDXDER BY子句)中留存。

如上正是本文关于sql和MySQL的话语实行各样剖析的整体内容,美中不足,招待留言指正,我会及时还原我们。

相对于HAVING子句,更符合写在WHERE子句中的条件

聚合键所对应的规格,既能写在HAVING子句中,也得以写在WHERE子句中

--将条件写在HAVING子句里
SELECT product_type, COUNT(*)
  FROM Product
 GROUP BY product_type
HAVING product_type = '衣服';

--将条件写在WHERE子句里
SELECT product_type, COUNT(*)
  FROM Product
 WHERE product_type = '衣服'
 GROUP BY product_type;

WHERE子句=钦赐行所对应的条件
HAVING子句=钦命组所对应的标准化
作者建议写在WHERE子句中,节省运维时刻(WHERE子句先进行挑选)

第十四步:应用order by子句。根据order_by_condition排序vt9,当时重返的一个游标,实际不是虚构表。sql是借助集结的辩白的,集结不会先行对他的行排序,它只是成员的逻辑群集,成员的依次是不在乎的。对表举办排序的查询能够回去三个指标,那些目的包蕴特定的物理顺序的逻辑协会。那一个指标就叫游标。正因为重返值是游标,那么使用order by 子句询问无法应用于表表明式。排序是很必要资金的,除非您一定要要排序,不然最佳不用钦赐order by,最后,在此一步中是第三个也是必定要经过的道路三个方可使用select列表中别名的步调。

3-2对表举办分组

聚拢函数, 按 "总战绩" 求出总成绩中最大的有个别数值

HAVING子句

前方所钻探难题的科学解法

SELECT product_type, COUNT(*)
  FROM Product
 GROUP BY product_type
HAVING COUNT(*) = 2;

图片 4

3-7.png

利用HAVING子句时SELECT语句的相继(书写顺序):
SELECT -> FROM -> WHERE -> GROUP BY -> HAVING

SELECT product_type, AVG(sale_price)
  FROM Product
 GROUP BY product_type;

--按照商品种类分组,条件是“销售单价的平均值大于等于2500日元”
SELECT product_type, AVG(sale_price)
  FROM Product
 GROUP BY product_type
HAVING AVG(sale_price) >= 2500;

SELECT语句奉行顺序

NULL的顺序
--按照进货单价的升序进行排列
SELECT product_id, product_name, sale_price, purchase_price
  FROM Product
 ORDER BY purchase_price;

图片 5

3-11.png

排序键中蕴涵NULL时,NULL值会聚焦在初步也许结尾

第十六步:应用top选项。那时候才再次回到结果给央求者即客户。

毫无采纳列编号
--两段代码作用相同
--通过列名指定
SELECT product_id, product_name, sale_price, purchase_price
  FROM Product
 ORDER BY sale_price DESC, product_id;

--通过列编号指定
SELECT product_id, product_name, sale_price, purchase_price
  FROM Product
 ORDER BY 3 DESC, 1;

不推荐方法2

对照了弹指间,mysql和sql施行顺序为主是同样的, 规范顺序的 SQL 语句为:

聚合函数

COUNT:总括表中的记录数(行数)
SUM:计算表中数值列中多少的合计数
AVG:计算表中数值列中数量的平均值
sql和MySQL的语句执行顺序分析_Mysql_脚本之家,SQL基础教程。MAX:求出表中放肆列中数据的最大值
MIN:求出表中任性列中多少的最小值

用于汇总的函数称为聚合函数;聚合:将多行汇总为大器晚成行

二、mysql的实行各种

测算平均值
SELECT AVG(sale_price), AVG(purchase_price)
  FROM Product;

图片 6

3-2.png

purchase_price一列总共有8个数据,在那之中2个为NULL值,总计平均值时,忽视NULL,求平均值时分母是6实际不是8。

首先步:首先对from子句中的前三个表执行一个笛Carl乘积,那个时候生成虚构表 vt1

3-3为汇集结果钦点条件

始发->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->OTiguanDER BY子句->SELECT子句->LIMIT子句->最终结果 每一个子句实行后都会时有发生壹当中间结果,供接下来的子句使用,借使子虚乌有有些子句,就跳过

本文由韦德国际1946英国发布于计算机网络,转载请注明出处:sql和MySQL的语句执行顺序分析_Mysql_脚本之家,S

关键词: 韦德国 之家 语句 脚本 顺序

上一篇:程序启动那些事,的一些笔记

下一篇:没有了