欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-16 12:54:41
...

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

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、left outer join 、right join、 inner join的比较数据库中join、left outer join 、right join、 inner join的比较

我们首先执行join操作

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

得到的结果为上图数据库中join、left outer join 、right join、 inner join的比较

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

现在进行左外连接

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

得到的结果是

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

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

针对于right join

我们使用如下的sql语句

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

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

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

最后我们来看一下inner join

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

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

总结

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