这篇文章主要讲解了“SQL Where子句怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL Where子句怎么写”吧!
你这样写WHERE子句:
SELECT column1, column2... FROM table_name WHERE condition;
请注意,这里我使用SELECT语句编写了它,但它的使用不仅限于SELECT. 您也可以将它与其他语句一起使用,例如DELETE和UPDATE。
让我们使用这个users表作为如何使用WHERE子句的示例。
ID | NAME | AGE | STATE | |
---|---|---|---|---|
1 | Brian | 15 | Michigan | brian@example.com |
2 | Leonard | 55 | Mississippi | leonard@example.com |
3 | Anvil | 31 | South Dakota | anvil@example.com |
4 | Jo | 44 | Maine | jo@example.com |
5 | Meredith | 43 | Delaware | meredith@example.com |
6 | Cody | 16 | Michigan | cody@example.com |
7 | Dilara | 50 | Ohio | dilara@example.com |
8 | Corbin | 47 | Wisconsin | corbin@example.com |
9 | Gin | 63 | Illinois | gin@example.com |
10 | Alice | 50 | Nevada | alice@example.com |
11 | Zachary | 21 | Massachusetts | zachery@example.com |
12 | Delmar | 56 | Idaho | delmar@example.com |
13 | Dennie | 96 | Ohio | dennie@example.com |
14 | Aaron | 50 | Florida | aaron@example.com |
15 | Busrah | 18 | South Dakota | busrah@example.com |
16 | Aveline | 88 | Nevada | aveline@example.com |
17 | Aherin | 72 | Arkansas | aherin@example.com |
18 | Viola | 66 | Maine | viola@example.com |
19 | Nadya | 22 | Florida | nadya@example.com |
20 | Izabela | 61 | Arizona | izabela@example.com |
当您想确保某个事件会影响 50 岁或以上的人时,您可以仅选择具有以下代码的用户:
SELECT * FROM users WHERE age >= 50;
这将给出一个如下表,只列出 50 岁或以上的用户:
ID | NAME | AGE | STATE | |
---|---|---|---|---|
2 | Leonard | 55 | Mississippi | leonard@example.com |
7 | Dilara | 50 | Ohio | dilara@example.com |
9 | Gin | 63 | Illinois | gin@example.com |
10 | Alice | 50 | Nevada | alice@example.com |
12 | Delmar | 56 | Idaho | delmar@example.com |
13 | Dennie | 96 | Ohio | dennie@example.com |
14 | Aaron | 50 | Florida | aaron@example.com |
16 | Aveline | 88 | Nevada | aveline@example.com |
17 | Aherin | 72 | Arkansas | aherin@example.com |
18 | Viola | 66 | Maine | viola@example.com |
20 | Izabela | 61 | Arizona | izabela@example.com |
假设 Cody 已决定将自己从该列表中删除。您可以使用一条DELETE语句更新表,WHERE以确保只删除 Cody 的记录。
DELETE FROM users WHERE name IS "Cody";
该users表现在看上去像下面,没有线6(其中科迪的信息是):
ID | NAME | AGE | STATE | |
---|---|---|---|---|
1 | Brian | 15 | Michigan | brian@example.com |
2 | Leonard | 55 | Mississippi | leonard@example.com |
3 | Anvil | 31 | South Dakota | anvil@example.com |
4 | Jo | 44 | Maine | jo@example.com |
5 | Meredith | 43 | Delaware | meredith@example.com |
7 | Dilara | 50 | Ohio | dilara@example.com |
8 | Corbin | 47 | Wisconsin | corbin@example.com |
9 | Gin | 63 | Illinois | gin@example.com |
10 | Alice | 50 | Nevada | alice@example.com |
11 | Zachary | 21 | Massachusetts | zachery@example.com |
12 | Delmar | 56 | Idaho | delmar@example.com |
13 | Dennie | 96 | Ohio | dennie@example.com |
14 | Aaron | 50 | Florida | aaron@example.com |
15 | Busrah | 18 | South Dakota | busrah@example.com |
16 | Aveline | 88 | Nevada | aveline@example.com |
17 | Aherin | 72 | Arkansas | aherin@example.com |
18 | Viola | 66 | Maine | viola@example.com |
19 | Nadya | 22 | Florida | nadya@example.com |
20 | Izabela | 61 | Arizona | izabela@example.com |
UPDATE users SET age = 32 WHERE name IS "Anvil";
现在该表将如下所示:
ID | NAME | AGE | STATE | |
---|---|---|---|---|
1 | Brian | 15 | Michigan | brian@example.com |
2 | Leonard | 55 | Mississippi | leonard@example.com |
3 | Anvil | 32 | South Dakota | anvil@example.com |
4 | Jo | 44 | Maine | jo@example.com |
5 | Meredith | 43 | Delaware | meredith@example.com |
7 | Dilara | 50 | Ohio | dilara@example.com |
8 | Corbin | 47 | Wisconsin | corbin@example.com |
9 | Gin | 63 | Illinois | gin@example.com |
10 | Alice | 50 | Nevada | alice@example.com |
11 | Zachary | 21 | Massachusetts | zachery@example.com |
12 | Delmar | 56 | Idaho | delmar@example.com |
13 | Dennie | 96 | Ohio | dennie@example.com |
14 | Aaron | 50 | Florida | aaron@example.com |
15 | Busrah | 18 | South Dakota | busrah@example.com |
16 | Aveline | 88 | Nevada | aveline@example.com |
17 | Aherin | 72 | Arkansas | aherin@example.com |
18 | Viola | 66 | Maine | viola@example.com |
19 | Nadya | 22 | Florida | nadya@example.com |
20 | Izabela | 61 | Arizona | izabela@example.com |
可以与WHERE子句一起使用的运算符来选择记录
您可以使用=, >, <, >=, <=, <>(或!=取决于您的 SQL 版本), BETWEEN, LIKE,等运算符IN。
我们已经>=在上面的例子中看到了“大于或等于”的作用。
=是“等于”、>“大于”、<“小于”、<=“小于或等于”、<>(或!=)是“不等于”。
大于、小于、大于或等于、小于或等于四个运算符在处理数字时最有用。
等于和不等于这两个运算符对于数字和其他数据类型都很有用。
BETWEEN允许您指定一个数字范围。例如WHERE age BETWEEN 24 and 51将选择该年龄范围内的所有记录。
SELECT * FROM users WHERE age BETWEEN 24 AND 51;
有 7 个用户的年龄在此范围内:
ID | NAME | AGE | STATE | |
---|---|---|---|---|
3 | Anvil | 32 | South Dakota | anvil@example.com |
4 | Jo | 44 | Maine | jo@example.com |
5 | Meredith | 43 | Delaware | meredith@example.com |
7 | Dilara | 50 | Ohio | dilara@example.com |
8 | Corbin | 47 | WIsconsin | corbin@example.com |
10 | Alice | 50 | Nevada | alice@example.com |
14 | Aaron | 50 | Florida | aaron@example.com |
LIKE允许您指定模式。例如,WHERE name LIKE "A%"将选择名称以 A 开头的所有记录。
SELECT * FROM users WHERE name LIKE "A%";
在我们的列表中有 5 个名字以 A 开头的用户:
ID | NAME | AGE | STATE | |
---|---|---|---|---|
3 | Anvil | 32 | South Dakota | anvil@example.com |
10 | Alice | 50 | Nevada | alice@example.com |
14 | Aaron | 50 | Florida | aaron@example.com |
16 | Aveline | 88 | Nevada | aveline@example.com |
17 | Aherin | 72 | Arkansas | aherin@example.com |
如何制作要使用的图案 LIKE
您可以使用字符%和制作图案_。该字符%表示任意数量的字符(零、一个或多个)。字符_正好代表一个字符。
例如"_ook"可以是“书”、“看”、“角落”。但"%ook"也可以是“ok”或“电话簿”。
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 | NAME | AGE | STATE | |
---|---|---|---|---|
4 | Jo | 44 | Maine | jo@example.com |
5 | Meredith | 43 | Delaware | meredith@example.com |
11 | Zachery | 21 | Massachusetts | zachery@example.com |
14 | Aaron | 50 | Florida | aaron@example.com |
18 | Viola | 66 | Maine | viola@example.com |
19 | Nadya | 22 | Florida | nadya@example.com |
我们已经IS在上面的示例之一中使用了运算符。就像WHERE name IS "Cody",它检查列是否具有该确切值。
您可以NOT在条件前使用使其相反。例如,WHERE age NOT BETWEEN 24 AND 51将仅选择 24 岁以下和 51 岁以上的用户。使用此标准,将选择 12 个用户:
ID | NAME | AGE | STATE | |
---|---|---|---|---|
1 | Brian | 15 | Michigan | brian@example.com |
2 | Leonard | 55 | Mississippi | leonard@example.com |
9 | Gin | 63 | Illinois | gin@example.com |
11 | Zachary | 21 | Massachusetts | zachery@example.com |
12 | Delmar | 56 | Idaho | delmar@example.com |
13 | Dennie | 96 | Ohio | dennie@example.com |
15 | Busrah | 18 | South Dakota | busrah@example.com |
16 | Aveline | 88 | Nevada | aveline@example.com |
17 | Aherin | 72 | Arkansas | aherin@example.com |
18 | Viola | 66 | Maine | viola@example.com |
19 | Nadya | 22 | Florida | nadya@example.com |
20 | Izabela | 61 | Arizona | izabela@example.com |
您可以使用AND到条件,结合这两个必须是真实的,例如WHERE name LIKE "A%" AND age > 70会选择使用一个名称的用户以A开头的和是超过70只2用户满足这个条件:
ID | NAME | AGE | STATE | |
---|---|---|---|---|
16 | Aveline | 88 | Nevada | aveline@example.com |
17 | Aherin | 72 | Arkansas | aherin@example.com |
您可以使用OR组合条件,以便只有两者之一需要为真。例如,WHERE name LIKE "A%" OR age > 70将选择名称以 A 开头或年龄超过 70 岁的用户(两部分中只有一个必须为真,但两者也可以为真)。
有 6 个用户名以 A 开头或年龄超过 70 岁(或两者兼有)。
ID | NAME | AGE | STATE | |
---|---|---|---|---|
3 | Anvil | 32 | South Dakota | anvil@example.com |
10 | Alice | 50 | Nevada | alice@example.com |
13 | Dennie | 96 | Ohio | dennie@example.com |
14 | Aaron | 50 | Florida | aaron@example.com |
16 | Aveline | 88 | Nevada | aveline@example.com |
17 | Aherin | 72 | Arkansas | aherin@example.com |
感谢各位的阅读,以上就是“SQL Where子句怎么写”的内容了,经过本文的学习后,相信大家对SQL Where子句怎么写这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。