数据库 / 10 SQL Where

SQL Where

1. 定义

维基百科:SQLWhere 指令用于筛选出满足条件的结果集。

慕课解释:数据表中的数据往往比较繁杂,在查询的时候需要按照一定的条件进行筛选,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表中年龄在2530之间(包含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 的搭配非常灵活,可以说是两两搭配无穷尽也。