MySQL之条件查询——数据库学习之旅(三)

写在之前

前面已经说完MySQL的基础查询了,现在来说说在基础查询之上的条件查询。

条件查询

语法:

select 查询列表 from 表名 where 筛选条件;

说明:
这条语句的执行顺序是:先判断所查询的表名是否存在,然后判断满足筛选条件的所有列表,最后根据查询列表输出所查询的字段。
筛选条件的分类:
①按条件表达式筛选

大于:>
小于:<
等于:=
不等于:!= 或者 <>
大于等于:>=
小于等于:<=

②按逻辑表达式筛选

共有两套标准:
&& || !
或者
and or not

③模糊筛选

like
between and
in
is null

前面的按条件和按逻辑表达式筛选我就不多说了,下面我着重介绍下模糊筛选(模糊查询)

1.模糊查询之 like

特点:
一般都与通配符使用,通配符:
% 任意多个字符,包含0个字符
_ 任意单个字符

比如说:我要查询employees表中last_name中所有含有x字符的所有字段,我们可以这么做:

select * from employees where last_name like '%a%';

这里注意一个问题,字符型的值一定要用 ’ ’ 单引号弄起来。

再比如,我要查询employees表中last_name中第三个字符是b,第5个字符是y的所有字段,我们这么做:

select * from employees where last_name like '__b_y%';

我们还有一种特殊的情况,就是我们要查询的字符就是 _ 这个,怎么办呢?
比如说,我们这次要查询的是 last_name 中第二个字符是 _ ,第四个字符是 h 的所有字段,我们可以这么来做:

select * from employees where last_name '_\__h%';

在这里,’\'相当于转义字符来使用,即 \_ 就代表 _。
当然,我们还有一种方式:
使用关键字 escape

select * from employees where last_name '_$__h%' escape '$';

这样的效果是一样的。escape关键字后面的字符会被当成转义字符来解析。这 $ 跟 \ 在这里是一样的,当然,你可以换成任何字符。

2.模糊查询之 between and

比如说,我要查询员工编号在100到120之间(包括100和120)的所有字段信息,我们可以这么做:

select * from employees where employees_id between 100 and 120; 

说明几个问题:

  1. and两端的值可以被取到
  2. and两端的值,左边的值必须小于右边的值

3.模糊查询之 in

比如说,我要查询employee_id的50号,70号,90号的所有字段:

select * from employees where employee_id in(50,70,90);

说明几点:

  1. in里面的数据类型都必须一致
  2. 如果查询的是字符,要加上单引号
  3. in里面不支持通配符的查询

4.模糊查询之 is null

比如说,我要查询employees表中com_cpt为null的员工编号,我们能不能这么写呢?:

select employee_id from employees where com_cpt = null;

注意哈,这种写法是不行的。=是不能判断null的情况的,所以,我们应该这么写:

select employee_id from employees where is null;

同样的,我们想查询com_cpt不为null的员工编号,我们这么做:

select employee_id from employees where is not null;

加个 not 就完事了。

到这,条件查询基本就结束了。

补充一个:
安全等于 <=>

  1. <=> 可以判断NULL值
  2. <=> 可以判断不同数值

那你可能想说,那直接用<=>就行了,还用 is null 干嘛。
<=> 最大的问题就在于可读性不高,所以一般不常用。

猜你喜欢

转载自blog.csdn.net/qq_44323019/article/details/105013517