暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL查询可视化与简道云数据工厂——2.where子句

龙小马的数字化之路 2021-08-03
1000

在上一篇SQL系列文中,我们介绍了SQL的基础查询语句,以及SQL查询的大概知识结构。本篇文章我们来说一说SQL查询的where子句,也是在我们从表里调取数据时需要设置的筛选条件。
我们以上篇介绍的表里的actor为例,来演示sql以及简道云数据工厂的相应操作!
相关表的下载地址:https://pan.baidu.com/s/1ckbhZvFkiEwPBVePXVpkog,提取码:x9uv

1.文本筛选


文本筛选的大致内容如下:


如果我们想查询first_name为“PENELOPE”的信息。

SQL的操作

    --查询first_name为“PENELOPE”的信息。这是注释语句
    SELECT *
    FROM actor
    WHERE first_name = 'PENELOPE'

    简道云的操作


    如果我们不看“PENELOPE”的信息,只看其他人的信息。
    SQL的操作
      SELECT * 
      FROM actor
      WHERE first_name != 'PENELOPE'


      简道云的操作


      如果我们要看"PENELOPE"、"NICK"、"JENNIFER"等人的信息呢?

      SQL的操作
        SELECT * 
        FROM actor
        WHERE first_name in ("PENELOPE","NICK","JENNIFER")

        简道云的操作

        如果我们不看"PENELOPE"、"NICK"、"JENNIFER"等人的信息呢?

        SQL的操作
          SELECT * 
          FROM actor
          WHERE first_name not in ("PENELOPE","NICK","JENNIFER")

          简道云的操作


          如果我们要查看first_name中包含"NE"的人的信息呢?

          SQL的操作

            SELECT * 
            FROM actor
            WHERE first_name LIKE '%NE%'
            -- %是通配符,代表一个或多个字符;_代表一个字符
            /*
            在SQL中我们可以利用通配符对查询条件设置更加精确细致,例如要查看first_name
            为4个字符最后两个字符"NE"的人信息
            */ 
            -- 它的SQL代码如下
            SELECT * 
            FROM actor
            WHERE first_name LIKE '__NE'

            简道云的操作

            如果简道云要想做到筛选条件精确到几个字符,开头或结尾是什么字符的话,就得配合辅助字段来做了。我们也不做介绍了。


            我们想要查看first_name中不包含"NE"的人的信息

            SQL的操作

              SELECT * 
              FROM actor
              WHERE first_name NOT LIKE '%NE%'

              简道云的操作

              开头是与结尾是的筛选条件的设置,我们只需要把开头或者结尾的%通配符去掉即可。简道云数据工厂暂时做不到这个筛选。


              如果我们想要看出是否为空的筛选条件的设置呢?

              SQL的操作

                SELECT * 
                FROM actor
                WHERE first_name IS NULL


                SELECT *
                FROM actor
                WHERE first_name NOT IS NULL


                简道云的操作

                上面就是利用 =,in,like,NULL等关键字来实现文本的条件筛选。

                数值筛选



                对数数值的筛选条件设置跟文本大致相同

                  -- 筛选数值等于  
                  SELECT *
                  FROM actor
                  WHERE actor_id = 1


                  -- 筛选数值大于或大于等于 
                  SELECT *
                  FROM actor
                  WHERE actor_id > 199 >= 199


                  -- 筛选数值小于
                  SELECT *
                  FROM actor
                  WHERE actor_id < 2 <= 2


                  -- 筛选数值不等于
                  SELECT *
                  FROM actor
                  WHERE actor_id  <> 2  --或者是 !=


                  -- 筛选数值介于
                  SELECT *
                  FROM actor
                  WHERE actor_id  BETWEEN 2 AND 4  -- 不同数据库含义不同,注意参考对应说明


                  -- 筛选数值在某个列表内
                  SELECT *
                  FROM actor
                  WHERE actor_id IN (1,2,3)
                  上面的SQL代码,分别对应于下面截图里的筛选条件。


                  日期筛选



                  因为日期在SQL中可以隐式转换成数值,所以也可以利用数值的筛选方式来筛选日期。当然更多时候需要对日期进行格式转换(to_char,substr,to_number等函数)后再进行筛选操作。
                  咱们这里特殊介绍一下日期的动态筛选。
                  比如,如果我们始终想筛选当天的数据,或者本周、本月的数据
                  SQL的操作
                    SELECT * 
                    FROM actor
                    WHERE DATE_FORMAT(last_update,'%Y-%m-%d') = date_format(SYSDATE(),'%Y-%m-%d')
                    -- sysdate是获取系统当前日期时间。date_format是进行日期格式化处理。
                    -- 不同数据库函数不同。有问题就多百度。
                    简道云的操作
                    如果要在简道云数据工厂里进行动态日期筛选的话,我们可以利用更新的日期动态筛选来实现。——这是个非常重要的操作,可以用来计算所有动态天数差。

                    除了今天之外,还有其他动态筛选


                    多条件筛选



                    我们上面介绍的都是单条件筛选条件,如果需要多个条件的筛选该如何操作呢?
                    SQL的操作
                    多条件筛选时,我们需要使用AND、OR,来帮我们完成多个筛选条件之间的且、或的逻辑运算。
                      SELECT * 
                      FROM actor
                      WHERE actor_id IN (1,2,3)
                      AND first_name LIKE 'E%'


                      -- 筛选id>100,first_name是以E或者A开头的,first_name长度为2的演员信息
                      SELECT *
                      FROM actor
                      WHERE actor_id > 100
                      AND (first_name LIKE 'E%' OR first_name LIKE 'A%')
                      AND length(first_name) = 2
                      在筛选条件中我们利用AND、OR、(),来实现多层级的筛选逻辑运算。

                      简道云的操作

                      简道云的多条件筛选只能是所有条件为且,或者所有条件为或。如果要进行更复杂的逻辑筛选,就需要放置多个节点进行。


                      总结



                      总结一下,where子句中需要使用的操作符如下:
                      操作符描述
                      =等于
                      <>或者!=不等于
                      >大于
                      <小于
                      >=大于等于
                      <=小于等于
                      BETWEEN AND在某个范围内

                      LIKE、NOT LIKE

                      搜索某种模式

                      IS、NOT IS
                      是,不是
                      IN、NOT IN
                      在列表中
                      除了操作符之外,还需要使用AND、OR、()来完成多条件筛选的逻辑计算。

                      SQL中文本内容必须要用英文的单引号'',数值可以直接书写


                      一切皆是信息,万物源自比特!

                      数字化必定会深刻革命我们的办公和生活!

                      简道云,中小企业数字化之路的绝佳伴侣!


                      本公众号将分享数字化的实践、学习、思考。也许涉及信息化系统设计、各种办公软件、数据分析、理论知识、实践案例…… 感谢你与我一同成长……

                      如果有关企业数字化的疑问、思考和讨论 或者 关于简道云的应用搭建、数据工厂、仪表盘等疑问咨询或者合作,欢迎与我联系。关注公众号,可以找到我的联系方式

                      文章转载自龙小马的数字化之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论