码迷,mamicode.com
首页 > 数据库 > 详细

MySQL 链接篇

时间:2019-08-29 23:58:58      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:char   shu   排序   比较   查询   ble   select   直接   str   

目录

  • 内连接查询
  • 外连接---左连接
  • 外连接---右连接
  • 全连接
名字 内连接 左连接 右连接 全连接
关键字 inner join left join right join union

 

 

 

1.1、内连接

  定义:内连接中必须两者相互匹配才能打印该行,看下面实例

create table A
(
    id int,
    name char(10)
);

create table B
(
    id int,
    sname char(10)
);

insert into A(id,name)
value(1,"zhangsan"),(2,"lisi"),(3,"wangwu");

insert into B(id,sname)
value(2,"laoliu"),(3,"louqi"),(4,"shuaisih");

select * from A inner join B on A.id = B.id;
//这里的意思是如果A的id和B的id匹配则打印,这里只有2和3他们是共有的,也相当于打印他们的交集。id的交集。

 

2.1、左连接

  定义:左连接中左表为驱动表,右表为匹配表。右表会全部打印,而左表只打印和右表匹配到的项,如果没有则为空

表A数据
id     name    ps
1       张三      经理
2       李四      董事
3       王五      主管


表B数据
id      money     
1         20000
2         1000000


select * from A left join B on A.id = B.id;

匹配结果是

id     name       ps        id        money
1       张三        经理      1           20000
2       李四        董事      2           1000000
3       王五        主管      null        null

 

3.1、右连接

  定义:和左连接相反,右表为驱动表,左表为匹配表,右表全部打印,左表匹配打印

表A数据
id     name    ps
1       张三      经理
2       李四      董事
3       王五      主管


表B数据
id      money     
1         20000
2         1000000


select * from A right join B on A.id = B.id;

匹配结果是

id     name       ps        id        money
1       张三        经理      1           20000
2       李四        董事      2           1000000

/这里比上面少了一行,因为左表只有2行数据,所以只打印两行数据

 

4.1、全连接

  关键字:union/union all

  语句:(select column,column2  ....  from tableA) UNION (select colum1,column2 ... from tableB) 或者

      (select column,column2  ....  from tableA) UNION (select colum1,column2 ... from tableB)

  注意:1、通过union连接的sql他们分别单独取出的列数必须相同

     2、不要求合并的表列名称相同时,以第一个sql表列为准

     3、使用union时,完全相同的行,将会被合并,由于合并比较耗时,一般不直接使用union进行合并,而是通常采用union all进行合并

     4、被union连接的sql子句,单个子句中不要写order by ,因为不会有排序效果,但可以对最终的结果集进行排序

 

  (select id ,name from A order by id ) union all (select id ,name  from B order by id);   //没有排序效果

  (select id ,name  from  A)UNION ALL (select id ,name from B) order by id ;   //有排序效果

表A数据

 id      num
a         5
b         10
c         15
d         10


表B数据

id           num
b              5
c              15
d              20
e              99
(
select * from A) UNION (select * from B); //查询结果 id num a 5 b 10 c 15 d 10 b 5
d 20
e 99
//这里的查询结果把多余的重复的B中的C给删除了

(select * from A) UNION ALL (select * from B);

//查询结果
id        num
a           5
b           10
c           15
d           10
b           5
c 15
d 20
e 99
//这里就没有去重
 

 

参考链接:https://blog.csdn.net/zjt980452483/article/details/82945663

MySQL 链接篇

标签:char   shu   排序   比较   查询   ble   select   直接   str   

原文地址:https://www.cnblogs.com/cheneyboon/p/11371070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!