诚之和:SQL Where – 子句示例

有时,当您使用 SQL 时,您不需要对整个记录范围进行操作。或者,如果您不小心更改或删除了所有内容,那将导致非常严重的后果。在这些情况下,您只需选择要处理的记录部分,即满足特定条件的记录部分。这就是 SQL 的WHERE子句有用的地方。

SQLWHERE子句语法

你这样写WHERE子句:

SELECT column1, column2...
FROM table_name
WHERE condition;

请注意,这里我使用SELECT语句编写了它,但它的使用不仅限于SELECT. 您也可以将它与其他语句一起使用,例如DELETE和UPDATE。

WHERE行动中的SQL子句

让我们使用这个users表作为如何使用WHERE子句的示例。

ID姓名年龄状态电子邮件
1布赖恩15密歇根州brian@example.com
2伦纳德55密西西比州伦纳德@example.com
331南达科他州anvil@example.com
444缅因州jo@example.com
5梅雷迪思43特拉华州梅雷迪思@example.com
6科迪16密歇根州cody@example.com
7迪拉拉50俄亥俄州dilara@example.com
8科尔宾47威斯康星州corbin@example.com
9杜松子酒63伊利诺伊州gin@example.com
10爱丽丝50内华达爱丽丝@example.com
11扎卡里21马萨诸塞州zachery@example.com
12德尔玛56爱达荷州delmar@example.com
13丹尼96俄亥俄州丹尼@example.com
14亚伦50佛罗里达aaron@example.com
15巴士拉18南达科他州busrah@example.com
16艾芙琳88内华达aveline@example.com
17阿赫林72阿肯色州aherin@example.com
18中提琴66缅因州viola@example.com
19娜佳22佛罗里达nadya@example.com
20伊莎贝拉61亚利桑那izabela@example.com

WHERE带有SELECT语句的 SQL子句  示例

当您想确保某个事件会影响 50 岁或以上的人时,您可以仅选择具有以下代码的用户:

SELECT *
FROM users
WHERE age >= 50;

这将给出一个如下表,只列出 50 岁或以上的用户:

ID姓名年龄状态电子邮件
2伦纳德55密西西比州伦纳德@example.com
7迪拉拉50俄亥俄州dilara@example.com
9杜松子酒63伊利诺伊州gin@example.com
10爱丽丝50内华达爱丽丝@example.com
12德尔玛56爱达荷州delmar@example.com
13丹尼96俄亥俄州丹尼@example.com
14亚伦50佛罗里达aaron@example.com
16艾芙琳88内华达aveline@example.com
17阿赫林72阿肯色州aherin@example.com
18中提琴66缅因州viola@example.com
20伊莎贝拉61亚利桑那izabela@example.com

WHERE带有DELETE语句的 SQL子句示例

假设 Cody 已决定将自己从该列表中删除。您可以使用一条DELETE语句更新表,WHERE以确保只删除 Cody 的记录。

DELETE FROM users
WHERE name IS "Cody";

该users表现在看上去像下面,没有线6(其中科迪的信息是):

ID姓名年龄状态电子邮件
1布赖恩15密歇根州brian@example.com
2伦纳德55密西西比州伦纳德@example.com
331南达科他州anvil@example.com
444缅因州jo@example.com
5梅雷迪思43特拉华州梅雷迪思@example.com
7迪拉拉50俄亥俄州dilara@example.com
8科尔宾47威斯康星州corbin@example.com
9杜松子酒63伊利诺伊州gin@example.com
10爱丽丝50内华达爱丽丝@example.com
11扎卡里21马萨诸塞州zachery@example.com
12德尔玛56爱达荷州delmar@example.com
13丹尼96俄亥俄州丹尼@example.com
14亚伦50佛罗里达aaron@example.com
15巴士拉18南达科他州busrah@example.com
16艾芙琳88内华达aveline@example.com
17阿赫林72阿肯色州aherin@example.com
18中提琴66缅因州viola@example.com
19娜佳22佛罗里达nadya@example.com
20伊莎贝拉61亚利桑那izabela@example.com

WHERE带有UPDATE语句的 SQL子句示例

现在也许您已经收到通知,说 Anvil 已经老了,现在 32 岁了。您可以使用该UPDATE语句更改 Anvil 的记录,并且您可以使用它WHERE来确保仅更新 Anvil 的记录。

UPDATE users
SET age = 32
WHERE name IS "Anvil";

现在该表将如下所示:

ID姓名年龄状态电子邮件
1布赖恩15密歇根州brian@example.com
2伦纳德55密西西比州伦纳德@example.com
332南达科他州anvil@example.com
444缅因州jo@example.com
5梅雷迪思43特拉华州梅雷迪思@example.com
7迪拉拉50俄亥俄州dilara@example.com
8科尔宾47威斯康星州corbin@example.com
9杜松子酒63伊利诺伊州gin@example.com
10爱丽丝50内华达爱丽丝@example.com
11扎卡里21马萨诸塞州zachery@example.com
12德尔玛56爱达荷州delmar@example.com
13丹尼96俄亥俄州丹尼@example.com
14亚伦50佛罗里达aaron@example.com
15巴士拉18南达科他州busrah@example.com
16艾芙琳88内华达aveline@example.com
17阿赫林72阿肯色州aherin@example.com
18中提琴66缅因州viola@example.com
19娜佳22佛罗里达nadya@example.com
20伊莎贝拉61亚利桑那izabela@example.com

可以与WHERE子句一起使用的运算符来选择记录

您可以使用=, >, <, >=, <=, <>(或!=取决于您的 SQL 版本), BETWEEN, LIKE,等运算符IN。

我们已经>=在上面的例子中看到了“大于或等于”的作用。

=是“等于”、>“大于”、<“小于”、<=“小于或等于”、<>(或!=)是“不等于”。

大于、小于、大于或等于、小于或等于四个运算符在处理数字时最有用。

等于和不等于这两个运算符对于数字和其他数据类型都很有用。

如何BETWEEN在 SQL 中使用运算符

BETWEEN允许您指定一个数字范围。例如WHERE age BETWEEN 24 and 51将选择该年龄范围内的所有记录。

SELECT * FROM users
WHERE age BETWEEN 24 AND 51;

有 7 个用户的年龄在此范围内:

ID姓名年龄状态电子邮件
332南达科他州anvil@example.com
444缅因州jo@example.com
5梅雷迪思43特拉华州梅雷迪思@example.com
7迪拉拉50俄亥俄州dilara@example.com
8科尔宾47威斯康星州corbin@example.com
10爱丽丝50内华达爱丽丝@example.com
14亚伦50佛罗里达aaron@example.com

如何LIKE在 SQL 中使用运算符

LIKE允许您指定模式。例如,WHERE name LIKE "A%"将选择名称以 A 开头的所有记录。

SELECT * FROM users
WHERE name LIKE "A%";

在我们的列表中有 5 个名字以 A 开头的用户:

ID姓名年龄状态电子邮件
332南达科他州anvil@example.com
10爱丽丝50内华达爱丽丝@example.com
14亚伦50佛罗里达aaron@example.com
16艾芙琳88内华达aveline@example.com
17阿赫林72阿肯色州aherin@example.com

如何制作要使用的图案 LIKE

您可以使用字符%和制作图案_。该字符%表示任意数量的字符(零、一个或多个)。字符_正好代表一个字符。

例如"_ook"可以是“书”、“看”、“角落”。但"%ook"也可以是“ok”或“电话簿”。

如何IN在 SQL 中使用运算符

IN让您在一系列可能性之间进行选择。例如,让我们看看哪些用户在东海岸。

SELECT * FROM users
WHERE state IN ("Maine", "New Hampshire", "Massachusetts", "Rhode Island", "Connecticut", "New York", "New Jersey", "Delaware", "Maryland", "Virginia", "North Carolina", "South Carolina", "Georgia", "Florida");

该IN运营商的检查,如果在值state列等于在东海岸各州的列表中的一个值。

只有六个用户住在东海岸:

ID姓名年龄状态电子邮件
444缅因州jo@example.com
5梅雷迪思43特拉华州梅雷迪思@example.com
11扎切里21马萨诸塞州zachery@example.com
14亚伦50佛罗里达aaron@example.com
18中提琴66缅因州viola@example.com
19娜佳22佛罗里达nadya@example.com

我们不要忘记IS, NOT, AND,OR运算符

我们已经IS在上面的示例之一中使用了运算符。就像WHERE name IS "Cody",它检查列是否具有该确切值。

您可以NOT在条件前使用使其相反。例如,WHERE age NOT BETWEEN 24 AND 51将仅选择 24 岁以下和 51 岁以上的用户。使用此标准,将选择 12 个用户:

ID姓名年龄状态电子邮件
1布赖恩15密歇根州brian@example.com
2伦纳德55密西西比州伦纳德@example.com
9杜松子酒63伊利诺伊州gin@example.com
11扎卡里21马萨诸塞州zachery@example.com
12德尔玛56爱达荷州delmar@example.com
13丹尼96俄亥俄州丹尼@example.com
15巴士拉18南达科他州busrah@example.com
16艾芙琳88内华达aveline@example.com
17阿赫林72阿肯色州aherin@example.com
18中提琴66缅因州viola@example.com
19娜佳22佛罗里达nadya@example.com
20伊莎贝拉61亚利桑那izabela@example.com

您可以使用AND到条件,结合这两个必须是真实的,例如WHERE name LIKE "A%" AND age > 70会选择使用一个名称的用户以A开头的和是超过70只2用户满足这个条件:

ID姓名年龄状态电子邮件
16艾芙琳88内华达aveline@example.com
17阿赫林72阿肯色州aherin@example.com

您可以使用OR组合条件,以便只有两者之一需要为真。例如,WHERE name LIKE "A%" OR age > 70将选择名称以 A 开头或年龄超过 70 岁的用户(两部分中只有一个必须为真,但两者也可以为真)。

有 6 个用户名以 A 开头或年龄超过 70 岁(或两者兼有)。

ID姓名年龄状态电子邮件
332南达科他州anvil@example.com
10爱丽丝50内华达爱丽丝@example.com
13丹尼96俄亥俄州丹尼@example.com
14亚伦50佛罗里达aaron@example.com
16艾芙琳88内华达aveline@example.com
17阿赫林72阿肯色州aherin@example.com

结论

指定要在表中操作的记录非常重要。

通过本文,您已经学会了如何使用该WHERE子句来做到这一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_45378258

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值