10 SQL Where
1. 定义
维基百科:SQL
Where
指令用于筛选出满足条件的结果集。
慕课解释:数据表中的数据往往比较繁杂,在查询的时候需要按照一定的条件进行筛选,Where 可以有效地剔除无用数据,保留被需要的数据。
2. 前言
本小节,我们将一起学习 SQL Where
。
Where 可以搭配很多 SQL 指令使用,因此它的知识点是比较多的,本节我们主要介绍 Where 与 Select 是如何搭配使用的。
本节的主要知识点有:1.运算符;2.单条件查询;3.连接符;4.多条件查询。
本小节测试数据如下,请先在数据库中执行:
DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
username varchar(20),
age int
);
INSERT INTO imooc_user(username,age)
VALUES('pedro', 23), ('mike', 18), ('jerry', 26), ('Mary', 32);
3. 运算符
使用Where时,后面需搭配条件子句,条件字句由条件字段、运算符和条件值三部分组成,它们的关系如下:
[col] [condition] [val]
其中col
表示数据表中的字段,condition
是运算符,val
是条件值。
例如:age > 18
就是一个基本的条件子句,age是条件字段,> 是运算符,而 18 就是条件值,该条件语句表示选取
年龄大于 18 的用户。
上面的例子中使用到了运算符 >,> 是一种常见的单值比较运算符,类似的还有:
运算符 | 描述 | 运算符 | 描述 |
---|---|---|---|
= | 等于 | <> | 不等于 |
> | 大于 | != | 不等于 |
< | 小于 | !< | 不小于 |
>= | 大于等于 | !> | 不大于 |
<= | 小于等于 |
运算符的多样性导致了条件子句的多样性。
不同的条件字段搭配不同的运算符,让 Where 的条件过滤变得更为强大。
4. 单条件查询
Where 后面仅有一个条件子句的查询称为单条件查询。
使用语法如下:
SELECT [col1],[col2] from [table_name] WHERE [col3] [condition] [val];
其中col
是字段名称,table_name
是数据表名称,condition
是运算符,val
是值,数字1、2表示多个字段。
4.1 例1 单条件查询用户 1
请书写 SQL 语句,查询imooc_user
表中年龄超过25
的用户,并返回用户名。
分析:
由题干可知,age 是条件字段,25 是条件值,需筛选出年龄超过25的用户,所以运算符选择 >。
语句:
整理可得语句如下:
SELECT username from imooc_user WHERE age > 25;
结果如下:
+----------+
| username |
+----------+
| jerry |
| Mary |
+----------+
4.2 例2 单条件查询用户 2
请书写 SQL 语句,查询imooc_user
表中年龄等于18
的用户名。
分析:
与上述分析大致相同,但是筛选条件变成了等于,因此运算符选择 =。
语句:
SELECT username from imooc_user WHERE age = 18;
结果如下:
+----------+
| username |
+----------+
| mike |
+----------+
5. 连接符
Where 后面的条件子句不仅可以为单条件子句,还可以是多条件子句。
多条件子句需要通过AND
或者OR
两个连接符进行连接。
这两个的运算符的作用如下:
运算符 | 描述 |
---|---|
AND | 连接两个条件表达式,若二者都为True,返回True,否则返回False |
OR | 连接两个条件表达式,若二者都为False,返回False,否则返回True |
AND 和 OR 两个连接符让多条件查询变得更加灵活,从而让 Where 也变得更加灵活。
6. 多条件查询
Where 后面有多个条件子句的查询称为多条件查询。
6.1 例3 多条件查询用户 1
请书写 SQL 语句,查询imooc_user
表中年龄大于等于18
但小于25
的用户名。
分析:
条件字段仍是 age,但筛选条件从一个变成了两个,第一个条件,age 要大于等于 18,第二个条件,age 要小于 25。
两个条件之间使用 AND 连接。
语句:
整理语句如下:
SELECT username from imooc_user
WHERE age >= 18
AND age < 25;
结果如下:
+----------+
| username |
+----------+
| pedro |
| mike |
+----------+
6.2 例4 多条件查询用户2
请书写 SQL 语句,查询imooc_user
表中年龄小于20
或者年龄大于25
的用户名。
分析:
条件字段仍是 age,但筛选条件从一个变成了两个,且二者的关系发生了变化,第一个条件,age 要小于 20,第二个条件,age 要大于 25。
两个条件之间使用 OR 连接。
语句:
整理语句如下:
SELECT username from imooc_user
WHERE age < 20
OR age > 25;
结果如下:
+----------+
| username |
+----------+
| mike |
| jerry |
| Mary |
+----------+
6.3 例5 多条件查询用户 3
多条件的查询还可以更加灵活,上述的例子都只涉及到单条件字段的查询,有时候需要从多个字段进行结果筛选。
请书写 SQL 语句,查询imooc_user
表中年龄在25
到30
之间(包含25和30),并且用户名为jerry
的用户。
分析:
条件字段变成了两个——username 和 age,username 只有一个条件,等于jerry,即 =jerry,age 有两个条件,既要大于等于25,
还要小于等于30,即 >=25,<=30。
三个条件之间均用 AND连接。
语句:
整理语句如下:
SELECT username from imooc_user
WHERE username = 'jerry'
AND age >= 25
AND age <= 30;
结果如下:
+----------+
| username |
+----------+
| jerry |
+----------+
注意: SQL中字符串用单引号包括,即
''
。
7. 小结
- Where 是使用最为频繁的指令之一,它的用法极其重要,绝大多数情况下,查询数据都需要添加过滤条件,请务必熟练掌握它。
- AND 和 OR 的搭配非常灵活,可以说是两两搭配无穷尽也。