首页 > 数据库技术 > 详细

SQL-过滤、排序、通配符和分组-LeetBook

时间:2021-04-17 22:52:11      阅读:49      评论:0      收藏:0      [点我收藏+]

一、过滤

SELECT * FROM mytable

WHERE col IS NULL

下表显示了 WHERE 子句可用的操作符

操作符 说明
= 等于
< 小于
> 大于
<>   != 不等于
<=   !> 小于等于
>=   !< 大于等于
BETWEEN 在两个值之间
is NULL 为NULL值

 

注:NULL 与 0、空字符串都不同

ANDOR 用于连接多个过滤条件优先处理 AND,当一个过滤表达式涉及到多个 AND 和 OR 时,可以使用 () 来决定优先级,使得优先级关系更清晰。

IN 操作符用于匹配一组值,其后也可以接一个 SELECT 子句,从而匹配子查询得到的一组值。

NOT 操作符用于否定一个条件。

二、排序

SELECT * FROM mytable

ORDER BY col1 DESC, col2 ASC

注:

  ASC:升序(默认)

  DESC:降序

三、通配符

使用 Like 来进行通配符匹配,通配符也是用在过滤语句中,但它只能用于文本字段

% 匹配 >=0 个任意字符;

_ 匹配 ==1 个任意字符;

[ ] 可以匹配集合内的字符,例如 [ab] 将匹配字符 a 或者 b。用脱字符 ^ 可以对其进行否定,也就是不匹配集合内的字符。

SELECT *

FROM mytable

WHERE col LIKE ‘[^AB]%‘    -- 不以 A 和 B 开头的任意文本

注:通配符位于开头处匹配会非常慢。

四、分组

把具有相同的数据值的行放在同一组中。

可以对同一分组数据使用汇总函数进行处理,例如求分组数据的平均值等。

指定的分组字段除了能按该字段进行分组,也会自动按该字段进行排序

SELECT col, COUNT(*) AS num

FROM mytable

GROUP BY col

1.GROUP BY 自动按分组字段进行排序,ORDER BY 也可以按汇总字段来进行排序

SELECT col, COUNT(*) AS num

FROM mytable

GROUP BY col

ORDER BY num

2.WHERE 过滤HAVING 过滤分组,行过滤应当先于分组过滤

SELECT col, COUNT(*) AS num

FROM mytable

WHERE col > 2

GROUP BY col

HAVING num >= 2

3.分组规定:

  • GROUP BY 子句出现在 WHERE 子句之后,ORDER BY 子句之前;
  • 除了汇总字段外,SELECT 语句中的每一字段都必须在 GROUP BY 子句中给出;
  • NULL 的行会单独分为一组;
  • 大多数 SQL 实现不支持 GROUP BY 列具有可变长度的数据类型。

 

SQL-过滤、排序、通配符和分组-LeetBook

原文:https://www.cnblogs.com/azhenghui/p/14672026.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!