WHERE 子句用于规定选择的标准。白话点就是:where用来过滤掉不满足条件的记录(把所有存储在数据库中的数据称之为记录),获取满足条件的记录。
WHERE 子句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
语法
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值;
下面的运算符可在 WHERE 子句中使用:
操作符 | 描述 |
---|---|
= | Equal |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。
使用WHERE子句
如果只需选取居住于城市 "Sandnes" 中的某些人,我们需要向 SELECT 语句添加 WHERE 子句:
SELECT * FROM Persons WHERE City='Sandnes';
"Persons" 表
LastName | FirstName | Address | City | Year |
---|---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes | 1951 |
Svendson | Tove | Borgvn 23 | Sandnes | 1978 |
Svendson | Stale | Kaivn 18 | Sandnes | 1980 |
Pettersen | Kari | Storgt 20 | Stavanger | 1960 |
结果:
LastName | FirstName | Address | City | Year |
---|---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes | 1951 |
Svendson | Tove | Borgvn 23 | Sandnes | 1978 |
Svendson | Stale | Kaivn 18 | Sandnes | 1980 |
引号的使用
请注意,我们在例子中的条件值周围使用的是单引号,建议一直使用单引号,这个也是个好习惯。
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。
文本值:
这是正确的: SELECT * FROM Persons WHERE FirstName='Tove'; 这是错误的: SELECT * FROM Persons WHERE FirstName=Tove;
数值:
这是正确的: SELECT * FROM Persons WHERE Year>1965; 这是错误的: SELECT * FROM Persons WHERE Year>'1965';
LIKE 条件
LIKE 用于规定针对列中某个模式的搜索。
语法
SELECT 列 FROM 表 WHERE 列 LIKE 模式
符号"%"可用于定义模式之前及模式之后的通配符(模式中缺少的字符)。
使用LIKE
下面的语句会返回名字的第一个字符为 'O' 的人:
SELECT * FROM Persons WHERE FirstName LIKE 'O%'
;
下面的语句会返回名字的最后一个字符为 'a' 的人:
SELECT * FROM Persons WHERE FirstName LIKE '%a'
;
下面的语句会返回名字中包含字符 'la' 的人:
SELECT * FROM Persons WHERE FirstNameLIKE '%la%'
;SQL 通配符(LIKE)
在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。
SQL 通配符必须与 LIKE 运算符一起使用。
在 SQL 中,可使用以下通配符:
通配符 | 描述 |
---|---|
% | 替代一个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或者 [!charlist] | 不在字符列中的任何单一字符 |