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操作符。