七、玩转select条件查询

摘要:
本章内容1。查询条件语法2。条件查询运算符(=,<=)的详细说明3。逻辑查询运算符(和或)的详细说明4。喜欢模糊查询的介绍5。以及查询6。在中,而不是查询7。空值8中存在凹坑。isnull,isnotnull(NULL值的特殊查询)9.<2、 条件查询运算符1。等于(=)从表名中选择列名,其中列=值=值;

前言:

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

  此时我们需要使用条件查询来对指定表进行操作,我们需要了解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值无效

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

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

免责声明:文章转载自《七、玩转select条件查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS开发基础框架ECSHOP批量添加商品到购物车下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

抢火车票利器:分享一个抓取火车票转让信息的小程序

代码 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.ComponentModel;using System.Threading;using System.Text.Regul...

Vue之Mustache语法

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app">...

C#:在AnyCPU模式下使用CefSharp

本篇博客讲述如何在AnyCPU模式下使用CefSharp因为在某些情况下,不得不用AnyCPU,但是CefSharp支持的是86和64位俩种模式,所以在我查阅了很多国内外的资料下,总结出来的一些精华 参考地址:https://ourcodeworld.com/articles/read/173/how-to-use-cefsharp-chromium-em...

阻止Bootstrap 模态框点击背景空白处自动关闭

问题描述 模态框点击空白处,会自动关闭,怎么阻止关闭事件呢? 解决方法 在HTML页面中编写模态框时,在div初始化时添加属性 aria-hidden=”true” data-backdrop=”static”,即可。 <!-- 模态框(Modal) --> <div class="modal fade" id="myModal" t...

JavaScript向XML文档存储,读取和修改数据

基础知识1、var fso=new ActiveXObject("Scripting.FileSystemObject");创建一个可以操作系统文件的ActiveXObject对像的实例。2、file=fso.GetFile("C:\\test.xml");  用ActiveXObject对像访问系统文件,可以用来检查文件是否存在。3、file=fso.C...

转载:SQL注入演示demo

网上看到的一个SQL注入的演示demo,很完整所以转载过来,分享给大家。先要感谢作者!!   作者:潘良虎链接:http://www.zhihu.com/question/22953267/answer/80141632来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 Web安全简史在Web1.0时代,人们更多是关注服务器端...