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子句中还可以使用BETWEENINLIKEEXISTS以及IS操作符。