三种SQL JOINS的区别

SQL JOINS

  • INNER JOIN (JOIN):如果表中有至少一个匹配,则返回行
  • LEFT JOIN(LEFT OUTER JOIN):即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN(RIGHT OUTER JOIN):即使左表中没有匹配,也从右表返回所有的行

sql-joins

几个测试说明各种join的区别:

测试条件,先建两张表,第一张为course,即学科表,第二张score,即成绩表

create table if not exists course (
    cid int(5) primary key not null auto_increment,
    name varchar(50)
);

insert into course values (1,'语文');
insert into course values (2,'数学');
insert into course values (3,'英语');
insert into course values (4,'电竞');
create table if not exists score (
    sid int(5) primary key not null  auto_increment,
    sname varchar(50)
);

insert into score (sid, sname)
values (2,'79');
insert into score (sid, sname)
values (3,'64');
insert into score (sid, sname)
values (4,'99');
insert into score(sid, sname)
values (5, '59');

course
score

左连接,即连接以左表为主,查询出以符合指定连接条件的左表全部内容,并且以指定条件关联右表内容。测试左连接LEFT JOIN:

select *
from course c
         left join score s
                   on c.cid = s.sid;

测试结果:

left-join

右连接,即以右表为主,查询出以符合指定连接条件的右表全部内容,并且以指定条件关联左表内容。测试右连接RIGHT JOIN:

select *
from course c
         right join score s
                    on c.cid = s.sid;

测试结果:

right-join

内连接(即join),以指定条件连接两表,查询出两张表的交集,测试内连接INNER JOIN

select *
from course c
         inner join score s
                    on c.cid = s.sid;

测试结果:

join


至此,区分显而易见。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值