MySQL中的内连接,左连接,右连接,全连接,交叉连接等相关总结
2021/11/9 19:43:46
本文主要是介绍MySQL中的内连接,左连接,右连接,全连接,交叉连接等相关总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySQL中的内连接,左连接,右连接,全连接,交叉连接等相关总结
先看库表:
表A,test_user:
表B,test_money:
说明:user表的id对应money表的user_id,其中,id为2,4的用户没有对应的账户; 而user_id为18的账户没有对应的user;这样是为了更明显的看出以下连接方式的区别;
1.内连接:
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值:
1.1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
1.2.不等值连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
1.3.自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
内连接图解:
查询:
select * from `test_user` a inner join test_money b on a.id = b.user_id;
也可以写成:
select * from `test_user` a , test_money b where a.id = b.user_id;
查询结果:
2.左连接:
以左表为基准,将a.id = b.user_id的数据进行连接,然后右表的数据不存在的列将显示为NULL
左连接图解:
查询:
select * from `test_user` a left join test_money b on a.id = b.user_id;
查询结果:
3.右连接:
以右表为基准,将a.id = b.user_id的数据进行连接,左表没有的对应项显示为NULL
右连接图解:
查询:
select * from `test_user` a right join test_money b on a.id = b.user_id;
查询结果:
小结: 左连接 和 右连接 合称 外连接,所以,left join 和 right join也可以写作 left outer join,right outer join,结果是一致的; 结合上面的左右连接查询也可以明显看出左右连接的区别,左连接以左表为基准,如果右表没有对应数据,显示为null,相反,右连接以右表为基准,如果左表没有对应的数据,显示为null;
4.全连接:
Oracle数据库支持full join,mysql是不支持full join的,但是仍然可以通过 左外连接+ union+右外连接 实现;全连接是完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表显示为null。
全连接图解:
查询:
select * from `test_user` a left join test_money b on a.id = b.user_id UNION select * from `test_user` a right join test_money b on a.id = b.user_id
查询结果:
顺便说一句,
UNION 与 UNION ALL 的区别:
当使用 UNION 时,MySQL 会把结果集中重复的记录删掉,而使用 UNION ALL ,MySQL 会把所有的记录返回,且效率高于 UNION。
5.交叉连接:
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。用的比较少,而且效率比较低。
交叉连接图解:
查询:
select * from `test_user` a cross join test_money b
查询结果:
最后:
sql中还有union join和natural inner join等一些连接,可自行扩展了解,一般的开发过程中,除了拿到数据库中想要的数据外,最为重要的还是要保证处理的效率!
这篇关于MySQL中的内连接,左连接,右连接,全连接,交叉连接等相关总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程