MySQL条件查询
真实的业务场景中,数量会非常大,有些甚至会有几百万、几千万条数据,如果不带上查询条件,一次性把全部数据查出来是不太现实的。
Categories:
SELECT 查询没有查询条件。比如只返回姓名为xx的人, 年龄为xx的人等条件
要知道,真实的业务场景中,数量会非常大,有些甚至会有几百万、几千万条数据,如果不带上查询条件,一次性把全部数据查出来是不太现实的。
所以,我们通常要求在执行 SELECT 查询时,都要带上查询条件。那这一节,我们就来学习一些简单的 WHERE 条件查询。
查询操作符
操作符 | 示例 | 描述 |
---|---|---|
= |
user_id = 1 |
等于 |
!= 或 <> |
user_id != 1 或 user_id <> 1 |
不等于 |
> |
user_id > 1 |
大于 |
< |
user_id < 1 |
小于 |
>= |
user_id >= 1 |
大于等于 |
<= |
user_id <= 1 |
小于等于 |
示例: 查找id大于1000的文章
SELECT title, user_id, create_time FROM article WHERE user_id > 1000;
区间查询
利用一个 >=
和一个 <=
,配合 AND
关键字,就可以实现区间查询
SELECT 字段名 FROM 表 WHERE user_id >= 1000 AND user_id <= 2000;
查询上下界id为1000 到 2000 的文章
其实就是规定上下界 所以可以用
BETWEEN
代替
SELECT title, user_id, create_time FROM article WHERE user_id BETWEEN 1000 AND 2000;
取反也可以, 加上 NOT
就行
SELECT title, user_id, create_time FROM article WHERE user_id NOT BETWEEN 1000 AND 2000;
感觉比Python简单
枚举查询
当区间为1, 其实就是枚举, 这就不需要指定上下界了
我们可以直接指定数值 用 IN
查询 user_id 是 1、2、3 的文章
SELECT title, user_id, create_time FROM article WHERE user_id IN (1, 2, 3);
当然可以取反. 此略
逻辑操作符
除了数据操作符外还可以进行逻辑判断
其实上文的 AND
就是一个
AND
操作符用于组合多个查询条件,只有当所有的条件都满足时,才会返回结果
SELECT title, user_id, create_time FROM article WHERE user_id != 1 AND title = 'something';
OR
与其类似
可以使用()
指定优先级
SELECT title, user_id, create_time FROM article WHERE user_id != 1 AND (title = '聊聊分库分表' OR short_title != '');
in
in查询相当于多个or条件的叠加,这个比较好理解,比如下面的查询:
select * from user where user_id in (1, 2, 3);
exists
select * from user where exists (select * from user where user_id = 0);
这两个都是条件嵌套