在查询数据过程中,需要特定查询出一些数据,那么就需要WHERE子句了。

常用的查询条件:
1.比较运算符
2.AND,OR运算符
3.IN运算符
4.BETWEEN运算符
5.LIKE运算符
6.IS NULL 运算符
7.REGEXP正则表达式

WHERE条件基本语法如下:

select <字段名> from <表名> where <条件>;

1. 比较运算符

  • where子句中最常用到的就是比较运算符了,主要有一下:
    大于(>)、小于(<)、等于(=)、大于等于(>=)、小于等于(<=)、不等于(!=或者<>)

    实例:在学生表中查询出 “班主任Tid” 不为2的数据

    select * from students where Tid <> 2;
    

    执行结果:
    在这里插入图片描述

  • 也可以对日期的数据进行比较运算

    实例:在学生表中查询出 1995年后出生的学生数据

    select * from students where Sage >= '1995-01-01';
    --注意日期需要用引号围起来
    

    执行结果:
    在这里插入图片描述

2. AND,OR运算符

  • 如果查询的条件中有多个条件时,就需要用到AND 和 OR 运算符来进行连接

    AND运算符(需要同时满足2个条件):
    实例:在学生表中查询出 1991年后出生的学生并且为男生的数据

    select * from students where Sage >= '1993-01-01' and Ssex = '男';
    --注意日期需要用引号围起来
    

    执行结果:
    在这里插入图片描述

    OR运算符(只需要满足1个条件即可):
    实例:在学生表中查询出 1991年后出生的学生并且为男生的数据

    select * from students where Sage >= '1995-01-01' or Ssex = '女';
    

    执行结果:
    在这里插入图片描述
    AND和OR条件如果同时使用的话,AND的优先级更高

3. IN运算符

  • 如果在查询过程中,需要查出3个不同的姓名,一般情况是这样进行查询
    实例:

    SELECT* FROM students WHERE
    Sname = '李超' 
    OR Sname = '方春梅' 
    OR Sname = '阚萍';
    

    执行结果:
    在这里插入图片描述

  • 但实际这种查询比较麻烦,需要用到比较多的or条件,这种就使用IN运算符来解决

    SELECT* FROM students WHERE Sname IN ('李超','方春梅','阚萍')
    

    执行结果:
    在这里插入图片描述

  • 也可以在IN前面加上NOT ,来查询不属于列表的数据

    SELECT* FROM students WHERE Sname NOT IN ('李超','方春梅','阚萍')
    

    执行结果:
    在这里插入图片描述

4. BETWEEN运算符

  • 如果在查询过程中,要表达范围行内的条件,例如查询Tid在2-5之间的数据(包括2和5),查询条件可以这样写

    实例:

    select * from students where Sid >=2 and Sid <=5;
    

    执行结果:
    在这里插入图片描述

  • 也可以使用BETWEEN运算符

    select * from students where Sid BETWEEN 2 and 5;
    

    执行结果:
    在这里插入图片描述
    注意的是:BETWEEN和AND条件是需要结合使用的,BETWEEN和AND的区间是包含是两端点的

  • 使用BETWEEN运算符来表示日期范围

    SELECT * FROM students WHERE Sage 
    	BETWEEN '1995-01-01' 
    	AND '1998-01-01';
    

    执行结果:
    在这里插入图片描述

5. LIKE运算符

  • 在where子句中,可以使用=号来设定获取的值,例如,需要查询='李超’的名字,就可以用Sname = ‘李超’

  • 有时候我们需要获取部分数据中含有 ‘李’ 的数据,就可以使用Like运算符来执行
    1. 在使用Like的时候可以搭配下面的通配符来使用:

    符号意义
    %任何个数的字符
    _单个字符

实例:在学生表中,我们获取姓名中含有 ‘王’ 字的所有数据

select * from students where Sname LIKE '%王%'

执行结果:
在这里插入图片描述
实例:在学生表中,我们获取姓名中不包含 ‘王’ 字的所有数据

select * from students where Sname NOT LIKE '%王%'

实例:在学生表中,我们获取姓名有三个字,中间一个字为 ‘王’ 字的所有数据

select * from students where Sname LIKE '_王_'

实例:在学生表中,获取姓名的最后一个字为 ‘王’ 字的所有数据

select * from students where Sname LIKE '%王'

实例:在学生表中,获取姓名的第一个字为 ‘王’ 字的所有数据

select * from students where Sname LIKE '王%'

执行结果:
在这里插入图片描述

6. IS NULL 运算符

  • 这个主要是用于搜索空数据,用IS NULL 运算符就能找出空值

实例:在学生表中,找出姓名为空的所有数据

select * from students where Sname IS NULL

实例:在学生表中,找出姓名不为空的所有数据

select * from students where Sname IS NOT NULL

在这里插入图片描述

7. REGEXP正则表达式

  • REGEXP是正则表达式,主要是用于搜索字符串数据,与LIKE运算符相比,他的适用场景更加广泛
    REGEXP的常用用法如下:
    符号意义
    ^匹配以 X 开头的数据
    %匹配以 X 结尾的数据
    [abc]匹配含abc的数据
    [a-c]匹配含a到c之间的数据(包含a和c)

在这里插入图片描述
具体实例如下:

  • 实例1:查找含有 ‘建’ 的数据
select * from students where Sname regexp '建';

在这里插入图片描述

  • 实例2: 查找’张’字开头的数据
select * from students where Sname regexp '^张';

在这里插入图片描述

  • 实例3: 查找’华’字结尾的数据
select * from students where Sname regexp '华$';

在这里插入图片描述

  • 实例4: 查找’王’或着’李’字开头的数据
select * from students where Sname regexp '^[王李]';

在这里插入图片描述

  • 实例5: 查询Sid为2-5的数据
select * from students where Sid regexp '[2-5]';

在这里插入图片描述

  • 实例6: 查询Sid为2-5 或着8-10的数据
select * from students where Sid regexp '[2-5]|[7-9]';

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐