sql中的 where 、group by 和 having 用法解析

1. where语句

在SQL中, WHERE语句用于筛选满足指定条件的数据行。可以使用一些操作符,如=、!=、<、>、<=、>=、BETWEEN、 LIKE、IN等,来比较数据。您也可以使用AND 和OR运算符将这些操作符组合起来形成更复杂的表达式。

1.1 操作符

下面是一些常用的操作符:

= :比较两个值是否相等。

<> 或!=:比较两个值是否不相等。

< :比较两个值的大小,如果左边的值小于右边的值则返回TRUE。

> :比较两个值的大小,如果左边的值大于右边的值则返回TRUE。

<= :比较两个值的大小,如果左边的值小于或等于右边的值则返回TRUE。

>= :比较两个值的大小,如果左边的值大于或等于右边的值则返回TRUE。

BETWEEN :检查一个值是否在某个范围内,范围由两个值指定,表示左边的值在右边的值和中间的值之间。

LIKE :比较一个值是否与指定的模式匹配。可以使用通配符来匹配任意字符。

IN :判断一个值是否在指定的一组值内。

1.2 AND和OR操作符

AND和OR操作符用于将多个逻辑表达式组合在一起。AND操作符表示一个数据行必须同时满足多个条件才能被检索出来,而OR操作符则表示一个数据行只需满足其中的一个条件就会被检索出来。

例如,下面的查询条件会检索出temperature在18℃到25℃之间且湿度在50%到70%之间的数据行:

SELECT * FROM Weather 

WHERE temperature BETWEEN 18 AND 25

AND humidity BETWEEN 50 AND 70;

1.3 NOT操作符

NOT操作符用于否定一个条件或表达式的计算结果。它可以与任何操作符结合使用。

例如,下面的查询条件会检索出temperature不在18℃到25℃之间的数据行:

SELECT * FROM Weather 

WHERE temperature NOT BETWEEN 18 AND 25;

2. group by语句

在SQL中,GROUP BY语句用于将数据行按照一个或多个列的值进行分组,并进行聚合计算(如求和、平均数等)。GROUP BY子句必须放在查询语句的末尾。

例如,下面的查询语句会将所有temperature相同的数据行分组,并计算出每组的平均值、最大值和最小值:

SELECT temperature, AVG(humidity), MAX(wind_speed), MIN(pressure) 

FROM Weather

GROUP BY temperature;

在上面的例子中,结果集会按照temperature列的值进行分组,然后计算每组的平均humidity、最大wind_speed和最小pressure的值。

3. having语句

在SQL中,HAVING语句用于筛选分组后的数据,并将满足指定条件的结果返回。

HAVING子句必须与GROUP BY子句一起使用。它用于筛选由GROUP BY子句分组后的行,通常包含某些聚合函数。

例如,下面的查询语句会将所有temperature大于20℃的数据行分组,并计算每组的平均humidity、最大wind_speed和最小pressure的值,然后返回temperature大于20℃且平均humidity大于60%的结果:

SELECT temperature, AVG(humidity), MAX(wind_speed), MIN(pressure) 

FROM Weather

GROUP BY temperature

HAVING temperature>20 AND AVG(humidity)>60;

在上面的例子中,HAVING子句用于筛选分组后的数据,只返回temperature大于20℃且平均humidity大于60%的结果。

4. 总结

在SQL中,WHERE、GROUP BY和HAVING语句是非常重要的查询工具。WHERE语句用于筛选满足指定条件的数据行,GROUP BY语句将数据行按照一组列的值进行分组,并进行聚合计算,HAVING语句用于筛选分组后的数据。

掌握这些语句的基本用法可以帮助开发人员以更高效的方式管理数据库,并从数据库中检索出所需的数据。

数据库标签