mysql 学习记录-join
mysql 学习中会遇到关联查询, 这里记录一下关联查询的相关信息
1.创建两张表并插入 测试的数据 sql文件在 这里
两张表应该是这样的
![](https://img.haomeiwen.com/i1026375/d6ca8062a4781978.png)
![](https://img.haomeiwen.com/i1026375/2a6b060bf4ed8b11.png)
2.join 分为下面这几种
![](https://img.haomeiwen.com/i1026375/18cf7a8e3fbaf2a6.png)
下面开始一一测试
1.内连接 inner(取 user1 和user2 两个表公共的部分)
![](https://img.haomeiwen.com/i1026375/ecb417af190b466a.png)
SELECT a.username,a.over,b.over from user1 a join user2 b on a.username=b.username
输出结果:
![](https://img.haomeiwen.com/i1026375/e0a9578e6b9a0f7a.png)
2.全外连接 full outer
![](https://img.haomeiwen.com/i1026375/20f021478895853b.png)
错误示范
![](https://img.haomeiwen.com/i1026375/004f9c9b9c9a423d.png)
full join 在mysql 中是不允许的 所以我们可以使用下面这个方法实现full join
SELECTa.username,a.over,b.overFROMuser1aleftJOINuser2bona.username=b.usernameunionallSELECTb.username,b.over,a.overFROMuser1aRIGHTjoinuser2bonb.username=a.username
![](https://img.haomeiwen.com/i1026375/f179f5da8a5dfcae.png)
3.左外连接 left outer
![](https://img.haomeiwen.com/i1026375/1a49060b1ceb991a.png)
SELECTa.username,a.over,b.overFROMuser1aLEFTjoinuser2bona.username=b.username
出现结果
![](https://img.haomeiwen.com/i1026375/9546addf885f9b33.png)
这个时候我们发现有很多空项 需要去掉这些空项
![](https://img.haomeiwen.com/i1026375/11327b3000efc93f.png)
SELECTa.username,a.over,b.overFROMuser1aLEFTjoinuser2bona.username=b.usernamewhereb.overisnotnull
4.右外连接 right outer
与左连接相对,基础表不同
5.交叉连接 cross
a表中有4条b表中有5条会又20条记录
SELECT*FROMuser1CROSSJOINuser2