MySQL - NOT 操作符

你好啊,未来的数据库大师们!今天,我们将要深入MySQL NOT操作符的神奇世界。如果你是新手,不用担心——我会作为你的友好向导,带领你完成这次冒险,到了最后,你将会像一个专业人士一样熟练使用NOT操作符!

MySQL - NOT Operator

MySQL NOT 操作符

NOT操作符就像是MySQL世界的叛逆者。它关于否定,颠覆事物,并对条件说“不”。想象你是一名老师(就像我一样!),你想找到所有没有提交作业的学生。这时NOT就派上用场了!

让我们从一个简单的例子开始:

SELECT * FROM students WHERE NOT grade = 'A';

这个查询会获取所有没有得到A的学生。就像说:“展示给我除了A学生以外的所有人。”很酷吧?

下面是另一个例子:

SELECT * FROM products WHERE NOT price > 100;

这个查询会给我们所有不超过100美元的产品。这是一种狡猾的说法,意思是“展示给我100美元或以下的产品。”

NOT 与 IN 操作符结合

现在,让我们升级一下,将NOT与IN操作符结合起来。IN操作符就像是一个VIP名单,而NOT IN则是说“名单上没有的每个人”。

SELECT * FROM fruits WHERE name NOT IN ('apple', 'banana', 'orange');

这个查询会显示除了苹果、香蕉和橙子之外的所有水果。就像有一个水果碗,然后挑出不是那三种水果的所有东西。

NOT 与 IS NULL 操作符结合

数据库中的NULL值就像幽灵一样——它们在那里,但又不在。NOT IS NULL操作符帮助我们找到所有非幽灵值。

SELECT * FROM customers WHERE phone_number IS NOT NULL;

这个查询会找到所有提供了电话号码的客户。就像是喊出“Marco!”然后等待那些能回应“Polo!”的人。

NOT 与 LIKE 操作符结合

LIKE操作符用于模式匹配,而NOT LIKE是它的淘气双胞胎。它非常适合用于查找不符合特定模式的事物。

SELECT * FROM books WHERE title NOT LIKE 'The%';

这个查询会找到所有标题不是以“The”开头的书籍。就像是整理书架,把所有以“The”开头的书放在一边,其余的放在另一边。

NOT 与 BETWEEN 操作符结合

BETWEEN帮助我们找到范围内的值,而NOT BETWEEN则相反。就像设置一个“儿童专属”区域,然后找到所有不允许进入的人。

SELECT * FROM employees WHERE age NOT BETWEEN 25 AND 35;

这个查询会找到所有年龄小于25岁或大于35岁的员工。这是分割数据的好方法!

NOT 与 UPDATE 语句结合

NOT操作符不仅用于SELECT语句。我们也可以在UPDATE语句中使用它!让我们看一个例子:

UPDATE inventory SET in_stock = 0 WHERE NOT product_id IN (101, 102, 103);

这个查询更新库存,将所有产品设置为缺货,除了产品ID为101、102和103的产品。就像是清空你的商店,但保留几个特殊物品。

NOT 与 DELETE 语句结合

我们也可以在DELETE语句中使用NOT。使用这个时要小心——它很强大!

DELETE FROM old_records WHERE NOT date_created > '2020-01-01';

这个会删除所有在2020年之前创建的记录。就像是进行一次大清理,只保留较新的东西。

在客户端程序中使用 NOT 操作符

现在,让我们看看如何在客户端程序中使用NOT操作符。这里有一个简单的Python例子,使用MySQL连接器:

import mysql.connector

# 连接到数据库
cnx = mysql.connector.connect(user='your_username', password='your_password',
host='127.0.0.1', database='your_database')
cursor = cnx.cursor()

# 执行一个带有NOT的查询
query = "SELECT * FROM students WHERE NOT grade = 'F'"
cursor.execute(query)

# 获取并打印结果
for (id, name, grade) in cursor:
print(f"学生 {id}: {name} - 成绩: {grade}")

# 关闭连接
cursor.close()
cnx.close()

这个脚本连接到一个MySQL数据库,运行一个查询来找到所有没有得到F的学生,并打印出他们的信息。就像是报告卡日,但只针对那些通过考试的学生!

就这样,伙计们!你们刚刚完成了MySQL NOT操作符的旋风之旅。记住,在数据库的世界里,有时候知道你不需要什么和需要什么是同样重要的。NOT操作符在这些情况下是你的忠实助手。

继续练习,保持好奇心,在你意识到之前,你将能够像专业人士一样在数据库中熟练使用NOT操作符!快乐查询!

操作符组合 示例 描述
NOT WHERE NOT condition 否定一个条件
NOT IN WHERE column NOT IN (value1, value2, ...) 排除指定的值
IS NOT NULL WHERE column IS NOT NULL 查找非空值
NOT LIKE WHERE column NOT LIKE pattern 排除匹配模式的值
NOT BETWEEN WHERE column NOT BETWEEN value1 AND value2 排除范围内的值

Credits: Image by storyset