您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL Between & In

1. 定义

编程之家解释:BetweenIn操作符一般与 Where 搭配,用于操作某个范围内的数据。

2. 前言

本小节中,我们将一起学习 BetweenIn的基本使用。

前面的小节中,我们学习了诸多运算符的使用,如 = 和 Like ,这些运算符都只能作用于单个条件值。有时候,数据筛选的条件是范围,如找出年龄在18~24之,为了更加方便地这些问题, 提供了 Between 和 In 两个关键字。

Between 和 In 不仅可以用在 int 等上,还可以用于字符和日期类型。

本小节测试数据如下,请先在中执行:

DROP TABLE IF EXISTS imooc_user;CREATE TABLE imooc_user(
  username varchar(),
  age int);INSERT INTO imooc_user(username,age) VALUES('pedro', ), ('peter', ), ('faker', ), ('lucy', );

3. Between

Between 必须与 And 一起使用,表示在某某与某某之间,常与 Where 搭配,用于查找某个范围内的数据。

Between 的使用语法如下:

SELECT [col] FROM [table_name] WHERE [col] BETWEEN [val1] AND [val2];

其中table_name代表数据表,col代表字段,val表示条件值,数字 1、2 表示多字条件值。

Between 常用于查找某个范围内的数据记录。

请书写 语句,找出imooc_user表中年龄在 18~24 之。

分析:

分析题干可知年龄是条件字段,而条件值是范围,即18~24,符合 Between 和 And 的使用。

语句:

整理可得语句如下:

SELECT username, age FROM imooc_user WHERE age BETWEEN  AND ;

结果如下:

+----------+-----+
| username | age |
+----------+-----+
| pedro    | 23  |
| peter    | 18  |
| faker    | 20  |
+----------+-----+

Between 可以很好的处理范围操作,还可以与 Not 搭配表示不在某个范围内的记录。

请书写 语句,找出imooc_user表中年龄不在 18~24 之。

分析:

与例1刚好相反,在符合 Between 和 And 的前提下,NOT修饰即可。

语句:

整理可得语句如下:

SELECT username, age FROM imooc_user WHERE age NOT BETWEEN  AND ;

结果如下:

+----------+-----+
| username | age |
+----------+-----+
| lucy     | 29  |
+----------+-----+

Between 不仅可以和 Select 搭配使用,还可以搭配 Update 与 Delete。

Between 也可与 Delete 搭配用于某个范围内的记录。

请书写 语句,imooc_user表中年龄在18~24之。

分析:

几乎与例1一致,只需将 Select 改为 Delete 即可。

语句:

DELETE FROM imooc_user WHERE age BETWEEN  AND ;

成功后,imooc_user 表中的数据如下:

+----------+-----+
| username | age |
+----------+-----+
| lucy     | 29  |
+----------+-----+

4. In

In 与 Between 都可以用于范围操作,与 Between 不同的是,In 表示某某之中,且必须的罗列出所有的值。

In 的语法如下:

SELECT [col] FROM [table_name] WHERE [col] IN (val...);

In 常用于查找某个范围内的数据记录,但这个范围中的值都必须在()中罗列出来。

请书写 语句,找出imooc_user表中年龄在 18~24 之。

分析:

分析题干可知年龄是条件字段,而条件值是范围,即 18~24,可以用 In 表示该范围。

语句:

整理可得语句如下:

SELECT username, age FROM imooc_user WHERE age IN (,,,,,,);

结果如下:

+----------+-----+
| username | age |
+----------+-----+
| pedro    | 23  |
| peter    | 18  |
| faker    | 20  |
+----------+-----+

In 不仅可以查找连续范围内的记录,也可查找非连续范围内的记录。

请书写 语句,找出imooc_user表中年龄是 18 或 23 的。

分析:

与例4几乎一致,不过括号内的范围值从连续范围变成了(18,23)

语句:

整理可得语句如下:

SELECT username, age FROM imooc_user WHERE age IN (,);

结果如下:

+----------+-----+
| username | age |
+----------+-----+
| pedro    | 23  |
| peter    | 18  |
+----------+-----+

In 还可以搭配 Not 使用,查找不在范围内的数据记录。

请书写 语句,找出imooc_user表中年龄不是 18 或 23 的。

分析:

与例5恰好相反,只需在 In 前 Not 即可。

语句:

整理可得语句如下:

SELECT username, age FROM imooc_user WHERE age NOT IN (,);

结果如下:

+----------+-----+
| username | age |
+----------+-----+
| faker    | 20  |
| lucy     | 29  |
+----------+-----+

In 也可与 Update、Delete 一起搭配使用,与 Between 相比,In 更加灵活,使用也更为广泛。

5. 个人经验

如果范围条件是连续的,优先考虑使用 Between,不仅语句更为简洁,而且更加优异。

Between 只可用于连续范围的操作,而 In 还非连续范围的操作。

当 Delete 和 Update 使用范围操作是较危险的,容易引起批量数据更新和,在使用前,请仔细斟酌。


联系我
置顶