MySQL where 操作符

MySql WHERE 操作符号

前言

在 WHERE 子句中,你可以使用任何条件对记录进行过滤。

准备工作

准备 users 表,并插入数据

sql 复制代码
# 创建用户表 users
create table users (
    id int AUTO_INCREMENT not null primary key ,
    name varchar(255) ,
    age int ,
    job varchar(255) ,
    address varchar(255)
);

# 插入数据
insert into users (id, name, age, job, address)
VALUES
    (null, '小赵', 18, '高中生', '广州' ),
    (null, '小钱', 19, '大学生', '广州' ),
    (null, '小孙', 20, '大学生', '广州' ),
    (null, '小李', 21, '大学生', '深圳' ),
    (null, '小张', 22, '大学生', '深圳' ),
    (null, '小吴', 23, '销售', '深圳' ),
    (null, '小赵', 24, '商务', '惠州' ),
    (null, '小王', 25, '程序员', '惠州' ),
    (null, '小冯', 26, '程序员', '惠州' );

1.逻辑运算符

符号 描述
AND 两个条件都成立
OR 两个条件中只要有一个成立
NOT 对条件进行取反操作
  • AND age > 21 并且 address = '惠州'
sql 复制代码
select * from users where age > 21 and address = '惠州'
  • OR age > 21 或者 address = '惠州'
sql 复制代码
select * from users where age > 21 or address = '惠州'
  • NOT 取反 age > 21 并且 取反 address = '深圳'
sql 复制代码
select * from users where not age > 21 and not address = '深圳'

2.比较运算符

符号 描述
= 等于
<> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
> 大于
< 小于
>= 大于等于
<= 小于等于

我们以 age 举例

  • age = 21
  • age <> 21
  • age > 21
  • age < 21
  • age >= 21
  • age<= 21
sql 复制代码
select * from users where age = 21 ;
sql 复制代码
select * from users where age <> 21 ;
sql 复制代码
select * from users where age > 21 ;
sql 复制代码
select * from users where age < 21 ;
sql 复制代码
select * from users where age >= 21 ;
sql 复制代码
select * from users where age<= 21 ;

3.范围运算符

符号 描述
IN 指定针对某个列的多个可能值
NOT IN 指定针对某个列的多个不可能值
  • 我们以 address 举例 取address 列中值 为广州、 惠州的数据 |
sql 复制代码
select * from users where address in ('广州','惠州')
  • 取address 列中值 不为广州、 惠州的数据
sql 复制代码
select * from users where address not in ('广州','惠州')

结果自行练习这里就不做截图了

4.模糊查询运算符

符号 描述
LIKE 搜索某种模式
NOT LIKE 搜索某种模式,但不是该模式
REGEXP 满足匹配正则
NOT REGEXP 不满足正则条件
  • like

  • 取address 列中值 包含 广州的数据

sql 复制代码
select * from users where address like '%广州%'
  • 取address 列中值 不包含 广州的数据
sql 复制代码
select * from users where address not like '%广州%'
  • regexp 正则语法后面单独讲

  • 取address 列中值 包含 广州的数据

sql 复制代码
select * from users where address regexp '广州'

5.BETWEEN AND 运算符

符号 描述
BETWEEN AND 指定一个范围,包括两个值
NOT BETWEEN AND 指定一个范围,不包括两个值
  • between and

  • 取 age 列中值 在 20 到 25 之间的数据

sql 复制代码
select * from users where age between 20 and 25 ;
  • not between and
  • 取 age 列中值 不在 20 到 25 之间的数据
sql 复制代码
select * from users where age not between 20 and 25 ;

6.IS NULL 运算符

符号 描述
IS NULL 指定某个列的值为 NULL
IS NOT NULL 指定某个列的值不为 NULL

再次插入数据

sql 复制代码
insert into users (id, name, age, job, address)
VALUES
    (null, '小陈', 27, '程序员', null );
  • is null

  • 取address 列中值为 null 的数据

sql 复制代码
select * from users where address is null ;
  • is not null

  • 取address 列中值不为 null 的数据

sql 复制代码
select * from users where address is not null ;

|

相关推荐
Thomas214313 小时前
mysql 索引面试复习
数据库·mysql·面试
小袁拒绝摆烂14 小时前
一条 SQL 从 30 秒到 300 毫秒:聊聊 MySQL 的 Hash Join
sql·mysql·哈希算法
敲代码的嘎仔15 小时前
自己设计了一个兑换码算法:自增ID + Base32转码 + 按位加权签名 + 异或混淆,面试被追问细节时终于不用慌了
java·数据库·mysql·算法·微服务·面试·职场和发展
—Miss. Z—16 小时前
计算机三级数据库技术—应用题2️⃣
数据库·mysql
这个DBA有点耶16 小时前
临时表从4.7秒到0.12秒:不是所有Using temporary都需要优化
数据库·mysql·代码规范
天衍四九-19 小时前
MySQL有哪些索引
数据库·mysql
kyrie_sakura20 小时前
MySQL学习笔记4 -- select的7大子句,子查询
笔记·学习·mysql
snow@li1 天前
服务器运维:mysql 安装笔记
运维·服务器·mysql
Rain的Java大神之路1 天前
高并发场景下MySQL数据库性能优化实战
java·后端·mysql