Mysql基础教程(06):NOT IN

数据准备

首先创建一个数据库educational_manage,记住字符集排序规则如下选择:
在这里插入图片描述
接着创建表和数据,具体的sql代码如下:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for students
-- ----------------------------
DROP TABLE IF EXISTS `students`;
CREATE TABLE `students`  (
  `student_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `age` int(11) NULL DEFAULT NULL,
  `gender` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`student_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of students
-- ----------------------------
INSERT INTO `students` VALUES (1, '丁一', 18, '男');
INSERT INTO `students` VALUES (2, '解放', 18, '男');
INSERT INTO `students` VALUES (3, '李总结', 19, '男');
INSERT INTO `students` VALUES (4, '周末离', 18, '女');
INSERT INTO `students` VALUES (5, '谢村花', 18, '女');
INSERT INTO `students` VALUES (6, '周一', 18, '女');
INSERT INTO `students` VALUES (7, '刘星', 19, '女');
INSERT INTO `students` VALUES (8, '夏雨', 18, '男');
INSERT INTO `students` VALUES (9, '夏天', 18, '男');
INSERT INTO `students` VALUES (10, '战书', 19, '男');
INSERT INTO `students` VALUES (11, '周易', 18, '女');

SET FOREIGN_KEY_CHECKS = 1;

MySQL NOT IN 使用说明

NOT ININ 的否定操作符,本文通过实例介绍了 MySQL 中如何使用 NOT IN 判断一个值是否不包含在一个值列表中

NOT 是一个逻辑运算符,用来用来否定一个操作。NOT IN 是 IN 的否定操作符。

MySQL NOT IN 语法

NOT IN 和 IN 用法几乎一样,只是在 IN 前面添加一个 NOT 关键字,IN 的否定操作符。 NOT IN 语法如下:

expression NOT IN (value1, value2, ...)

用法说明:

  • NOT 是一个否定逻辑运算符。
  • expression 可以是一个字段名、值或其他的表达式(比如函数调用、运算等)。
  • (value1, value2, …) 是一个值列表,多个值之间使用 , 分隔,并使用小括号 () 将它们包围起来。
  • value1 是具体的值,比如:1, 2, ‘A’, ‘B’ 等。
  • (value1, value2, …) 最少可以是 1 个值,比如 (1), (‘A’)。

MySQL NOT IN运算规则

NOT IN 检查一个字段或值是否不包含于一个值列表中,如果值不包含在值列表中,返回 1,否则返回 0。

NOT IN 操作符想弹雨多个 OR 组合操作的否定操作,比如下面的语句:

name NOT IN ('Alice', 'Tim', 'Jack')

相当于下面的or语句

NOT (name = 'Alice' OR name = 'Tim' OR name = 'Jack')

由于 = 的反义词是 <>,因此也相当于下面的语句:

name <> 'Alice' AND name <> 'Tim' AND name <> 'Jack'

NOT IN 运算符的运算规则如下:

  • 左侧和右侧都没有 NULL 时,右侧值列表不包含左侧的值时返回 1,否则返回 0。
SELECT 1 NOT IN (1, 2), 3 NOT IN (1, 2), 'A' NOT IN ('A', 'B'), 'C' NOT IN ('A', 'B');
+-----------------+-----------------+-----------------------+-----------------------+
| 1 NOT IN (1, 2) | 3 NOT IN (1, 2) | 'A' NOT IN ('A', 'B') | 'C' NOT IN ('A', 'B') |
+-----------------+-----------------+-----------------------+-----------------------+
|               0 |               1 |                     0 |                     1 |
+-----------------+-----------------+-----------------------+-----------------------+
  • 左侧操作数为 NULL,返回 NULL。
SELECT NULL NOT IN (1, 2), NULL NOT IN (1, 2, NULL);
+--------------------+--------------------------+
| NULL NOT IN (1, 2) | NULL NOT IN (1, 2, NULL) |
+--------------------+--------------------------+
|               NULL |                     NULL |
+--------------------+--------------------------+
  • 当右侧值列表含有 NULL,如果包含左侧的非 NULL 值,返回 0,否则返回 NULL
SELECT 1 NOT IN (1, NULL), 2 NOT IN (1, NULL);
+--------------------+--------------------+
| 1 NOT IN (1, NULL) | 2 NOT IN (1, NULL) |
+--------------------+--------------------+
|                  0 |               NULL |
+--------------------+--------------------+

MySQL NOT IN实例

在实际开发中,我们会在 SELECT、UPDATE、DELETE 语句中的 WHERE 子句中使用 NOT IN 运算符。在 NOT IN 运算符中,除了与值列表比较,还可能与子查询进行比较。

我们以上述创建的数据库表为例,进行演示:

SELECT *
FROM students
WHERE name NOT IN ('丁一', '周一', '周易');
+------------+--------+------+--------+
| student_id | name   | age  | gender |
+------------+--------+------+--------+
|          2 | 解放   |   18 ||
|          3 | 李总结 |   19 ||
|          4 | 周末离 |   18 ||
|          5 | 谢村花 |   18 ||
|          7 | 刘星   |   19 ||
|          8 | 夏雨   |   18 ||
|          9 | 夏天   |   18 ||
|         10 | 战书   |   19 ||
+------------+--------+------+--------+
8 rows in set (0.03 sec)

结论

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

  • NOT IN 是 IN 运算符的否定操作
  • NOT IN 检查左侧值是否不包含于右侧的值列表中。

← Mysql基础教程(05):IN

Mysql基础教程(07):BETWEEN →

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值