数据库语句where、on、having的区别
where on having 的区别
where on having都是查询条件,可以筛选出符合条件的数据,三者的主要区别是限制条件起作用的时机不同。
执行顺序: ON------>WHERE------>HAVING
where和having
①where的筛选单位是数据行,符合条件的数据行才会被筛选出来,
where
子句在GROUP BY
分组和聚合函数之前对数据行进行过滤;所以where中不可以使用聚合函数。where起作用的时机在having之前。
②having不能单独使用,只能出现在GROUP BY子句之后,
having
子句对GROUP BY
分组和聚合函数之后的数据行进行过滤。所以having中可以使用聚合函数来筛选分组。③having中可以出现的条件:聚合函数以及分组后能得到的数据的列名(即只能使用分组字段或者聚合函数。)
从性能的角度来说,
HAVING
子句中如果使用了分组字段作为过滤条件,应该替换成WHERE
子句;因为WHERE
可以在执行分组操作和计算聚合函数之前过滤掉不需要的数据,性能会更好。having的条件通常为聚合函数。
总结就是:where用于分组和聚合函数之前对数据进行过滤,having用于聚集函数计算结果出来之后筛选结果,符合条件的分组才会被返回。
on 和where
①on是用来限制表和表之间连接的条件。
②在左外连接中,ON会返回左表中的所有记录;在右外连接中,ON会返回右表中的所有记录。如果是内连接,where和on的作用一样
③不符合on条件的数据行不会出现在临时表中(过滤数据),where根据on条件后得到的结果筛选出符合where条件的数据行。
总的来说,ON根据限制条件对数据行记录进行过滤,然后产生临时表;而WHERE是在临时表生产之后,根据限制条件从临时表中筛选结果。
因为ON限制条件发生时间较早,临时表的数据集要小,因此ON的性能要优于WHERE。
数据库语句where、on、having的区别相关推荐
- mysql id in set_mysql数据库中find_in_set()和in()用法区别
mysql数据库中find_in_set()和in()用法区别 (2015-07-19 08:30:21) 标签: mysql数据库 find_in_set 在mysql中in可以包括指定的数字,而f ...
- oracle逻辑备份和物理备份,oracle数据库物理备份和逻辑备份区别
oracle数据库物理备份和逻辑备份区别 ORACLE中数据备份分为物理备份和逻辑备份两种.物理备份就是转储ORACLE物理文件(如数据文件.控制文件.归档日志文件等),一旦数据库发生故障,可以利用这 ...
- 电子表格和oracle,##请问数据库和电子表格之间有什么区别
简述电子表格与数据库在技术思想和方法上的区别 Excel:处理的工具.对于数据格式没有强的要求,安全级别很低,运算灵活,本操作. 数据库:SQL Server/Oracle等.数据格式有非常严格的要求 ...
- MySQL数据库——语句
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.MySQL数据库语句 (一).按关键字排序 1.可进行多字段的排序 (二).单字段排序 1.按分数排序,默认不指定 ...
- 金仓数据库KingbaseES数据库中存储过程和函数的区别
关键字:存储过程 函数 KingbaseES数据库中存储过程和函数的区别如下表所示: 存储过程 函数 1 用于在数据库中完成特定的操作或者任务(如插入.删除等) 用于特定的数据(如选择) 2 程序头 ...
- oracle中call用法,Oracle数据库中 call 和 exec的区别
Oracle数据库中 call 和 exec的区别 今天发现了一个小东西,觉得很有意思,查找了一些资料,跟大家分享一下: 在sqlplus中: 在第三方提供的工具(如:plsqldev) 总结: ex ...
- mysql 计算列的和_MySQL数据库语句,如何计算某一列的和?
MySQL数据库语句,计算某一列的和用select sum(b) from a就可以了. 下面来补充一些MySql的基本操作命令. 注: <>表示参数.[]表示可选项 连接数据库:mysq ...
- mysql5.7语句建库_MySQL5.7.14下载安装图文教程及MySQL数据库语句入门大全
如何下载: 我先去MySQL首页下载最新版本的MySQL-链接:https://www.mysql.com/downloads/ 进入此界面下载: Downloads–>MySQL Commun ...
- SQL点滴31—SQL语句中@@IDENTITY和@@ROWCOUNT区别
原文:SQL点滴31-SQL语句中@@IDENTITY和@@ROWCOUNT区别 SQL语句中@@IDENTITY和@@ROWCOUNT区别 在一条 INSERT.SELECT INTO 或大容量复制 ...
- Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net...
Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net 1. -catalog与schema的设计区别1 ...
最新文章
- base64开源库介绍及使用
- Lync server 2013 之office web apps server 搭建步骤
- Oracle的下载安装教程以及所出现的问题
- python1~10阶乘while_Python3基础 while 阶乘
- 43个PSD to XHTML,CSS教程
- 利用UrlRewrite,asp.net动态生成htm页面(补充说明)
- Scheme调试手册(四)
- [R时间序列]ARMA模型如何分辨拖尾与截尾
- ttl接地是高电平还是低电平_TTL 门电路输入端分别接大电阻接地,小电阻接地,或空接,输入的是什么电平???跟是什么类型的门电路......
- java实现对称加密—数据库密码加解密
- 深入浅出通信原理知识点10
- 论分布式存储系统架构设计
- 计算机技术 安防 工程师考试,2020年上半年信息安全工程师考试报考指南
- java中怎么画弧线加粗,CAD中怎么把一段线、曲线或圆弧加粗
- 【Go】Go 语言运算符及其优先级
- antony.net
- 一份完整的app产品运营推广方案,app推广运营的方法(二
- word脚注:文字与分隔符间的空格删除
- adblock plus 广告过滤器的使用
- 计算机班内排名公式,巧用Excel数组公式统计各班优秀人数EXCEL基本教程 -电脑资料...
热门文章
- topaz sharpen ai怎么设置为中文
- 利用J2ME制作的手机游戏----贪吃蛇
- java计算机毕业设计汽车出租平台源代码+数据库+系统+lw文档
- Elasticsearch概述
- Ubuntu 18.04 修改 ulimit
- 数创新生态 智启新未来,2023鼎桥全球生态大会圆满举办
- 计算工资及所得税java_根据最新税法的相关规定,个人所得税工资、薪金的计算适用( )...
- Stata: 交叉验证简介
- 一个有惊无险的医疗卡项目
- uml中的各种符号表示什么意义与关系