语法
对单个数值、字符或时间的筛选--LIKE
LIKE 的作用
LIKE 的作用类似于用等号对字符串的比较。
比如,我们想筛选出name列中为Lucy的记录,可以利用 LIKE 使用字符串 'Lucy' 进行匹配。
SQL 会对 name 列的每一行进行匹配,找出完全符合的值并输出。
_ 下划线通配符
与直接使用等号不同,LIKE 在匹配字符串时支持使用通配符来进行模糊查找。
下划线通配符表示的是任意一个常规字符,即没有特殊含义的字符。
比如说当我想要匹配 name 列中的 Gary 与 Jary 时,G与J都是常规字符被下划线替代后,可以使用 '_ary' 来表示。
% 百分号通配符
百分号通配符 % 表示的是零到任意数量个常规字符。
比如,我们想要查找以字母 'y' 结尾的所有名称,就可以用字符串 '%y' 进行匹配。
对时间的匹配
在数据库中,时间类型是以字符的形式存储的,所以我们也可以对时间数据进行类似的匹配。
比如我们想要找到11月的订单,可以对订单时间以‘%-11-%’的方式匹配
SELECT *
FROM orders
WHERE order_time LIKE '%-11-%';
小结
处理多个条件下的数据筛选
逻辑运算符
在 SQL 中,逻辑运算符指的是对多个条件连接的运算,常见的关系有并且、或者、非这三种。
与 Python 类似,我们只需要将一个或多个条件表达式用逻辑运算符连接。
多个条件的连接
我们可以在一次查询中使用多个逻辑关系,但为了避免出错,请使用小括号来指定优先级。
像刚才的练习一样,筛选数据时经常需要:
指定一个连续的区间,比如双十一期间 (11-01~11-31);
指定一些选项,比如商品编号(200011,200012,200023)。
这些条件都是可以看做是按照范围筛选,我们可以通过BETWEEN AND 与 IN 来处理
BETWEEN AND
若我们要设定 “从X到Y之间的” 类似于这样的设定范围的条件。除了使用逻辑运算符外,可以利用BETWEEN A AND B 这样的格式。
比如,当我们要筛选2000年到2021年出生的所有人,就可以设定:
WHERE birthday BETWEEN '2000-01-01' AND '2021-12-31'
BETWEEN A AND B 组合成了一个完整的条件表达式。
其中A 和 B 是组成区间范围的两个值,第一个值为范围的起点;第二个值为范围的终点。
起点A和终点B都包含在这个范围内。
IN
若我们要设定 “满足X或Y或Z的” 类似于这样指定成员进行筛选的条件,除了使用逻辑运算符外,可以利用IN ( X,Y,Z ) 这样的格式。
比如,当我们要筛选四川省或重庆市的所有用户,就可以设定:
WHERE province IN ('四川省','重庆市')
其中,IN 运算括号中的值称为成员。
数据库会将每一行的数据依次与给定的成员匹配,只要有一个成员满足即可。