#在最后提供了自己演示的mysql语句,以供读者自行验证。
##两张表具体如下
表1:
表2
-
内联(inner join)
select * from link_teacher inner join link_student on link_teacher.id = link_student.id;
结果等同于:
select * from link_teacher, link_student where link_teacher.id = link_student.id;
结果:把两个表中id相等的行拼接为一行显示出来。建议用前者,效率会高一些。
-
左(外)联(left join 或者 left outer join)
select * from link_teacher left join link_student on link_teacher.id = link_student.id;
或者:
select * from link_teacher left outer join link_student on link_teacher.id = link_student.id;
结果:显示左表(此语句为link_teacher表)中所有的行,并把右表中符合条件的加到左表中。右表中不符合条件的就用null表示。
-
右(外)联(right join 或者 right outer join)
select * from link_teacher right join link_student on link_teacher.id = link_student.id;
或者:
select * from link_teacher right outer join link_student on link_teacher.id = link_student.id;
结果:显示右表(此语句为link_student表)中所有的行,并把左表中符合条件的加到右表表中。左表中不符合条件的就用null表示。
####注意:mysql不支持全连接(full join )
###表1 link_teacher
create table if not exists link_teacher(
id int primary key default 0,
name varchar(20) not null,
gender char(6) default ‘male’,
subject varchar(10)
)charset UTF8MB4;
####表1 插入数据
insert into link_teacher values(1,‘jane’,default,‘math’);
insert into link_teacher values(2,‘joey’,default,‘physics’);
insert into link_teacher values(3,‘alex’,default,‘gym’);
insert into link_teacher values(4,‘saul’,default,‘ecology’);
###表2
create table if not exists link_student(
id int primary key default 0,
name varchar(20) not null,
gender char(6) default ‘female’,
hobby varchar(20),
height int
)charset utf8mb4;
####表2 插入数据
insert into link_student values(1,‘kai’,‘male’,‘exercise’,180);
insert into link_student values(2,‘frank’,‘male’,‘swimming’,190);
insert into link_student values(3,‘phabe’,default,‘table tennis’,170);
insert into link_student values(4,‘erin’,default,‘running’,186);
insert into link_student values(5,‘yoolander’,default,‘driving’,180);