数据库两表连接四种方法

一般我们连接两张表时,都是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

 

 

猜你喜欢

转载自www.cnblogs.com/Somuns/p/9160355.html