数据库两表连接四种⽅法
⼀般我们连接两张表时,都是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
1111111
2222222
3333333
4244444
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
  结果:
join on是什么连接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 right join:右表所有⾏都输出,如果不到左表对应字段,即该字段为null full join:左右表⾏全部对应输出,如果不到对应字段,即为null