码迷,mamicode.com
首页 > 数据库 > 详细

数据库两表连接四种方法

时间:2018-06-09 18:58:34      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:height   数据   tab   student   ble   inner   name   ext   TE   

一般我们连接两张表时,都是select xxx,xx from x1,x2 where x1.a=x2.a。其实数据库还有4中join操作。

例如:表1:

student
s_id name sex
1  张三  男
2  李四  女
4  王五  男

表2:

class
c_id  id  name
1 1 11111
2 2 22222
3 3 33333
4 2 44444

1.连接查询

select s.name s_name,s.sex s_sex,c.name c_name
from student s,class c
where s.s_id=c.s_id

  结果:

s_name
s_sex
c_name
张三  男 11111
李四  女 22222
李四  男 44444

 

2.inner join

select s.name s_name,s.sex s_sex,c.name c_name
from student s inner join class c on s.s_id=c.s_id

  结果:

s_name s_sex c_name
 张三  男 11111
 李四  女 22222
 李四  女 44444

可以看出inner join 和我们直接连接查询没什么差别!

3.left join

select s.name s_name,s.sex s_sex,c.name c_name
from student s left join class c on s.s_id=c.s_id

  结果:

s_name s_sex c_name
 张三  男 11111
 李四  女 22222
 李四  女 44444
 王五  男  

4.right join

select s.name s_name,s.sex s_sex,c.name c_name
from student s right join class c on s.s_id=c.s_id

  结果:

s_name

s_sex

c_name
张三 11111
李四 22222
    33333
李四 44444

5.full join

select s.name s_name,s.sex s_sex,c.name c_name
from student s full join class c on s.s_id=c.s_id

  结果:

s_name s_sex c_name
张三 11111
李四 22222
    33333
王五  
李四 44444

综上可以看出:

普通连接和 inner join连接没什么差别!

left join:左表所有行都输出,如果找不到右表对应字段,即该字段为null

left join:右表所有行都输出,如果找不到左表对应字段,即该字段为null

left join:左右表行全部对应输出,如果找不到对应字段,即为null

 

 

 

 

 

数据库两表连接四种方法

标签:height   数据   tab   student   ble   inner   name   ext   TE   

原文地址:https://www.cnblogs.com/Somuns/p/9160355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!