精通MS-ACCESS SQL之基础篇(08)-Big Young
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-查询/SQL语句


精通MS-ACCESS SQL之基础篇(08)

发表时间:2017/11/24 11:22:18 评论(3) 浏览(5003)  评论 | 加入收藏 | 复制
   
摘 要:    SQL中WHERE与HAVING两个子句的用法。
正 文:

第八节 SQL查询中条件筛选子句:WhereHAVING

在对数据库表的查询中,并不总是查询全部记录,而大多数情况下是只查询我们关心的一部分记录,这就要用到筛选子句。在SQL查询中,havingwhere都是用来作筛选用的,那它们有什么相同与不同之处呢,现在我们来研究一下这个问题。

一、Where子句的基本用法

whereMS Access SQL语句的一个重要组成部分,通过where子句后的条件对数据表中的数据进行查询,修改,删除等。

Where 子句具有以下基本语法:

Where field = criterion

例如,在我们前面使用的示例数据库中,假设我们希望获得某位同学的电话号码,但我们只记得该同学的姓氏是“张,这时我们就可以使用Where子句来限制查询结果,以便查找到所需的电话号码,而无需在数据库中查看所有电话号码。对学生信息表,我们可以这样使用Where子句,如下所示:

Select * FROM 学生信息Where [姓名] LIKE '%'

如图8-1所示:

8-1Where子句示例

查询结果如图8-2所示:

8-2Where子句筛选结果

 

二、HAVING子句的基本用法

Access SQL中的HAVING字句用于指定包含GROUP BY子句的Select语句中显示哪些分组记录。在GROUP BY对记录进行分组之后,HAVING将显示由GROUP BY子句分组的满足HAVING子句后条件的所有记录。

HAVING子句具有以下基本语法:

Select fieldlist

FROM table

Where selectcriteria

GROUP BY groupfieldlist

[HAVING groupcriteria]

 

在这里“groupcriteria”是对分组进行筛选的条件,此表达式用来确定要显示哪些分组记录。

如在前面几节中,我们要统计学生信息表中各民族学生的人数,使用过这样的查询:

Select 民族, COUNT(姓名) AS 人数 FROM 学生信息 GROUP BY 民族;

如图8-3所示:

8-3HAVING子句用法示例

 

其查询后统计出来的结果如图8-4

8-4:使用HAVING子句进行筛选的结果

 

三、WhereHAVING两个子句同时应用

在选择查询中,有时需要同时使用WhereHAVING两个子句来对记录进行筛选,如在我们的示例数据库中,如果要对学生信息表中的不同民族的同学男女各有多少人进行统计,我们可以使用“Select 民族, COUNT(姓名) AS 人数 FROM 学生信息 Where 性别 = '' GROUP BY 民族;”进行了查询,这样我们就得出各个民族学生的人男生人数,如图8-5

8-5:同时使用WhereHAVING子句示例

查询结果如图8-6所示:

8-6WhereHAVING同时作用的筛选结果

 

四、WhereHAVING两个子句的区别

havingwhere都是用来进行条件筛选的,having是筛选组中的记录,而where是筛选整个表中的记录。Where子句不仅用于选择查询语句中,也广泛应用于InsertUpdateDelete等操作查询语句中,而having只能与group by子句配合使用,对分组进行筛选,只用在选择查询语句中。

当一个语句中同时含有wheregroup byhaving及汇总函数时,执行顺序如下:

1、执行where子句查找符合条件的数据;

2、使用group by子句对数据进行分组;对group by子句形成的组运行汇总函数计算每一组的值;

3、最后用having子句去掉不符合条件的组。

4having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。


Access软件网交流QQ群(群号:198465573)
 
 相关文章
精通MS-ACCESS SQL之基础篇(05)  【Big Young  2017/11/13】
精通MS-ACCESS SQL之基础篇(06)  【Big Young  2017/11/14】
精通MS-ACCESS SQL之基础篇(07)  【Big Young  2017/11/17】
精通MS-ACCESS SQL之基础篇(09)  【Big Young  2017/11/27】
精通MS-ACCESS SQL之基础篇(10)  【Big Young  2017/11/30】
精通MS-ACCESS SQL之基础篇(11)  【Big Young  2017/11/30】
常见问答
技术分类
相关资源
文章搜索
关于作者

Big Young

文章分类

文章存档

友情链接