mysql的内联接,左连接和右连接的区别

本文介绍了MySQL中的内联(INNER JOIN)、左连接(LEFT JOIN)和右连接(RIGHT JOIN)的区别。内联返回两个表中ID相等的行,左连接显示左表所有行及右表符合条件的数据,右连接则显示右表所有行及左表符合条件的数据。示例中使用了link_teacher和link_student两张表进行演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#在最后提供了自己演示的mysql语句,以供读者自行验证。
##两张表具体如下
表1:
在这里插入图片描述
表2
在这里插入图片描述

  1. 内联(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相等的行拼接为一行显示出来。建议用前者,效率会高一些。
    在这里插入图片描述

  2. 左(外)联(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表示。
    在这里插入图片描述

  3. 右(外)联(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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值