SQL学习之between操作符

目录

  • 参考源
  • SQL between 操作符
  • 示例数据
  • 基本使用
  • 建议

参考源

  • 简单教程
    • https://www.twle.cn/l/yufei/sql/sql-basic-between.html
  • 菜鸟教程
    • https://www.runoob.com/sql/sql-between.html

SQL between 操作符

SQL between 操作符选取介于两个值之间的数据范围内的值这些值可以是数值、文本或者日期

select column_name from table_name where column_name between value1 and value2;

注意:
不同的数据库中,between 操作符会产生不同的结果:

  • 在某些数据库中,between选取介于两个值之间但不包括两个测试值的字段
  • 在某些数据库中,between选取介于两个值之间且包括两个测试值的字段(MySQL 属于这个)
  • 在某些数据库中,between选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段

示例数据

CREATE DATABASE IF NOT EXISTS hardy_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

USE hardy_db;

DROP TABLE IF EXISTS lesson;

CREATE TABLE lesson (
	id INT ( 11 ) NOT NULL PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR ( 32 ) DEFAULT '',
	views INT ( 11 ) NOT NULL DEFAULT 0,
	created_at TIMESTAMP 
);

INSERT INTO lesson ( id, name, views, created_at )
VALUES
	( 1, 'Python3 基础教程', 981, '2019-03-18 13:52:03' ),
	( 2, 'JavaScript 基础教程', 73, '2019-03-18 16:03:32' ),
	( 3, 'Ruby 基础教程', 199, '2019-04-01 06:16:14' ),
	( 4, 'SQL 基础教程', 533, '2019-05-02 08:13:42' ),
	( 5, 'Linux 基础教程', 1000, '2019-06-02 08:13:42' );

基本使用

between操作符

  1. 下面的 SQL 语句选取 id 介于 1 和 3 之间的所有课程

    select * from lesson where id between 1 and 3;
    

    运行结果如下:

    mysql> select * from lesson where id between 1 and 3;
    +----+---------------------+-------+---------------------+
    | id | name                | views | created_at          |
    +----+---------------------+-------+---------------------+
    |  1 | Python3 基础教程    |   981 | 2019-03-18 13:52:03 |
    |  2 | JavaScript 基础教程 |    73 | 2019-03-18 16:03:32 |
    |  3 | Ruby 基础教程       |   199 | 2019-04-01 06:16:14 |
    +----+---------------------+-------+---------------------+
    3 rows in set (0.00 sec)
    

如果想要选取不在某个区间的数据,可以使用 not between

  1. 下面的 SQL 语句选取 id 不在 1 和 3 之间的所有课程

    select * from lesson where id not between 1 and 3;
    

    运行结果如下:

    mysql> select * from lesson where id not between 1 and 3;
    +----+----------------+-------+---------------------+
    | id | name           | views | created_at          |
    +----+----------------+-------+---------------------+
    |  4 | SQL 基础教程   |   533 | 2019-05-02 08:13:42 |
    |  5 | Linux 基础教程 |  1000 | 2019-06-02 08:13:42 |
    +----+----------------+-------+---------------------+
    2 rows in set (0.00 sec)
    

VARCHAR文本类型上使用 between 操作符

  1. 下面的 SQL 语句选取 name 介于 ‘O’ 和 ‘S’ 之间字母开始的所有课程

    select * from lesson where name between 'O' and 'S';
    

    运行结果如下:

    mysql> select * from lesson where name between 'O' and 'S';
    +----+------------------+-------+---------------------+
    | id | name             | views | created_at          |
    +----+------------------+-------+---------------------+
    |  1 | Python3 基础教程 |   981 | 2019-03-18 13:52:03 |
    |  3 | Ruby 基础教程    |   199 | 2019-04-01 06:16:14 |
    +----+------------------+-------+---------------------+
    2 rows in set (0.00 sec)
    

VARCHAR文本类型上使用 not between 操作符

  1. 下面的 SQL 语句选取 name 不介于 ‘O’ 和 ‘S’ 之间字母开始的所有课程

    select * from lesson where name not between 'O' and 'S';
    

    运行结果如下:

    mysql> select * from lesson where name not between 'O' and 'S';
    +----+---------------------+-------+---------------------+
    | id | name                | views | created_at          |
    +----+---------------------+-------+---------------------+
    |  2 | JavaScript 基础教程 |    73 | 2019-03-18 16:03:32 |
    |  4 | SQL 基础教程        |   533 | 2019-05-02 08:13:42 |
    |  5 | Linux 基础教程      |  1000 | 2019-06-02 08:13:42 |
    +----+---------------------+-------+---------------------+
    3 rows in set (0.00 sec)
    

DATETIME日期类型列上使用 between 操作符

  1. 下面的 SQL 语句选取 created_at 介于 2019-01-01 16:03:32 和 2019-12-01 06:16:14 之间的数据

    select * from lesson where created_at between '2019-01-01 16:03:32'  and '2019-12-01 06:16:14';
    

    运行结果如下:

    mysql> select * from lesson where created_at between '2019-01-01 16:03:32'  and
    '2019-12-01 06:16:14';
    +----+---------------------+-------+---------------------+
    | id | name                | views | created_at          |
    +----+---------------------+-------+---------------------+
    |  1 | Python3 基础教程    |   981 | 2019-03-18 13:52:03 |
    |  2 | JavaScript 基础教程 |    73 | 2019-03-18 16:03:32 |
    |  3 | Ruby 基础教程       |   199 | 2019-04-01 06:16:14 |
    |  4 | SQL 基础教程        |   533 | 2019-05-02 08:13:42 |
    |  5 | Linux 基础教程      |  1000 | 2019-06-02 08:13:42 |
    +----+---------------------+-------+---------------------+
    5 rows in set (0.00 sec)
    

建议

一般情况下,不推荐使用 between

因为 BETWEEN 并不是所有开发者都熟悉,而且不同数据库实现有不一样的实现
我们可以用 >< 代替,比如下面的 SQL 语句选取 id 介于 1 和 3 之间的所有课程

select * from lesson where id >= 1 and id <= 3;

运行结果如下:

mysql> select * from lesson where id >= 1 and id <= 3;
+----+---------------------+-------+---------------------+
| id | name                | views | created_at          |
+----+---------------------+-------+---------------------+
|  1 | Python3 基础教程    |   981 | 2019-03-18 13:52:03 |
|  2 | JavaScript 基础教程 |    73 | 2019-03-18 16:03:32 |
|  3 | Ruby 基础教程       |   199 | 2019-04-01 06:16:14 |
+----+---------------------+-------+---------------------+
3 rows in set (0.00 sec)

效果是一样的。

你可能感兴趣的:(SQL,sql,between)