数据库 inner join 和 left join 和right join 的区别

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:41:20
请说的详细一点,我就这里理解的不够好。

最好用代码和返回结果 加点理论,让我了解。谢谢啦。。。高手帮忙呀

--测试代码
--建立测试数据
create table #ta1(id integer , aa char(1))
create table #ta2(id integer , aa char(1))
insert into #ta1
select 1,'a'
insert into #ta1
select 2,'b'
insert into #ta2
select 1,'a'
insert into #ta2
select 3,'b'
insert into #ta2
select 4,'c'

-----------------------------------
--完全测试
select a.id,a.aa,b.id,b.aa from #ta1 a
inner join #ta2 b on a.id=b.id
/*结论:
左表的id必须完全跟右表的id一致,不匹配的不显示
*/

--左链接测试
select a.id,a.aa,b.id,b.aa from #ta1 a
left join #ta2 b on a.id=b.id
/*
结论:
以左表作为基准,右表能匹配上的就显示出来,不匹配的就显示成NULL,
记录个数满足左表
*/

--右连接测试
select a.id,a.aa,b.id,b.aa from #ta1 a
right join #ta2 b on a.id=b.id
/*
和左连接一样,只是以右表为基准了
*/

我的sql server 已经卸了,要不然给你试试,这个你可以自己试试啊, 定义两张表 他们都元组数量不等(但是要有部分重复属性,要连接用),两张表连接时候可以试试left join 和right join的不同效果 你就能理解.