MySQL--四(表连接)

warning: 这篇文章距离上次修改已过416天,其中的内容可能已经有所变动。
表连接的几种类型:自连接、内连接、左外连接、右外连接。

1、自连接

       自连接:即表本身和自己连接。

准备两个表:
一个学生表stu,字段有:stu_id,stu_name,stu_cls
一个课程表class,字段有:cls_id,cls_name,cls_stu_id(选课学生id)

2、内连接

语法:

select 查找字段..
from 左表
inner join 右表
on 查找条件;

查找出所有选了课的学生的名字,和所选课程名称

select stu_name,cls_name

from stu
inner join class
on stu_id= clas_stu_id;

3、左外连接

       左外连接:返回左表中所有的数据和右表中符合条件的数据。

通用语法:

select 查找字段..
from 左表
left join右表
on 左表字段  = 右表字段 ;

oracle中有特有的连接语法:

select 查找字段..
from 左表,右表
where 左表字段 = 右表字段(+);

需求:查找出所有学生的姓名和学生选的课的名称。(与上面内连接的区别在于这里查找的是所有学生的名字,因为有的学生有可能没有选课,在内连接中没有选课的学生并没有查找。

通用语法:
select stu_name,cls_name
from stu
left join class
on stu_id = cls_stu_id;
oracle特有语法实现:
select stu_name,cls_name
from stu,class
where stu_id = cls_stu_id(+);

4、右外连接

       右外连接:返回右表中所有的数据和左表中符合条件的数据。(右外连接和左外连接其实可以互相转换的,如果把左连接中的左表作为右表,就成了右连接)

通用语法:
select 左表字段,右表字段
from 左表
right join 右表
on 左表字段 = 右表字段;
特有语法:
select 左表字段,右表字段
from 左表,右表
where 左表字段(+) = 右表字段;

需求:用右连接找到所有学生姓名,和所有被学生选的课程。

通用语法
select cls_name,stu_name
from class
right join stu
on cls_stu_id = stu_id;
特有语法;
select cls_name,stu_name
from class,stu
where cls_stu_id(+) = stu_id;

<br/>

最后修改于:2023年03月31日 18:08

添加新评论