Mysql基础教程(07):BETWEEN

MySQL BETWEEN 用法与实例

本文介绍了在 MySQL 数据库中,如何使用 BETWEEN 运算符确定一个值是否介于某两个值之间。

BETWEEN 运算符确定一个值是否介于某两个值之间。BETWEEN 运算符常用于比较数字和日期类型的数据

MySQL BETWEEN语法

BETWEEN 运算符是一个三目运算符,它需要 3 个操作数。下面 BETWEEN 运算符的语法:

sql 复制代码
expression BETWEEN min AND max
expression NOT BETWEEN min AND max

使用说明:

  • expression 可以是一个字段名、值或其他的表达式(比如函数调用、运算等)。
  • min 是范围的最小值(包含)
  • max 是范围的最大值(包含)
  • AND 是一个固定的连接词,用来连接 minmax
  • NOT 是否定运算符,NOT BETWEEN 表达的含义与 BETWEEN 相反。

BETWEEN 运算符相当于是下面写法的简写形式:

sql 复制代码
expression >= min AND expression <= max

NOT BETWEEN 运算符相当于是下面写法的简写形式:

sql 复制代码
expression < min OR expression > max

MySQL BETWEEN运算规则

当字段的值或者给定的值介于 min 和 max 两个值之间时,BETWEEN 运算符返回 1。否则,返回 0

BETWEEN 运算规则如下:

  • 如果左侧的 expression 介于 min 和 max 之间时, BETWEEN 返回 1,否则返回 0。
sql 复制代码
SELECT
    1 BETWEEN 1 AND 3,
    2 BETWEEN 1 AND 3,
    3 BETWEEN 1 AND 3,
    4 BETWEEN 1 AND 3;
sql 复制代码
+-------------------+-------------------+-------------------+-------------------+
| 1 BETWEEN 1 AND 3 | 2 BETWEEN 1 AND 3 | 3 BETWEEN 1 AND 3 | 4 BETWEEN 1 AND 3 |
+-------------------+-------------------+-------------------+-------------------+
|                 1 |                 1 |                 1 |                 0 |
+-------------------+-------------------+-------------------+-------------------+
  • 如果 expression, min, max 至少有一个 NULL 时, BETWEEN 运算符的返回 NULL。
sql 复制代码
SELECT
    NULL BETWEEN 1 AND 3,
    1 BETWEEN NULL AND 3,
    1 BETWEEN 1 AND NULL;
sql 复制代码
+----------------------+----------------------+----------------------+
| NULL BETWEEN 1 AND 3 | 1 BETWEEN NULL AND 3 | 1 BETWEEN 1 AND NULL |
+----------------------+----------------------+----------------------+
|                 NULL |                 NULL |                 NULL |
+----------------------+----------------------+----------------------+

MySQL BETWEEN实例

以下SQL 语句使用BETWEEN检索学生年龄位于1920之间的学生:

sql 复制代码
SELECT *
FROM students
WHERE age BETWEEN 19 AND 20;
sql 复制代码
+------------+--------+------+--------+
| student_id | name   | age  | gender |
+------------+--------+------+--------+
|          3 | 李总结 |   19 | 男     |
|          7 | 刘星   |   19 | 女     |
|         10 | 战书   |   19 | 男     |
|         12 | 赵云   |   20 | 男     |
+------------+--------+------+--------+
4 rows in set (0.00 sec)

因为MINMAX的值是包含的,所以查询的实际是学生年龄>=19且<=20之间的。

此 SQL 语句与下面不使用 BETWEEN 的语句的结果相同:

sql 复制代码
SELECT *
FROM students
WHERE age >= 19 AND age <= 20;

NOT BETWEEN

以下 SQL 语句使用 BETWEEN 运算符检索年龄不在1920之间的学生:

sql 复制代码
SELECT *
FROM students
WHERE age NOT BETWEEN 19 AND 20;
sql 复制代码
+------------+--------+------+--------+
| student_id | name   | age  | gender |
+------------+--------+------+--------+
|          1 | 丁一   |   18 | 男     |
|          2 | 解放   |   18 | 男     |
|          4 | 周末离 |   18 | 女     |
|          5 | 谢村花 |   18 | 女     |
|          6 | 周一   |   18 | 女     |
|          8 | 夏雨   |   18 | 男     |
|          9 | 夏天   |   18 | 男     |
|         11 | 周易   |   18 | 女     |
+------------+--------+------+--------+
8 rows in set (0.00 sec)

此 SQL 语句与下面不使用 NOT BETWEEN 的语句的结果相同:

sql 复制代码
SELECT *
FROM students
WHERE age < 19 OR age > 20;

这里,因为students表中没有年龄大于20的学生,所以查询的结果中不包含年龄大于20的学生。

结论

本文通过实例介绍了 MySQL 中 BETWEEN 运算符的语法和用法。 BETWEEN 运算符的用法要点如下:

  • BETWEEN 运算符来测试一个值是否位于一个数值区间或者时间区间内。
  • BETWEEN min AND max 中 min 是区间的最小值,max 是区间的最大值。
  • expression BETWEEN min AND maxexpression >= min AND expression <= max 结果相同。
  • BETWEEN 运算符可以结合 NOT 运算符进行否定操作。
  • expression NOT BETWEEN min AND maxexpression < min OR expression > max 结果相同。

◀️ Mysql基础教程(06):NOT IN

Mysql基础教程(08):LIKE ▶️

相关推荐
superman超哥28 分钟前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba
engchina1 小时前
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询
数据库·python·neo4j
engchina1 小时前
使用 Cypher 查询语言在 Neo4j 中查找最短路径
数据库·neo4j
尘浮生1 小时前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·maven·intellij-idea
威哥爱编程1 小时前
SQL Server 数据太多如何优化
数据库·sql·sqlserver
小华同学ai1 小时前
AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
数据库·信息可视化·开源
Acrelhuang2 小时前
安科瑞5G基站直流叠光监控系统-安科瑞黄安南
大数据·数据库·数据仓库·物联网
十叶知秋3 小时前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试
瓜牛_gn4 小时前
mysql特性
数据库·mysql
奶糖趣多多5 小时前
Redis知识点
数据库·redis·缓存