SQL - NOT运算符

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

SQL - NOT Operator

SQL NOT运算符

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运算符与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运算符与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运算符与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运算符与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运算符与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和生活中,有时候知道你不需要什么和需要什么一样重要。快乐查询,愿你的结果永远NOT NULL!

Credits: Image by storyset