SQL WHERE 筛选


使用SQL WHERE子句过滤查询结果集中的行

在本教程中,我们将学习如何使用的WHERE子句来过滤结果集中的行。

WHERE子句不仅可以用在SELECT语句中, 还可以在UPDATE和DELETE等SQL语句中,用来筛选满足指定条件的行。

在SELECT语句中WHERE子句的语法:

1
2
3
4
5
6
SELECT
column_1, column_2
FROM
tableName
WHERE
condition;

数据库引擎首先计算WHERE子句中的条件,以排除掉不符合条件的行。然后,它根据结果计算SELECT子句,只在最终结果集中包含必需的列。

SQL提供了各种运算符,如比较运算符、逻辑运算符等,通过这些操作符,你就可以创建WHERE的条件。

带比较运算符的SQL WHERE子句

下表是SQL中的比较运算符:

运算符 说明
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
<> 不等于

假设我们要找出lastname是King的员工的电话,那么可以执行下面的查询语句:

1
2
3
4
5
6
SELECT
lastname, firstname, HomePhone
FROM
employees
WHERE
lastname = 'King';

数据库引擎将执行以下步骤的操作:

1,检索FROM子句中指定的employees表中的所有行。
2,只获取lastname列值为King的行。
3,只返回SELECT子句中指定的列:lastname、firstname和HomePhone

找出1993年前加入公司的员工

1
2
3
4
5
6
SELECT
lastname, firstname, title, country, DATE(hiredate)
FROM
employees
WHERE
hiredate < '1993-01-01'

查找不是来自USA的员工

1
2
3
4
5
6
SELECT
lastname, firstname, title, country
FROM
employees
WHERE
country <> 'USA'

查找价格在20 以上的单品

1
2
3
4
5
6
SELECT
itemid, productid, attr1, listprice
FROM
item
WHERE
listprice > 20

带逻辑运算符的SQL WHERE子句

SQL提供了3个逻辑操作符:AND, OR和NOT。

操作符优先级的优先级是 首先计算NOT运算符,然后计算AND运算符,最后计算OR运算符。
可以使用括号()指定运行优先顺序。

AND 逻辑与

用于组合两个或多个条件,当两个条件或所有条件都是TRUE时 返回TRUE

示例 找出 name为Bulldog 并且分类category为 DOGS的产品

1
2
3
4
5
6
7
SELECT
productid, name, category
FROM
product
WHERE
name = 'Bulldog'
AND category = 'DOGS'

OR 逻辑或

用于组合两个条件或多个条件,当多个条件中只要有一个是TRUE时,就返回TRUE

示例 找出所有猫或狗的宠物

1
2
3
4
5
6
7
SELECT
productid, name, category
FROM
product
WHERE
category = 'CATS'
OR category = 'DOGS'

NOT 逻辑非

使用NOT把结果取反。

示例 查找不在伦敦也不在西雅图市的雇员

可以使用下面的语句,

1
2
3
4
5
6
SELECT
firstname, lastname, city
FROM
employees
WHERE
city <> 'London' AND city <> 'Seattle'

也可以使用NOT语句

1
2
3
4
5
6
SELECT
firstname, lastname, city
FROM
employees
WHERE
NOT (city = 'London' OR city = 'Seattle')

其他操作符

除了比较运算符、逻辑运算符, 在WHERE子句中还可以使用BETWEENINLIKEEXISTS以及IS操作符。


原文链接:https://codingdict.com/