MySQL 链接篇

Posted cheneyboon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 链接篇相关的知识,希望对你有一定的参考价值。

目录

  • 内连接查询
  • 外连接---左连接
  • 外连接---右连接
  • 全连接
名字 内连接 左连接 右连接 全连接
关键字 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 链接篇的主要内容,如果未能解决你的问题,请参考以下文章

网络云盘项目——总体介绍附源码链接

Go语言之进阶篇连接mysql

MySQL进阶篇存储引擎

鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 百篇博客分析HarmonyOS源码 | v54.01

计算机系统篇之链接:动态链接

MySQL 总结篇 [在Oracle基础上学习的MySQL]