内连接,外连接,左连接,右连接,全连接,交叉连接

我们先建立两个表插入一些Demo数据

  ----student=(sno,sname) 学号,姓名
insert into student(sno,sname) values('2005001','小施');
insert into student(sno,sname) values('2005002','小王');
insert into student(sno,sname) values('2005003','小张');
insert into student(sno,sname) values('2005004','小贾');
----stu_score=(sno,scrore) 学号,分数
insert into stu_score(sno,scrore) values('2005001',90.00);
insert into stu_score(sno,scrore) values('2005002',95.00);
insert into stu_score(sno,scrore) values('2005008',80.50);
insert into stu_score(sno,scrore) values('2005009',88.50);

(一) 内连接

  内连接,inner join,join 查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的
      列值。

----假设a表有M条记录,b表有N条记录,a和b表sno相同的记录有K条
----内连接(数据量=K)

select a.*,b.* from student a join stu_score b on a.sno=b.sno;
select a.*,b.* from student a inner join stu_score b on a.sno=b.sno;

72643df59dbe5411bc3109a6.jpg

外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左
外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行

(二) 外连接 (左连接、右连接) 

左连接或left join,left outer join 返回包括左表中的所有记录和右表中联接字段相等的记录

右连接或right join ,right outer join 返回包括右表中的所有记录和由表中联接字段相等的记录

----左连接/左外连接(数据量=M)
select a.*,b.* from student a left join stu_score b on a.sno=b.sno;
select a.*,b.* from student a left outer join stu_score b on a.sno=b.sno;

 a11d252a831cdd0c5343c1a6.jpg

----右连接/右外连接(数据量=N)
select a.*,b.* from student a right join stu_score b on a.sno=b.sno;
select a.*,b.* from student a right outer join stu_score b on a.sno=b.sno;

4169bb18526b193335fa41a6.jpg

(三) 完全连接()
定义:在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL
关键字:FULL JOIN

----完全连接(数据量=M+N-K)
select a.*,b.* from student a full join stu_score b on a.sno=b.sno;

6079249b397b9681c9eaf4a6.jpg

(四) 交叉连接
定义:将两个表的所有行进行组合,连接后的行数为两个表的乘积数。(笛卡尔积)
关键词:CROSS JOIN
格式:FROM 表名1 CROSS JOIN 表名2 

----交叉连接(数据量=M*N)
select a.*,b.* from student a cross join stu_score b ;

33b91ad168993fe7572c84a6.jpg

转载于:https://www.cnblogs.com/lin714115/archive/2010/07/05/1771219.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值