数据库中where与having区别~~~

如题所述

1.类型:

“Where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”;

“Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。

2.使用的角度:

where后面之所以不能使用聚合函数是因为where的执行顺序在聚合函数之前。

扩展资料

处理系统:

数据库是一个单位或是一个应用领域的通用数据处理系统,它存储的是属于企业和事业部门、团体和个人的有关数据的集合。数据库中的数据是从全局观点出发建立的,按一定的数据模型进行组织、描述和存储。

其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征。

数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的限制和制约。不同的用户可以按各自的用法使用数据库中的数据。

多个用户可以同时共享数据库中的数据资源,即不同的用户可以同时存取数据库中的同一个数据。数据共享性不仅满足了各用户对信息内容的要求,同时也满足了各用户之间信息通信的要求。

主要特点:

1、实现数据共享

数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

2、减少数据的冗余度

文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。

3、数据的独立性

数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数据物理结构的变化不影响数据的逻辑结构)。

4、数据实现集中控制

文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。

5、数据一致性和可维护性,以确保数据的安全性和可靠性

主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数据的正确性、有效性和相容性;③并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用

6、故障恢复

数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。

参考资料:百度百科-数据库

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2019-08-12

1.类型:

“Where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”;

“Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。

2.使用的角度:

where后面之所以不能使用聚合函数是因为where的执行顺序在聚合函数之前,

如下面这个sql语句:select  sum(score) from student  group by student.sex where sum(student.age)>100;

having既然是对查出来的结果进行过滤,那么就不能对没有查出来的值使用having,

如下面这个sql语句:  select  student.id,student.name from student having student.score >90;

扩展资料:

严格来说,数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是以一定的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享。

这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改、查由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。

参考资料:where(数据库中的一个指令)百度百科     having百度百科



本回答被网友采纳
第2个回答  推荐于2019-08-28

having 和where 都是用来筛选用的,having 是筛选组  而where是筛选记录。

他们有各自的区别:

1、当分组筛选的时候 用having。

2、其它情况用wherewhere和having的执行级别不同。

select 职工号 from 职工 where 工资>1000。

group by 职工号 having 工资>1000。

select 工资 from 职工 where 工资>1000。

group by 工资 having 工资>1000。

Having后面的从句是分组的条件,两种写法不同。

WHERE 在分组和聚集计算之前选取输入行,因此,它控制哪些行进入聚集计算, 而 HAVING 在分组和聚集之后选取分组的行。

因此,WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的,相反,HAVING 子句总是包含聚集函数,严格说来,你可以写不使用聚集的 HAVING 子句, 但这样做只是白费劲。同样的条件可以更有效地用于 WHERE 阶段。

在前面的例子里,我们可以在 WHERE 里应用城市名称限制,因为它不需要聚集,这样比在 HAVING 里增加限制更加高效,因为我们避免了为那些未通过 WHERE 检查的行进行分组和聚集计算。

本回答被网友采纳
第3个回答  2019-12-23
having 和where 都是用来筛选用的,having 是筛选组 而where是筛选记录。
他们有各自的区别:
1、当分组筛选的时候 用having。
2、其它情况用wherewhere和having的执行级别不同。
select 职工号 from 职工 where 工资>1000。

group by 职工号 having 工资>1000。

select 工资 from 职工 where 工资>1000。

group by 工资 having 工资>1000。

Having后面的从句是分组的条件,两种写法不同。

WHERE 在分组和聚集计算之前选取输入行,因此,它控制哪些行进入聚集计算, 而 HAVING 在分组和聚集之后选取分组的行。
第4个回答  2011-05-06
where和having的执行级别不同
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。
having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。

数据库中where与having区别~~~
数据库中where与having的主要区别:一、功能不同 1. WHERE子句:用于筛选数据行,在数据进入结果集之前进行过滤。它通常用于数据的初始检索。2. HAVING子句:用于筛选聚合函数的结果,如SUM、COUNT等的结果,通常与GROUP BY子句一起使用,在数据分组后进行过滤。二、应用场景不同 WHERE子句通常在数据的初始...

数据库中where与having区别~~~
“Where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”;“Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。2.使用的角度:whe...

数据库中where与having区别~~~
在数据库查询中,"where"与"having"这两个关键字有着显著的区别。首先,"where"是一个预查询约束,它在查询结果返回之前筛选数据,且不能与聚合函数一起使用,因为它的执行在聚合函数之前。相比之下,"having"用于查询结果集之后的过滤,它可以在对数据进行聚合操作之后进行筛选。换句话说,"having"可以...

mysql中的where和having子句的区别
1、where是判断数据从磁盘读入内存的时候 2、having是判断分组统计之前的所有条件 区别2 1、having子句中可以使用字段别名,而where不能使用 区别3 1、having能够使用统计函数,但是where不能使用 先分组,再判断

having和where的区别
having 和where 都是用来筛选用的,having 是筛选组 而where是筛选记录。 扩展资料 1.类型:“Where”是一个约束声明,在查询数据库的.结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”;“Having”是一个过滤声明,所谓过滤是在查询数据库的...

mysql中的where和having子句的区别
where和having的区别是 where子句对一个表的所有记录进行操作,只搜索与指定条件相匹配的记录。而having子句只对经过操作的表记录进行检索,对结果集进行更进一步的筛选。通常,having子句和group by子句相连,而where子句和select,delete和update语句相连。

数据库中having 和where有什么区别
Having是筛选组,where是筛选记录。可以这样理解:Having是先分组在进行筛选,而where是先筛选再进行分组。对于有Group by子句的SQL语句,切记与Having组合使用。但不一定要有Having子句。一般情况下分组筛选的时候用Having,其他情况下用where。select class_num,count(*) from student where score>=85 grou...

mysql中having和where的区别
having 和where 都是用来筛选用的 having 是筛选组 而where是筛选记录 他们有各自的区别 1》当分组筛选的时候 用having 2》其它情况用where --- 用having就一定要和group by连用,用group by不一有having (它只是一个筛选条件用的)--- 例子 表结构 部门编号 姓名 工资 1 aa 2000 2 bb 1200...

where和having的区别是什么?
HAVING子句:主要用于在聚合操作后进行过滤,即筛选出经过聚合后的记录或组。它是在数据已经分组并且进行了某些计算后使用的过滤条件。二、详细解释 WHERE子句的使用场景:当我们需要从数据库中检索特定条件的数据时,会使用WHERE子句。例如,如果我们只想查找年龄大于30岁的员工信息,就可以在WHERE子句中设置...

where子句和having子句的区别是什么?
1、where不能放在group by后面。2、having是跟group by连在一起用的,放在group by 后面,此时的作用相当于where。3、where后面的条件中不能有聚集函数,比如SUM0.AVG等,而HAVING可以。where子句:Where子句: Where子句仅仅用于从from子句中返回的值,from子句返回的每一行数据都会用where子句中的条件...

相似回答