使用 BETWEEN
运算符可以方便地筛选出在某个范围内的数据。BETWEEN
运算符用于在给定的两值之间进行范围查询,适用于数值、日期和文本数据。
基本语法
SELECT column1, column2, ...
FROM table_name
WHERE column BETWEEN value1 AND value2;
这里 value1
和 value2
是范围的起始值和结束值,范围是闭区间,即包括 value1
和 value2
。
示例数据库和表结构
假设我们有一个公司数据库,其中有两个表:employees
和 departments
。
-- 创建数据库
CREATE DATABASE company;
-- 选择数据库
USE company;
-- 创建表 departments
CREATE TABLE departments (
dept_id INT AUTO_INCREMENT PRIMARY KEY,
dept_name VARCHAR(100) NOT NULL
);
-- 创建表 employees
CREATE TABLE employees (
emp_id INT AUTO_INCREMENT PRIMARY KEY,
emp_name VARCHAR(100) NOT NULL,
emp_position VARCHAR(100),
emp_salary DECIMAL(10, 2),
hire_date DATE,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
-- 插入示例数据到 departments 表
INSERT INTO departments (dept_name)
VALUES
('HR'),
('Engineering'),
('Marketing');
-- 插入示例数据到 employees 表
INSERT INTO employees (emp_name, emp_position, emp_salary, hire_date, dept_id)
VALUES
('John Doe', 'Manager', 75000.00, '2023-10-01', 1),
('Jane Smith', 'Developer', 60000.00, '2023-09-01', 2),
('Alice Johnson', 'Analyst', 50000.00, '2023-08-01', 1),
('Bob Brown', 'Developer', 70000.00, '2023-07-01', 2),
('Charlie Brown', 'Tester', 55000.00, '2023-11-01', 3);
使用 BETWEEN 的示例
1. 筛选薪水在 50000 到 70000 之间的员工
SELECT * FROM employees
WHERE emp_salary BETWEEN 50000 AND 70000;
结果:
emp_id | emp_name | emp_position | emp_salary | hire_date | dept_id
-------|---------------|--------------|------------|------------|--------
2 | Jane Smith | Developer | 60000.00 | 2023-09-01 | 2
3 | Alice Johnson | Analyst | 50000.00 | 2023-08-01 | 1
4 | Bob Brown | Developer | 70000.00 | 2023-07-01 | 2
5 | Charlie Brown | Tester | 55000.00 | 2023-11-01 | 3
2. 筛选入职日期在 2023-08-01 到 2023-10-01 之间的员工
SELECT * FROM employees
WHERE hire_date BETWEEN '2023-08-01' AND '2023-10-01';
结果:
emp_id | emp_name | emp_position | emp_salary | hire_date | dept_id
-------|---------------|--------------|------------|------------|--------
1 | John Doe | Manager | 75000.00 | 2023-10-01 | 1
2 | Jane Smith | Developer | 60000.00 | 2023-09-01 | 2
3 | Alice Johnson | Analyst | 50000.00 | 2023-08-01 | 1
3. 筛选名字在字母序列 ‘A’ 到 ‘J’ 之间的员工
SELECT * FROM employees
WHERE emp_name BETWEEN 'A' AND 'J';
结果:
emp_id | emp_name | emp_position | emp_salary | hire_date | dept_id
-------|---------------|--------------|------------|------------|--------
3 | Alice Johnson | Analyst | 50000.00 | 2023-08-01 | 1
2 | Jane Smith | Developer | 60000.00 | 2023-09-01 | 2
1 | John Doe | Manager | 75000.00 | 2023-10-01 | 1
4. 使用 NOT BETWEEN 运算符
有时我们需要排除特定范围,可以使用 NOT BETWEEN
.
SELECT * FROM employees
WHERE emp_salary NOT BETWEEN 50000 AND 70000;
结果:
emp_id | emp_name | emp_position | emp_salary | hire_date | dept_id
-------|------------|--------------|------------|------------|--------
1 | John Doe | Manager | 75000.00 | 2023-10-01 | 1
使用 BETWEEN 和其他条件结合
5. 筛选薪水在 50000 到 70000 之间且属于 ‘Engineering’ 部门的员工
SELECT e.*
FROM employees e
JOIN departments d ON e.dept_id = d.dept_id
WHERE e.emp_salary BETWEEN 50000 AND 70000 AND d.dept_name = 'Engineering';
结果:
emp_id | emp_name | emp_position | emp_salary | hire_date | dept_id
-------|------------|--------------|------------|------------|--------
2 | Jane Smith | Developer | 60000.00 | 2023-09-01 | 2
4 | Bob Brown | Developer | 70000.00 | 2023-07-01 | 2
小结
通过使用 BETWEEN
运算符,您可以方便地筛选出在某个范围内的数据。这个运算符不仅适用于数值数据,还适用于日期和文本数据。上述示例展示了如何使用 BETWEEN
进行范围筛选,并通过结合其他条件进行复杂查询。这些操作在数据筛选、分析和报告中非常有用。