美文网首页
四、过滤数据

四、过滤数据

作者: 曾经像素有点低 | 来源:发表于2023-02-17 19:29 被阅读0次
    工程师加油💪🏻.png
    组合WHERE子句,使用NOT 和 IN 操作符
    使用SELECT语句的WHERE子句指定搜索条件

    1.使用WHERE子句

    数据库中一般包含大量的数据,很少需要检索表中的所有行。通常只会根据特定操作或报告的需要提取表数据的子集。质检所所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)。
    在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出。例如:

    SELECT  id, name, age
    FROM student
    WHERE age = 12;
    

    这条语句从student表中检索三个列id、name、age,但不返回所有行,只返回age值为12的行。

    思考:SQL过滤与应用过滤
    数据也可以在应用层过滤。比如SQL的SELECT检索出超过客户端应用实际所需要数据。然后客户端代码对返回的数据进行循环(遍历),筛选出需要的行。
    通常,这种做法极其不妥。优化数据库后可以更快捷有效的对数据进行过滤,而客户端应用(或开发语言)处理数据库的工作会极大地影响应用的性能,并且使所创建的应用完全不具备可伸缩性。此外,如果在客户端过滤数据,服务器不得不通过网络发送多余的数据。这将导致网络宽带的浪费。

    tisp:在同时使用WHEREORDER BY子句时,要将ORDER BY放在WHERE之后。

    2、WHERE子句操作符

    操作符 说明 操作符 说明
    = 等于 IS NULL 为NULL的值
    > 大于 !> 不大于
    < 小于 !< 不小于
    != 不等于 <= 小于等于
    <> 不等于 >= 大于等于
    BETWEEN 在指定的两个值之间

    tips:表中列出的某些操作符是冗余的(例如 <> 与 != 相同,!< 相当于 >= )。并非所有的DBMS都支持这些操作符。

    2.1检查单个值

    列出所有价格小于10元的商品(商品名、价格)

    SELECT  name, price
    FROM  goods
    WHERE price < 10;
    

    2.2不匹配检查

    列出所有不姓王的同学(surname姓氏、name姓名、score学分)

    SELECT  surname,  name,   score
    FROM  students
    WHERE  surname  <> '王'
    

    tips:
    ①这里也可用!=代替<>
    ②'王'的单引号:单引号用来限定字符串
    如果将值与字符串类型的列进行比较,就需要限定引号。
    用来与数值列进行比较的值不用引号

    2.3 范围值检查

    BETWEEN操作符
    检索出价格在5到10之间的所有商品:

    SELECT  name, price
    FROME  goods
    WHERE  price BETWEEN 5 AND 10;
    

    tips:①使用BETWEEN 时,所需范围的“开始值”和“结束值”需要用AND关键字分隔。
    ②BETWEEN匹配范围中的所有值,包括指定的开始值和结束值

    2.4空值检查

    IS NULL 操作符
    在一个列不包含值时,称其包含空值NULL。

    NULL
    无值(no value),它与字段包含0、空字符串或仅仅包含空格不同。

    检索出没有被输入成绩的同学的姓名

    SELECT name 
    FROM students
    WHERE score IS NULL;
    

    检索出所有没有输入成绩(空score字段,并不是score为0)的同学姓名。

    tips: NULL 和 非匹配
    通过过滤选择不包含指定值的所有行时,可能希望返回含NULL值的所有行。但是这做不到。因为NULL比较特殊,所以在进行 匹配过滤非匹配过滤 时,不会返回这些结果。因此在过滤数据时,一定要验证,被过滤列中含NULL值的行,确实出现在了返回的数据中。

    相关文章

      网友评论

          本文标题:四、过滤数据

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