SQL查询语句入门篇2-四大常用查询句式

作者:jcmp      发布时间:2021-05-09      浏览量:0
上次内容讲解了SQL查询需要的基本元素。

上次内容讲解了SQL查询需要的基本元素。今天将继续介绍SQL查询的四大常用句式:① where过滤句式 ② group by分组句式 ③ order by排序句式④Having过滤句式。

句式1:where过滤句式

一般数据库表存储大量的信息,但是我们查询时并不需要用到所有数据。

这时就可以通过where过滤语句来筛选出指定的数据信息。

where过滤句式可以 参考Excel中的筛选框的逻辑 。

Excel筛选框可以筛选包含、等于、大于小于、介于等功能。

where过滤语句也能实现Excel筛选框的功能,而且相对来说更灵活,并且可以结合函数使用,大大降低了筛选操作的难度。

基本where过滤句式的用法如下:

select 字段1

from表名

wherename='张三'#条件

下图是常用的where过滤语句的操作符,联用能应付大部分筛选问题。

例1,现在有一张订单表 order,我们需要查询创建时间(created_time)在2019年1月10号-2019年6月底之间,注册城市(city)是北京、上海、广州这三个城市的订单信息(包括order_id,city,created_time,amount,product等)。

SQL代码如下:

selectorder_id,city,created_time,amount,product from order。

where created_time>'2019-01-10' andcreated_time<'2019-07-01' and city in ('北京','上海','广州')。

这个案例中我们用到了操作符>、<、and、in等,实现了需要完成的任务。

句式2: Group by 分组句式

就像where 过滤语句需要有操作符搭配运用,那么与Group by 分组语句并肩作战的就是聚合函数。

在学习Goup by 分组语句之前,首先需要了解下聚合函数的意义及用法。

聚合函数就是对对一组值执行计算,并返回一个值。

比如 求平均 就是一个聚合函数。

常用的聚合函数包含以下这些:

基本Group by 分组句式的用法如下:

select 字段1,字段2,count(*) 聚合函数

from表名

groupby字段1,字段2

例2,现在有一张订单表 order,我们需要查询创建时间(created_time)在2019年1月10号-2019年6月底之间,注册城市(city)是北京、上海、广州的订单号数量,统计方式是按每月和城市统计。

SQL代码如下:

select left(created_time,7) 月份,city,count( order_id) 订单号数量。

from order

where created_time>'2019-01-10' andcreated_time<'2019-07-01' and city in ('北京','上海','广州')。

group byleft(created_time,7) ,city。

这个案例我们用到了count()函数、where过滤语句以及group by 分组语句。

解释下逻辑:

left(created_time,7) 取的是created_time的前7位,也就是年月,加上city是我们需要分组的字段,count(order_id)就是对这两个分组字段分别进行计数。

句式3:Order by 排序句式

通常人的阅读习惯是按顺序进行的,比如看新闻或者朋友圈时都是从早到晚的顺序刷新闻。

SQL中的order by 语句就是排序句式,用来实现排序的功能。

排序方法主要有以下2种情形:

基本Order by 排序句式的用法如下:

select字段1,字段2

from表名

orderby字段1,字段2

【小贴示】Order By 语句默认是按照升序排列。

例3,现在有一张订单表 order,我们需要查询创建时间(created_time)在2019年1月10号-2019年6月底之间,注册城市(city)是北京、上海、广州的订单号数量,统计方式是按每月和城市统计,且 按月升序排列展示 。

SQL代码如下:

select left(created_time,7) 月份,city,count( order_id) 订单号数量。

from order

where created_time>'2019-01-10' andcreated_time<'2019-07-01' and city in ('北京','上海','广州')。

group byleft(created_time,7) ,city。

order byleft(created_time,7) #按月份排序,默认是升序排序。

这个案例结合了where过滤语句、group by 分组语句和Order by 排序语句。

句式4:Having过滤句式

最后再介绍一种过滤语句-Having过滤语句。

为什么有了Where语句,还要学习Having语句?

主要的原因是WHERE过滤句式无法与聚合函数一起使用。

基本Having 过滤句式的用法如下 :

select字段1,字段2

from表名

groupby字段1,字段2

having count(*)>100 #聚合函数

【小贴士】Having过滤由于要用到分组函数,所以必须要和Group by 分组句式联用。

例4,现在有一张订单表 order,我们需要统计创建时间(created_time)在2019年1月10号-2019年6月底之间,订单数量大于1000的城市名单。

代码如下:

select city,count( order_id) 订单号数量。

from order

where created_time>'2019-01-10' andcreated_time<'2019-07-01'

group bycity

havingcount( order_id)>1000 #订单数大于1000。

总结:

where过滤句式,筛选你想要的信息

Group by分组句式,统计监控必备

Order by排序句式,提高阅读舒适感

Having过滤句式,聚合函数的筛选利器

定时分享Excel/SQL/Python的一些技巧与心得。