数据库中join、left outer join 、right join、 inner join的比较

首先我们使用下列语句进行数据库的相关表的创建。

create table user
(
	id int primary key,
	name varchar(20) not null,
	age int 
);
insert into user(id,name,age)
values
(1,"Marry",20),
(2,"Mike",18),
(3,"Nike",23);

create table `order`
(
	id int primary key,
	description varchar(50),
	uid int
);

insert into  `order`
values(1001,"table",1),(1002,"ball",1),(1003,"key",2),(1004,"football",7);

我们在对数据库中存储的数据进行查询一下


我们首先执行join操作

select a.name,b.description from user a join `order` b on a.id=b.uid;

得到的结果为上图

可以看出join操作主要是两个表中都有的,这两个表的连接的主要依据是id。

现在进行左外连接

select a.name,b.description from user a left outer join `order` b on a.id=b.uid;

得到的结果是


从上面的结果,我们可以得出结论,左表的字段一定会全部出现,对于没有进行连接的操作,也就是说右表没有值和它对应,这里会设置为NULL。

针对于right join

我们使用如下的sql语句

select a.name,b.description from user a right outer join `order` b on a.id=b.uid;


对于以上的结果,我们可以总结得出,对于右外连接,主要的是将右表的元素全部取完,对于左表中没有对应的,将会使用null代替。

最后我们来看一下inner join


可以看出inner join和join 是一样的,没有区别

总结

有些同学可能会看到left join,right join等词,这个都等同于left outer join和right outer join ,我们可以从以上的例子看出,这里left join保留的是左表,即将左表的全部元素用来做连接,right join则恰好相反,对于 inner join和join,这里只是两个表的交集连接。

猜你喜欢

转载自blog.csdn.net/oeljeklaus/article/details/80137597