Java登陆第六天——SQL之SQL(四)外连接

外连接

外连接分为左外连接和右外连接。

有的也叫联表查询,联表查询分为左表查询(左外连接)和右表查询(右外连接)。

准备数据

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);

image

左外连接

完全显示左边的表就是左外连接(左表查询)

--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;

程序运行结果:
image

右外连接

完全显示右边的表就是右外连接(右表查询)

--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;

程序运行结果:
image

在开发中往往根据开发习惯来选择左外连接和右外连接。

如果栗子的逻辑语句不改,使用多表查询来写的话看看有什么不同。

SQL语句:

select stu.id,name,grade
	from stu,exam
	where stu.id = exam.id;

程序运行结果:
image
从结果上可以发现exma表中的(11,8)直接丢失了。

posted @ 2023-11-14 16:23  rowbed  阅读(12)  评论(0编辑  收藏  举报