过滤数据
    数据库表一般包含大量的数据,很少需要检索表中的所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指 定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)。
    例如2.1中的查询城市,发现会有很多重复的城市,那是因为数据表中,该城市每有个新状态就会生成新的一行,因此数据表中有一列为是否最新,将这个条件卡住就能得到最新状态城市的唯一行

    输入:
    SELECT
    city_name
    from dw.dim_city
    where is_enabled=1

    keys:
    1、过滤的值需要和字段相符,如果是数字(a=1),如果是字符(a=‘a’)
    2、where与order by的顺序:where先order by后(必须,否则报错!)

    过滤的操作符**

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

    keys:
    1、操作符是可以兼容的,比如不等于既可以写作<>,也可以写作!=
    2、使用以上操作符可以过滤单值、不匹配、范围值、空值,试一试?

    组合过滤
    输入:
    SELECT
    city_name
    from dw.dim_city
    where is_enabled=1 and city_name=’北京’

    keys:
    1、and字符是把两个过滤条件组合起来,逻辑是“且”,就是同时满足
    2、多个条件如果都需要同时满足,那就是条件1 and 条件2 and 条件3 and …… and 条件n
    输入:
    SELECT
    city_name
    from dw.dim_city
    where city_name=’北京’ or city_name=’上海’

    keys:
    1、or字符是把两个过滤条件组合起来,逻辑是“或”,就是只要满足其一
    2、多个条件如果都需要同时满足,那就是条件1 or 条件2 or 条件3 or …… or 条件n

    组合过滤顺序
    输入:
    SELECT
    city_name
    from dw.dim_city
    where is_enabled=1 and city_name=’北京’ or city_name=’上海’

    输入:
    SELECT
    city_name
    from dw.dim_city
    where is_enabled=1 and (city_name=’北京’ or city_name=’上海’ )

    大家可以试下上面这两个sql,看看结果有什么不同
    keys:
    1、and和or的优先级:and逻辑先,or逻辑后
    2、提升优先级:()英文的括号可以定义优先执行的逻辑,可以将or左右的过滤条件组合为一个整体逻辑

    范围条件过滤
    IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取一组由逗号分隔、括在圆括号中的合法值。
    输入:
    SELECT
    city_name
    from dw.dim_city
    where city_name in (‘北京’ ,’上海’ )

    keys:
    1、功能与or相当
    2、在有很多合法选项时,IN操作符的语法更清楚,更直观。
    3、在与其他AND和OR操作符组合使用IN时,求值顺序更容易管理。
    4、 IN操作符一般比一组OR操作符执行得更快。

    BETWEEN
    WHERE product_price __BETWEEN 5 AND 6
    keys:
    between必须和and同时用。
    通配符过滤
    通配符(wildcard):用来匹配值的一部分的特殊字符。通配符只能用于文本字段(串),非文本字数据类型字段不能使用通配符搜索。
    输入:
    SELECT
    city_name,first_alpha
    from dw.dim_city
    where first_alpha like ‘c%’

    keys:
    1、为了使用通配符,必须使用like;=’c%’是错误的
    2、百分号%通配符:%表示任何字符出现任意次数,包括0个字符。但是单独使用不能匹配null
    3、区分大小写:c%能找出小写c开头的所有行,C%能找出大写C开头的所有行,之间不行
    4、位置:%c(c结尾的所有行);%c%(中间有c的所有行);c%(c开头的所有行);c%a(c开头a结尾的所有行)
    输入:
    SELECT
    city_name,first_alpha
    from dw.dim_city
    where first_alpha like ‘chengd

    keys:
    1、下划线(
    )通配符:用途与%一致,但是只匹配单个字符
    否定条件过滤
    输入:
    SELECT
    city_name,first_alpha
    from dw.dim_city
    where first_alpha not like ‘c%’

    输入:
    SELECT
    city_name,first_alpha
    from dw.dim_city
    where city_name not in (‘北京’ ,’上海’ )

    keys:
    1、not:表示否定,配合in或like或is使用(not like;not in;is not;not between),