数据库中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,这里只是两个表的交集连接。
上一篇: leetcode LCP 4. 覆盖
下一篇: python中的或者怎么写
推荐阅读
-
SQL联合查询inner join、outer join和cross join的区别详解
-
解析mysql left( right ) join使用on与where筛选的差异
-
SQL中的left join right join
-
超详细mysql left join,right join,inner join用法分析
-
sql中的left join以及on、where关键字的区别
-
oracle中left join和right join的区别浅谈
-
sql中的left join及on、where条件关键字的区别详解
-
深入Oracle的left join中on和where的区别详解
-
Oracle数据库INNER JOIN语句、LEFT JOIN语句、RIGHT JOIN语句等使用学习
-
SQL 外链接操作小结 inner join left join right join