mysql学习教程,从入门到精通,SQL IN & BETWEEN 运算符(13)

1、SQL IN & BETWEEN 运算符

在本教程中,您将学习如何使用 IN 和 BETWEEN运算符并与WHERE子句一起使用。

使用范围和成员资格条件

在上一章中,我们学习了如何使用AND和OR运算符组合多个条件。但是,有时这是不够的,例如,如果您必须检查位于一个范围或一组值中的值。

这里出现了IN和BETWEEN操作符,它允许您定义一个独占范围或一组值,而不是组合单独的条件。

1.1、IN运算符

IN运算符是逻辑运算符,用于检查一组值中是否存在特定值。 其基本语法可以通过以下方式给出:

sql 复制代码
SELECT column_list FROM table_name
WHERE column_name IN (value1, value1,...);

在这里,column_list是要获取其值的数据库表的列/字段的名称,例如name,age,country等。好吧,让我们看看一些实例。

考虑我们在数据库中有一个employees表,该表具有以下记录:

以下SQL语句将仅返回dept_id为1或3的那些雇员。

sql 复制代码
SELECT * FROM employees
WHERE dept_id IN (1, 3);

执行查询后,您将获得如下结果集:

同样,您可以使用NOT IN运算符,则该运算符与IN运算符完全相反。以下SQL语句将返回除dept_id不是1或3的那些雇员以外的所有雇员。

sql 复制代码
SELECT * FROM employees
WHERE dept_id NOT IN (1, 3);

执行查询后,这次您将获得如下结果集:

1.2、BETWEEN 运算符

如果列中的值落在特定范围内,有时您想选择一行。处理数字数据时,这种类型的条件很常见。

要基于这种条件执行查询,您可以利用BETWEEN运算符。它是一个逻辑运算符,可让您指定要测试的范围,如下所示:

sql 复制代码
SELECT column1_name, column2_name, columnN_name FROM table_name WHERE column_name BETWEEN min_value AND max_value;

让我们根据雇员(employees)表上的范围条件构建和执行查询。

定义数值范围

以下SQL语句将仅返回employees表中薪水在7000到9000之间的那些雇员。

SELECT * FROM employees WHERE salary BETWEEN 7000 AND 9000;

执行后,您将获得如下输出:

±-------±-------------±-----------±-------±--------+

| emp_id | emp_name | hire_date | salary | dept_id |

±-------±-------------±-----------±-------±--------+

| 3 | Sarah Connor | 2005-10-18 | 8000 | 5 |

| 4 | Rick Deckard | 2007-01-03 | 7200 | 3 |

±-------±-------------±-----------±-------±--------+

定义日期范围

将BETWEEN运算符与日期或时间值一起使用时,请使用CAST()函数将这些值显式转换为所需的数据类型,以获得最佳结果。例如,如果在与DATE的比较中使用诸如" 2016-12-31"之类的字符串,则将其转换为DATE,如下所示:

以下SQL语句选择2006年1月1日(即" 2006-01-01")至2016年12月31日(即" 2016-12-31")之间雇用的所有雇员:

示例

SELECT * FROM employees WHERE hire_date

BETWEEN CAST('2006-01-01' AS DATE) AND CAST('2016-12-31' AS DATE);

执行查询后,您将获得如下结果集:

±-------±-------------±-----------±-------±--------+

| emp_id | emp_name | hire_date | salary | dept_id |

±-------±-------------±-----------±-------±--------+

| 4 | Rick Deckard | 2007-01-03 | 7200 | 3 |

| 5 | Martin Blank | 2008-06-24 | 5600 | NULL |

±-------±-------------±-----------±-------±--------+

定义字符串范围

虽然日期和数字范围是最常见的,但您也可以建立条件来搜索字符串范围。以下SQL语句选择名称以" O"和" Z"之间的任何字母开头的所有雇员:

示例

SELECT * FROM employees

WHERE emp_name BETWEEN 'O' AND 'Z';

执行后,您将获得如下输出:

±-------±-------------±-----------±-------±--------+

| emp_id | emp_name | hire_date | salary | dept_id |

±-------±-------------±-----------±-------±--------+

| 2 | Tony Montana | 2002-07-15 | 6500 | 1 |

| 3 | Sarah Connor | 2005-10-18 | 8000 | 5 |

| 4 | Rick Deckard | 2007-01-03 | 7200 | 3 |

±-------±-------------±-----------±-------±--------+

相关推荐
时光の尘10 分钟前
C语言菜鸟入门·关键字·float以及double的用法
运维·服务器·c语言·开发语言·stm32·单片机·c
-一杯为品-19 分钟前
【51单片机】程序实验5&6.独立按键-矩阵按键
c语言·笔记·学习·51单片机·硬件工程
以后不吃煲仔饭24 分钟前
Java基础夯实——2.7 线程上下文切换
java·开发语言
soso196825 分钟前
DataWorks快速入门
大数据·数据仓库·信息可视化
进阶的架构师25 分钟前
2024年Java面试题及答案整理(1000+面试题附答案解析)
java·开发语言
前端拾光者29 分钟前
利用D3.js实现数据可视化的简单示例
开发语言·javascript·信息可视化
The_Ticker30 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
程序猿阿伟31 分钟前
《C++ 实现区块链:区块时间戳的存储与验证机制解析》
开发语言·c++·区块链
java1234_小锋35 分钟前
Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大数据·elasticsearch·jenkins
Elastic 中国社区官方博客36 分钟前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索