MySQL中给出了4个关键字来实现模糊查询,分别是:
like betewwn and in is null(is not null)
1.like用法
like通常与通配符(_
,%
)一起使用,用于模糊查询数据
例1:查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';
其中 %
这个字符是通配符,代表任意数据,可以为空
例2:查询员工名字第二个字符为a的员工信息
SELECT * FROM employees WHERE last_name LIKE '_a%';
其中 _
也是通配符,代表占位符,可以指代一个字符用于占位,如果我们希望数据中存在 %
和 _
这两个字符,只需要进行转义即可:
例3:查询名字中以 _
结尾的员工信息
由于我们的数据中存在通配符,所以此时需要进行转义,利用反斜线
# 写法一 SELECT * FROM employees WHERE last_name LIKE '%\_'; # 写法二,利用ESCAPE关键字指定转义字符,下面的$可以换成任意字符 SELECT * FROM employees WHERE last_name LIKE '%$_' ESCAPE '$';
2.between and用法
这个查询是用于获得数值落在某个区间的数据信息,between and是包含区间值的
例1:查询员工编号在100到120之间的员工信息
# 写法一 SELECT * FROM employees WHERE employee_id >= 100 AND employee_id <= 120; # 写法二 SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120;
3.in关键字
MySQL中的in和Python中的in关键字是一样的,都是判断给定内容是否存在另外一个集合当中,MySQL当中就是如果存在则返回true,对应的记录返回。
例1:获取红色的花或者蓝色的花
# 方式一:使用逻辑或 SELECT * FROM TABLE WHERE flower = 'red' OR flower = 'blue'; # 方式二:使用关键字in SELECT * FROM TABLE WHERE flower IN ( 'red', 'blue' );
4.is null用法
在很多情景中,我们想要查出某字段为空的记录,所以很容易写出下面的方式:
SELECT * FROM employees WHERE commission_pct = NULL;
这种写法是错误的,因为MySQL中的等号不能够判断NULL,只能通过关键字 is null来判断是否为空
# 正确写法 SELECT * FROM employees WHERE commission_pct IS NULL;
5.安全等于<=>
对于MySQL对null空类型是无法使用条件运算符进行比较的,要判断null就需要使用关键字is null,为了将这二者结合,提出了安全等于,就是可以用它判断数值信息是否相等或者是否为空。
SELECT * FROM employees WHERE commission_pct <=> NULL;