mysql命令(二)

  一、union操作符

    select * from 表的名字 union[ All | distinct ] select * from 表的名字

    union操作符用于连接两个以上的 select 语句的结果集合到一个结果集合中,其中 all 和 distinct 是可选的,all 表示获得所有的数据,包括重复的数据,而distinct 表示要出去重复的数据,union操作符默认的返回的数据就是出去重复的数据,所以 distinct 写不写都无所谓; 

    使用 union 进行查询多个表的话,如果使用 * 的话,查出来的字段会以第一个表的字段为准

  二、mysql 连接的使用

    mysql的连接主要是用于多表间的查询,分为三种:

      inner join(内连接,也叫等值连接):获取两个表中字段匹配关系的记录;

      left join(左连接):获取左表的所有记录,即使右边没有对应匹配的记录;

      right join(右连接):获取右边的所有记录,即使左表没有对应匹配的记录;

    (1)、inner join

      select a.name,a.age,b.phone from 表的名字 a inner join 表的名字 b where a.sex = b.sex;

      select a.name,a.age,b.phone from 表的名字 a inner join 表的名字 b on a.sex = b.sex; // 单个select 只能用 where 不能用 on

      上边命令是查询 a 表中性别等于 b 表中性别的数据,并展示 a 表中性别,年龄和 b 表中手机号的字段; 执行的逻辑是先拿 a 表中的每一个数据和 b 表的某一条数据进行对比,只要相等就拿出这个数据;

    (2)、left join

      select a.name,a.age,b.phone from 表的名字 a left join 表的名字 b where a.age = b.age;

      left join 命令的作用和 inner join 命令的不同之处在于,除了展示两个表中满足条件的数据之外,左表表不满足的数据也会展示出来;

    (3)、right join

      select  a.name,a.age,b.phone from 表的名字 a right join 表的名字 b where a.age = b.age;

      同理,right join 和 inner join 的不同之处就是,除了展示两个表中满足条件的数据之外,右边表不满足条件的数据也会展示出来;

  三、null 处理

    在 mysql 中,我们有时候会进行数据是否为 null 的处理,但是我们用传统的方式用  ‘==null’ 以及 ‘!=null’ 来判断数据是否为 null,因此,mysql 提供三大运算符:

      (1)、is null:当列的值是 null,则返回 true;

      (2)、is not null:当列的值如果不是 null ,则返回true;

      (3)、<=>:比较运算符,但是不用于等号‘=’, 比较的两个值如果都是 null 的话,则返回 true;

posted @ 2019-03-19 14:21  mumengchun  阅读(200)  评论(0编辑  收藏  举报