Express-学习之路 13,mysql-DQL 条件查询

299 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

Express-学习之路 13,mysql-DQL 条件查询

引言

本系列会以我的一个理解,来介绍并开始学习 Express

中间会插入自己所联系到的 乱七八糟 的 知识点

介绍

今天继续 mysql 数据库 中的 sql 语句的学习。

DQL

使我们在修改数据时,我们的 where 后面的条件是多个的话,我们如何连接呢?

需要通过 DQL 的条件查询来进行解决。

逻辑运算符

  • 如果是 运算符,这里使用 and 或者 && 符号,

    update xxx set a1=b1,a2=b2 where name = 'xiaoming' and age < 18;
    
  • 如果是 运算符,这里使用 or 或者 || 来进行

    update xxx set a1=b1,a2=b2 where name = 'xiaoming' or name = 'daming';
    
  • 这里如果既有 又有 的情况下是什么呢?

    update xxx set a1=b1,a2=b2 where name = 'xiaoming' or name = 'daming' and age < 18;
    

    上面这个语句的结果? 是 选择出 xiaoming 或者 daming,然后年龄小于18 ?

    可能与我们预期的结果不一样,因为 and 优先级 大于 or

    • 结果就为 选择出所有的 xiaoming,和 年龄大于18的 daming

      如果想要避免此类事情的发生,善于使用()来进行包裹,也有助于提高语句的阅读。

      update xxx set a1=b1,a2=b2 where ( name = 'xiaoming' or name = 'daming' ) and age < 18;
      
  • 如果语句中有多个 or ,那么使用 in ,会更方便

    update xxx set a1=b1,a2=b2 where name = 'xiaoming' or name = 'daming' or name = 'xiaozhang';
    
    update xxx set a1=b1,a2=b2 where name in('xiaoming', 'daming', 'xiaozhang');
    
  • 如果是 运算符,这里使用 Not 或者 ! 来进行

    update xxx set a1=b1,a2=b2 where name != 'xiaoming';
    

    选择名字为非 xiaoming 的数据。

  • 不等于的运算符为 != 或者是 <>

比较运算符

  • like yyy 模糊匹配

    yyy(_匹配单个字符,%匹配任意个字符)

    下面这句的意思是,xxx 表里 查找字段 name 的值为两个的字符的。

    select * from xxx where name like '__';
    
  • is null 值为 null

    表里面,某个字段里面的值,是 null 的值

    select * from xxx where name is null;
    

    表里面,某个字段里面的值,是非 null 的话

    select * from xxx where name is null;
    

总结

学习了 mysql 中的 DQL 条件查询。