外连接
外连接分为左外连接和右外连接。
有的也叫联表查询,联表查询分为左表查询(左外连接)和右表查询(右外连接)。
准备数据
create table stu(
id int,
name varchar(32)
);
insert into stu values (1,'jack'),(2,'tom'),(3,'kity'),(4,'nono');
create table exam(
id int,
grade int
);
insert into exam values (1,56),(2,76),(11,8);
左外连接
完全显示左边的表就是左外连接(左表查询)
--on+逻辑语句替代的就是where+逻辑语句;
--在join左边的就是左表,在join右边的就是右表。(表1是左表,表2是右表)。
select 列名 from 表1 left join 表2 on 逻辑语句;
栗子:显示所有人的成绩(包括没有分的人)
SQL语句:
select stu.id,name,grade
from stu left join exam
on stu.id = exam.id;
程序运行结果:
右外连接
完全显示右边的表就是右外连接(右表查询)
--on+逻辑语句替代的就是where+逻辑语句;
--左表是left join,右表是right join。
select 列名 from 表1 right join 表2 on 逻辑语句;
栗子:显示所有人的成绩(包括没有分的人)
SQL语句:
select stu.id,name,grade
from exam right join stu
on stu.id = exam.id;
程序运行结果:
在开发中往往根据开发习惯来选择左外连接和右外连接。
如果栗子的逻辑语句不改,使用多表查询来写的话看看有什么不同。
SQL语句:
select stu.id,name,grade
from stu,exam
where stu.id = exam.id;
程序运行结果:
从结果上可以发现exma表中的(11,8)直接丢失了。