美文网首页
_4_ SQL 过滤数据(WHERE)

_4_ SQL 过滤数据(WHERE)

作者: changsanjiang | 来源:发表于2018-06-26 22:46 被阅读11次

    本文demo

    https://gitee.com/changsanjiang/SQLDemo/tree/master

    使用WHERE子句(操作符 =)

    表中一般包含大量的数据, 我们通常只检索所需的数据. 因此需要指定搜索条件(search criteria), 搜索条件也称为过滤条件(filter condition).

    在SELECT语句中, 数据根据WHERE子句中指定的搜索条件进行过滤. WHERE子句在表名(FROM 子句)之后给出. 如下:

    SELECT prod_name, prod_price
    FROM Products
    WHERE prod_price = 3.49;
    

    分析:

    这条语句从 products 表中检索两个列, 只返回prod_price值为3.49的行.

    输出:

    image.png

    这个示例使用了简单的相等检验: 即检查这一列的值是否为指定值(prod_price = 3.49), 据此过滤数据. 不过, SQL不止能测试等于, 还能做更多的事情.

    **提示**
    数据虽然也可以在应用层进行过滤. 
    但为此, SQL的SELECT语句将为客户端应用检索出超过实际所需的数据, 客户端据此数据进行循环过滤, 提取所需行.
    
    通常, 这种做法及其不妥.
    优化数据库后可以更快速有效地对数据进行过滤. 而让客户端应用处理数据库的工作将会极大地影响应用的性能.
    并且使所创建的应用完全不具备可伸缩性. 
    此外, 如果在客户端过滤数据, 服务器不得不通过网络发送多余数据, 这将导致网络带宽的浪费.
    

    WHERE子句操作符

    下表列出了所有条件操作符.

    操作符 说明
    = 等于
    <> 不等于
    != 不等于
    < 小于
    <= 小于等于
    > 大于
    >= 大于等于
    !< 不小于(相当于>=)
    !> 不大于(相当于<=)
    BETWEEN 在指定的两个值之间
    IS NULL 为NULL的值
    **注意: 操作符兼容**
    上表中列出的某些操作符是冗余的. 例如`<>`和`!=`都表示为不等于.
    并非所有DBMS都支持这些操作符. 请参阅相应的DBMS文档, 确定支持哪些操作.
    

    操作符 <<=

    我们再来举两个简单操作的例子. 如下, 列出所有价格小于5美元的产品.

    SELECT prod_name, prod_price
    FROM Products
    WHERE prod_price < 5;
    

    输出:

    image.png

    如下, 列出 <= 10美元的产品

    SELECT prod_name, prod_price
    FROM Products
    WHERE prod_price <= 10;
    

    输出:

    image.png

    范围值检查(操作符BETWEEN)

    BETWEEN操作符用来检查某个范围的值. 它需要两个值, 即范围的开始与结束. 其语法与其他WHERE子句的操作符稍有不同.

    如下, 检索3.49美元和5美元之间的产品.

    SELECT prod_name, prod_price
    FROM Products
    WHERE prod_price BETWEEN 3.49 AND 5;
    

    输出:

    image.png

    分析:

    在使用BETWEEN时, 必须指定两个值. 同时必须用AND关键字分隔. BETWEEN匹配的值包括指定的开始值和结束值.


    空值检查( NULL )

    在一个列不包含值时, 称其包含空值NULL. 它与字段包含0或空字符串或仅仅包含空格不同.

    确定是否为NULL, 不能简单的检查是否等于NULL(prod_name = NULL ❌), 正确的操作是使用 IS NULL子句. 其语法如下:

    SELECT *
    FROM Products
    WHERE prod_desc IS NULL;
    

    输出:

    image.png

    另外, IS NULL也可写为ISNULL. 如下:

    SELECT *
    FROM Products
    WHERE prod_desc ISNULL;
    

    相关文章

      网友评论

          本文标题:_4_ SQL 过滤数据(WHERE)

          本文链接:https://www.haomeiwen.com/subject/xnxvyftx.html