1.mysql数据库的多表连接
mysql数据库的四种连接的区别和具体实现,有图有真相
1.测试环境说明
(1)mysql:mysql-5.5.53-winx64;
(2)可视化操作工具:Navicat_V11.0.10_XiTongZhiJia;
2.建表
数据表有三user ,jme,sms
表1_user
表2_jme
表3_sms
3.测试
(1)自连接,顾名思义,自己和自己多次连接,最终得到自己需要的列。(不做过多讨论)
(2)left join 或者left outer join
select * from user a left outer join sms b on a.id = b.id
select * from user a left join sms b on a.id = b.id
(3)right join 或者rigth outer join
select * from user a right outer join sms b on a.id = b.id
select * from user a right join sms b on a.id = b.id
(4)full outer join或者full join
注意:mysql不支持这种连接的写法!!
练习:select * from user,jme,sms
结果:从左往右一行一行的依次连接
(5)交叉连接 cross join
select * from user a cross join jme b 笛卡尔积
4.概念
(1)内连接——最常用 (INNER JOIN )
定义:仅将两个表中满足连接条件的行组合起来作为结果集。
(2)外连接
左(外)连接
定义:在内连接的基础上,还包含左表中所有不符合条件的数据行,并在其中的右表列填写NULL
关键字:LEFT JOIN
右(外)连接
定义:在内连接的基础上,还包含右表中所有不符合条件的数据行,并在其中的左表列填写NULL
关键字:RIGHT JOIN
(3)完全连接
定义:在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL
关键字:FULL JOIN
(4)交叉连接
定义:将两个表的所有行进行组合,连接后的行数为两个表的乘积数。(笛卡尔积)
关键词:CROSS JOIN
注意:完全连接和交叉连接的区别。主要体现在空行,交叉连接没有条件限制。