诚之和: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 |
3 | 砧 | 31 | 南达科他州 | anvil@example.com |
4 | 乔 | 44 | 缅因州 | 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 |
3 | 砧 | 31 | 南达科他州 | anvil@example.com |
4 | 乔 | 44 | 缅因州 | 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 |
3 | 砧 | 32 | 南达科他州 | anvil@example.com |
4 | 乔 | 44 | 缅因州 | 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 | 姓名 | 年龄 | 状态 | 电子邮件 |
---|---|---|---|---|
3 | 砧 | 32 | 南达科他州 | anvil@example.com |
4 | 乔 | 44 | 缅因州 | 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 | 姓名 | 年龄 | 状态 | 电子邮件 |
---|---|---|---|---|
3 | 砧 | 32 | 南达科他州 | 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 | 姓名 | 年龄 | 状态 | 电子邮件 |
---|---|---|---|---|
4 | 乔 | 44 | 缅因州 | 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 | 姓名 | 年龄 | 状态 | 电子邮件 |
---|---|---|---|---|
3 | 砧 | 32 | 南达科他州 | 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子句来做到这一点。
诚之和:SQL Where – 子句示例相关推荐
- 诚之和:SQL 左连接 - 示例连接语句语法
在关系型数据库中,表之间通常以某种方式相互关联,允许它们的信息在整个数据库中仅写入一次.然后,当你需要分析数据时,你需要组合来自这些相关表的信息. 要在 SQL 中执行此操作,您可以使用JOIN语句. ...
- SQL having 子句示例 - 使用Sqlite演示
HAVING 子句 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用. HAVING 子句可以让我们筛选分组后的各组数据. 也就是说sql使用了聚合函数获取到数据 ...
- sql limit 子句_SQL按子句概述和示例
sql limit 子句 This article will cover the SQL ORDER BY clause including syntax, usage scenarios to so ...
- sql limit 子句_SQL Server TOP子句概述和示例
sql limit 子句 This article explores the SQL Server TOP clause using various examples, along the way, ...
- sql limit子句_SQL子句解释的位置:之间,之间,类似和其他示例
sql limit子句 什么是SQL Where子句? (What is a SQL Where Clause?) WHERE子句(和/或IN , BETWEEN和LIKE ) (The WHERE ...
- sql子查询示例_学习SQL:SQL查询示例
sql子查询示例 In the previous article we've practiced SQL, and today, we'll continue with a few more SQL ...
- sql limit 子句_Java 8流中的常见SQL子句及其等效项
sql limit 子句 功能编程允许使用通用语言进行准声明性编程 . 通过使用功能强大的流畅API(例如Java 8的Stream API )或jOOλ的顺序Stream扩展Seq或更复杂的库(例如 ...
- sql limit 子句_SQL Server中的FOR XML PATH子句
sql limit 子句 As SQL professionals, we often have to deal with XML data in our databases. This articl ...
- sql limit 子句_SQL Order by子句概述
sql limit 子句 In this article, we'll walk-through the concept of the SQL Order by clause and understa ...
最新文章
- iOS蓝牙开发---CoreBluetooth[BLE 4.0] 初级篇[内附Demo地址]
- 8月书讯:喜悦翩然而至
- Windows 64位下为wampserver或phpstudy安装Redis扩展
- 云原生生态周报 Vol. 13 | Forrester 发布企业级容器平台报告
- java各种集合的线程安全
- Python中类、对象与self详解
- 电路维修(信息学奥赛一本通-T1448)
- Error:Protocol family unavailable
- linqto 多个关键字模糊查询_MySQL查询与约束
- 【Unity3d】使GUI适应屏幕分辨率
- 面试稳了!BATJ 等大厂 400+ 道面试题全汇总!
- Silverlight 3正式版新鲜出炉
- linux服务器家目录,linux服务器根目录空间不足
- Day_05 显示字符串
- 带你了解网络的魅力——tcping和ping区别
- 人民币大写金额转换为数字
- 关于里程碑图 2017.01
- 盗QQ号的现在越来越牛B了,我差点被骗!大家要小心了
- 初识c语言day07(五子棋)
- 【论文阅读笔记】One Shot 3D Photography