有如下测试数据表
jointest.sql
use chenyamin
create table jointest(studentid int,studentname varchar(255))
insert into jointest(studentid,studentname)
values(1,'Andy'),
(2,'Betty'),
(3,'Cendy'),
(5,'Dany'),
(6,'Enliy')
select * from jointest
jointest表效果图:
testjoin.sql
use chenyamin
create table testjoin(studentid int,studentname varchar(255))
insert into testjoin(studentid,studentname)
values(1,'Fendy'),
(2,'Gendy'),
(3,'Hunny'),
(8,'Jeity')
select * from testjoin
testjoin表效果图:
左联合 left join 返回包括左表中的所有记录和右表中联结字段相等的记录
select * from jointest a left join testjoin b on a.studentid=b.studentid
右联合 right join 返回包括右表中的所有记录和左表中联结字段相等的记录
select * from jointest a right join testjoin b on a.studentid=b.studentid
内联 inner join 列出两表中标识号相同的所有行
select * from jointest a inner join testjoin b on a.studentid=b.studentid
注意:如果两表甚至多表联合,出现一个字段值对应多个字段值时,结果会成倍增长。
比如表join1和表join2内容如下图:
inner join结果:
从上面的结果可以看出,一对多或者多对多时,联合的过程在下图中表现出来了
同样,执行左联和右联
我的理解比较慢,所以自己重新整理了一遍,想拍砖的不要客气