SQL WHERE 筛选
时间:2018-11-15 17:14:35 来源:igfitidea点击:
使用SQL WHERE子句过滤查询结果集中的行
在本教程中,我们将学习如何使用的WHERE子句来过滤结果集中的行。
WHERE子句不仅可以用在SELECT语句中, 还可以在UPDATE和DELETE等SQL语句中,用来筛选满足指定条件的行。
在SELECT语句中WHERE子句的语法:
SELECT
column_1, column_2
FROM
tableName
WHERE
condition;
数据库引擎首先计算WHERE子句中的条件,以排除掉不符合条件的行。然后,它根据结果计算SELECT子句,只在最终结果集中包含必需的列。
SQL提供了各种运算符,如比较运算符、逻辑运算符等,通过这些操作符,你就可以创建WHERE的条件。
带比较运算符的SQL WHERE子句
下表是SQL中的比较运算符:
| 运算符 | 说明 |
|---|---|
| = | 等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| <> | 不等于 |
假设我们要找出lastname是King的员工的电话,那么可以执行下面的查询语句:
SELECT
lastname, firstname, HomePhone
FROM
employees
WHERE
lastname = 'King';

数据库引擎将执行以下步骤的操作:
1,检索FROM子句中指定的employees表中的所有行。
2,只获取lastname列值为King的行。
3,只返回SELECT子句中指定的列:lastname、firstname和HomePhone
找出1993年前加入公司的员工
SELECT
lastname, firstname, title, country, DATE(hiredate)
FROM
employees
WHERE
hiredate < '1993-01-01'

查找不是来自USA的员工
SELECT
lastname, firstname, title, country
FROM
employees
WHERE
country <> 'USA'

查找价格在20 以上的单品
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的产品
SELECT
productid, name, category
FROM
product
WHERE
name = 'Bulldog'
AND category = 'DOGS'

OR 逻辑或
用于组合两个条件或多个条件,当多个条件中只要有一个是TRUE时,就返回TRUE
示例 找出所有猫或狗的宠物
SELECT
productid, name, category
FROM
product
WHERE
category = 'CATS'
OR category = 'DOGS'

NOT 逻辑非
使用NOT把结果取反。
示例 查找不在伦敦也不在西雅图市的雇员
可以使用下面的语句,
SELECT
firstname, lastname, city
FROM
employees
WHERE
city <> 'London' AND city <> 'Seattle'
也可以使用NOT语句
SELECT
firstname, lastname, city
FROM
employees
WHERE
NOT (city = 'London' OR city = 'Seattle')

其他操作符
除了比较运算符、逻辑运算符, 在WHERE子句中还可以使用BETWEEN、IN、LIKE、EXISTS以及IS操作符。

