SQL - NOT Operator
Hai在那里,有抱负的SQL爱好者们!我很高兴引导你们进入SQL操作符的迷人世界,特别是NOT操作符。作为一个教SQL多年的老师,我可以向你保证,掌握这个操作符将大大提高你的数据库查询技能。那么,让我们开始吧!
The SQL NOT Operator
NOT操作符就像那个总是反驳你所说的一切的朋友。它在SQL中用来否定一个条件,本质上颠倒了布尔表达式的结果。当你使用NOT时,你是在说:“给我所有不符合这个条件的。”
让我们从一个简单的例子开始。想象我们有一个名为students
的表,包含列id
、name
和age
。
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