网站开发步奏,wordpress 外链转内链 页面,wordpress 监督投诉,做微信小程序和网站那个简单文章目录 4.区分SQL语句的书写和执行顺序4.1书写顺序4.2执行顺序4.3总结4.4扩充#xff1a;辨别having与where的异同#xff1f;4.5聚合查询 4.区分SQL语句的书写和执行顺序
注意#xff1a;SQL 语句的书写顺序与执行顺序不是一致的
4.1书写顺序
SELECT 字段名
… 文章目录 4.区分SQL语句的书写和执行顺序4.1书写顺序4.2执行顺序4.3总结4.4扩充辨别having与where的异同4.5聚合查询 4.区分SQL语句的书写和执行顺序
注意SQL 语句的书写顺序与执行顺序不是一致的
4.1书写顺序
SELECT 字段名
FROM 表名
JOIN 表名
ON 连接条件
WHERE 筛选条件
GROUP BY 字段名
HAVING 筛选条件 #根据group by选择的字段进行条件筛选
UNION
ORDER BY 字段名
LIMIT 限制行数;4.2执行顺序
FORM选择from后面跟的表产生虚拟表1。ONON是JOIN的连接条件符合连接条件的行会被记录在虚拟表2中。JOIN如果指定了LEFT JOIN那么保留表中未匹配的行就会作为外部行添加到虚拟表2中产生虚拟表3。如果有多个JOIN链接会重复执行步骤1~3直到处理完所有表。WHERE对虚拟表3进行WHERE条件过滤符合条件的记录会被插入到虚拟表4中。GROUP BY根据GROUP BY子句中的列对虚拟表2中的记录进行分组操作产生虚拟表5。HAVING对虚拟表5进行HAVING过滤符合条件的记录会被插入到虚拟表6中。SELECTSELECT到一步才执行选择指定的列插入到虚拟表7中。UNIONUNION连接的两个SELECT查询语句会重复执行步骤1~7产生两个虚拟表7UNION会将这些记录合并到虚拟表8中。ORDER BY: 将虚拟表8中的记录进行排序虚拟表9。LIMIT取出指定行的记录返回结果集。
4.3总结
书写顺序SELECT - FROM - JOIN - ON - WHERE - GROUP BY - HAVING - UNION - ORDER BY -LIMIT
执行顺序FROM - ON - JOIN - WHERE - GROUP BY - HAVING - SELECT - UNION - ORDER BY -LIMIT
4.4扩充辨别having与where的异同
相同两者都是用作筛选条件不同 书写和执行顺序不同 having书写在、执行在分组操作之后对分组后的数据进行过滤.(临时数据表进行过滤)where分组操作执行前, 对分组前的数据 只能使用表原始列进行条件过滤真实数据表进行过滤 使用聚合函数不同 having后面可以使用聚合函数where后面不可以使用聚合函数
分组操作中的having子语句是用于在分组后对数据进行过滤的作用类似于where条件
举例
#统计各个分类商品的个数
select category_id,count(pid) from product group by category_id;#统计各个分类商品的个数,且只显示个数大于1的信息
SELECT category_id,count(pid) from product GROUP BY category_id HAVING count(*)1;#统计价格200元的 各个分类商品的个数,且只显示个数大于1的信息
select category_id,count(pid) from product where price200 group by category_id HAVING count(pid)1;4.5聚合查询 常用的五个聚合函数 count(列名)统计指定列不为NULL的记录行数 sum(列名)计算指定列的数值和如果指定列类型不是数值类型那么计算结果为0 max(列名)计算指定列的最大值如果指定列是字符串类型那么使用字符串排序运算 min(列名)计算指定列的最小值如果指定列是字符串类型那么使用字符串排序运算 avg(列名)计算指定列的平均值如果指定列类型不是数值类型那么计算结果为0