• 七、玩转select条件查询


    前言:

      电商中:我们想查看某个用户所有的订单,或者想查看某个用户在某个时间段内所有的订单,此时我们需要对订单表数据进行筛选,按照用户、时间进行过滤,得到我们期望的结果。

      此时我们需要使用条件查询来对指定表进行操作,我们需要了解sql中的条件查询常见的玩法。

    本篇内容

    1、查询条件语法

    2、条件查询运算符详解(=、<、>、<=、>=、<>、!=)

    3、逻辑查询运算符详解(and、or)

    4、like模糊查询介绍

    5、between、and查询

    6、in、not in查询

    7、NULL值存在的坑

    8、is null、is not null(NULL值专用查询)

    9、<=>(安全等于)运算符

    10、经典面试题

    一、条件查询

      语法:select 列名 from 表名 where 列 运算符 值

      说明:注意关键字where,where后面跟上一个或者多个条件,条件是对前面数据的过滤,只有满足where后面条件的数据才会被返回。

    二、条件查询运算符

      1、等于(=)

         select 列名 from 表名 where 列 = 值;

        说明:

          查询出指定的列和对应的值相等的记录

          值如果是字符串类型,需要用单引号或者双引号引起来。

      2、不等于(<>、!=)

        select 列名 from 表名 where 列 <>值

        select 列名 from 表名 where 列 != 值;

        注意:

        <>这个是最早的用法。

        !=是后来才加上的。

        两者意义相同,在可移植性上前者优于后者

        故而sql语句中尽量使用<>来做不等判断

      3、大于(>)

        select 列名 from 表名 where 列>值;    

        说明:

           数值按照大小比较。

          字符按照ASCII码对应的值进行比较,比较时按照字符对应的位置一个字符一个字符的比较。

    三、逻辑查询运算符

      当我们需要使用多个条件进行查询的时候,需要使用逻辑查询运算符。

      AND:多个条件都成立

      OR:多个条件中满足一个

      1、and(并且)

        select 列名 from 表名 where 条件1 and 条件2;    

        表示返回满足条件1和条件2的记录。

      2、OR(或者)

        select 列名 from 表名 where 条件1 or 条件2;

        满足条件1或者满足条件2的记录都会被返回。

    四、like(模糊查询)

      select 列名 from 表名 where 列 like pattern;  

      pattern中可以包含通配符,有以下通配符:

        %:表示匹配任意一个或多个字符

         _:表示匹配任意一个字符

    五、BETWEEN AND(区间查询)

      操作符 BETWEEN … AND 会选取介于两个值之间的数据范围,这些值可以是数值、文本或者日期,属于一个闭区间查询。

      selec 列名 from 表名 where 列名 between 值1 and 值2;  

      返回对应的列的值在[值1,值2]区间中的记录

      使用between and可以提高语句的简洁度

       两个临界值不要调换位置,只能是大于等于左边的值,并且小于等于右边的值。

      下面两条sql效果一样

        select * from stu t where t.age between 25 and 32;
        select * from stu t where t.age >= 25 and t.age <= 32;

    六、IN查询

      select 列名 from 表名 where 字段 in (值1,值2,值3,值4);  

        in 后面括号中可以包含多个值,对应记录的字段满足in中任意一个都会被返回

        in列表的值类型必须一致或兼容

        in列表中不支持通配符。

      NOT IN查询

      not in和in刚好相反,in是列表中被匹配的都会被返回,NOT IN是和列表中都不匹配的会被返回。

      select 列名 from 表名 where 字段 not in (值1,值2,值3,值4);

    七、NULL存在的坑

      查询运算符、like、between and、in、not in对NULL值查询不起效。

    八、IS NULL/IS NOT NULL(NULL值专用查询)

      1、IS NULL(返回值为空的记录)

        select 列名 from 表名 where 列 is null;

        查询指定的列的值为NULL的记录。

      2、IS NULL(返回值不为空的记录)

        select 列名 from 表名 where 列 is not null;

        查询指定的列的值不为NULL的记录。

    九、<=>(安全等于)

      <=>:既可以判断NULL值,又可以判断普通的数值,可读性较低,用得较少

      select * from test8 t where t.a<=>null;  --<=>可以将NULL查询出来。

      select * from test8 t where t.a<=>1;

    十、经典面试题

      下面的2个sql查询结果一样么?  

      select * from students;

      select * from students where name like '%';

      

    结果分2种情况:

    当name没有NULL值时,返回的结果一样。

    当name有NULL值时,第2个sql查询不出name为NULL的记录。

    总结

    • like中的%可以匹配一个到多个任意的字符,_可以匹配任意一个字符

    • 空值查询需要使用IS NULL或者IS NOT NULL,其他查询运算符对NULL值无效

    • 建议创建表的时候,尽量设置表的字段不能为空,给字段设置一个默认值

    • <=>(安全等于)玩玩可以,建议少使用

  • 相关阅读:
    jQuery动态加载动画spin.js
    jQuery自动过滤单词插件
    基于jQuery的自定义滚动条
    jQuery纵向分类下拉菜单导航
    仿酷狗官网新闻焦点图插件
    metro扁平UI网页组件
    HTML5环形音乐播放器
    纯CSS3个性化圆形按钮登录表单
    纯CSS3绘制的黑色图标按钮组合
    纯CSS3实现iOS7扁平化图标
  • 原文地址:https://www.cnblogs.com/biao/p/11757096.html
Copyright © 2020-2023  润新知