SQL - NOT Operator

Hai在那里,有抱负的SQL爱好者们!我很高兴引导你们进入SQL操作符的迷人世界,特别是NOT操作符。作为一个教SQL多年的老师,我可以向你保证,掌握这个操作符将大大提高你的数据库查询技能。那么,让我们开始吧!

SQL - NOT Operator

The SQL NOT Operator

NOT操作符就像那个总是反驳你所说的一切的朋友。它在SQL中用来否定一个条件,本质上颠倒了布尔表达式的结果。当你使用NOT时,你是在说:“给我所有不符合这个条件的。”

让我们从一个简单的例子开始。想象我们有一个名为students的表,包含列idnameage

SELECT * FROM students WHERE NOT age = 20;

这个查询将返回所有不是20岁的学生。就像说:“展示给我所有的学生,但排除20岁的。”

这里还有一个例子:

SELECT * FROM students WHERE NOT name = 'John';

这将给我们所有名字不是John的学生。可怜的John,总是被排除在外!

SQL NOT Operator with LIKE

现在,让我们通过结合NOT和LIKE操作符来增加一些趣味。LIKE用于模式匹配,当与NOT结合时,它成为了一个基于模式排除的强大工具。

SELECT * FROM students WHERE name NOT LIKE 'A%';

这个查询将返回所有名字不是以'A'开头的学生的名字。就像组织一个聚会并说:“每个人都受欢迎,除了那些名字以A开头的人!”(抱歉,Anna和Alex!)

这里还有一个有趣的例子:

SELECT * FROM students WHERE email NOT LIKE '%@gmail.com';

这将给我们所有不使用Gmail的学生的信息。也许他们是嬉皮士,更喜欢不太知名的电子邮件提供商!

SQL NOT Operator with IN

IN操作符用于在WHERE子句中指定多个值。当与NOT结合时,它允许我们排除一系列值。

SELECT * FROM students WHERE age NOT IN (18, 19, 20);

这个查询将返回所有不是18、19或20岁的学生。就像说:“展示给我除了青少年和年轻人以外的所有人!”

这里还有一个例子:

SELECT * FROM courses WHERE department NOT IN ('Math', 'Physics', 'Chemistry');

这将给我们所有不属于数学、物理或化学系的课程。对于那些想避免硬科学的人来说,这是完美的!

SQL NOT Operator with IS NULL

SQL中的NULL值表示缺失或未知信息。IS NULL操作符用于测试NULL值,当与NOT结合时,它帮助我们找到非NULL值。

SELECT * FROM students WHERE phone_number IS NOT NULL;

这个查询将返回所有提供了电话号码的学生。就像说:“展示给我所有我可以实际打电话的学生!”

这里还有一个实用的例子:

SELECT * FROM assignments WHERE submission_date IS NOT NULL;

这将给我们所有已经提交的作业。这个结果集中没有拖延者!

SQL NOT Operator with BETWEEN

BETWEEN操作符用于选择给定范围内的值。当与NOT结合时,它选择该范围之外的值。

SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;

这个查询将返回所有价格小于10或大于20的产品。这对于预算购物者和奢侈品寻求者来说都是完美的!

另一个例子:

SELECT * FROM events WHERE event_date NOT BETWEEN '2023-01-01' AND '2023-12-31';

这将给我们所有在2023年之外发生的事件。时间旅行者,请注意!

SQL NOT Operator with EXISTS

EXISTS操作符用于测试子查询中是否存在任何记录。当与NOT结合时,它检查是否没有任何记录满足子查询。

SELECT * FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);

这个看起来复杂的查询实际上很简单:它返回所有没有下订单的客户。就像是找到你数据库中所有的窗口购物者!

这里还有一个例子:

SELECT * FROM employees e
WHERE NOT EXISTS (SELECT 1 FROM managers m WHERE m.employee_id = e.id);

这将给我们所有不是经理的员工。这是找到你组织中工蜂的一个好方法!

总结我们讨论过的所有NOT操作符方法,这里有一个方便的表格:

方法 描述 示例
NOT与基本比较 否定一个简单条件 WHERE NOT age = 20
NOT与LIKE 排除模式 WHERE name NOT LIKE 'A%'
NOT与IN 排除一系列值 WHERE age NOT IN (18, 19, 20)
NOT与IS NULL 找到非NULL值 WHERE phone_number IS NOT NULL
NOT与BETWEEN 排除一个范围 WHERE price NOT BETWEEN 10 AND 20
NOT与EXISTS 在子查询中检查缺失 WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id)

就这样,朋友们!我们已经探索了NOT操作符的所有荣耀。记住,在SQL和生活中,有时候了解你不想要的东西和了解你想要的东西一样重要。快乐查询,愿你的结果永远不是NULL!

Credits: Image by storyset