Mysql内连接,外连接

it2025-10-03  7

0. 案例表

学生表(student)

班级表(class)

1. 内连接(等值连接):使用where或inner join实现

例如查询学生以及其所在班级的信息 * 写法1:select s.*, c.* from student s, class c where s.cid = c.id * 写法2:select s.*, c.* from student s inner join class c on s.cid = c.id

2. 自然连接: 在内连接的基础上去掉重复的列(去掉重复列我们手动控制)

写法:select s.*, c.cname from student s inner join class c on s.cid = c.id

3. 外连接:连接中包含了相关表中没有关联行的行,这种类型的连接称为外连接。

右外连接(right outer join):select s.*, c.cname from student s right outer join class c on s.cid = c.id 虽然C班没有学生与之关联,但是它还是被查询出来了。上面的sql使用的右外连接,那么就会选择右表(班级表)的所有行,即使左表(学生表)没有与之相关联的行。左外连接与之相反(查所有学生,即使有的学生没班级信息也会被查出来)。 左外连接(left outer join):select s.*, c.cname from student s left outer join class c on s.cid = c.id

4. 全连接:包含来自两个表的不关联的行

mysql中不能使用full outer join,需要使用union来完成

select s.*, c.cname from student s right outer join class c on s.cid = c.id union select s.*, c.cname from student s left outer join class c on s.cid = c.id

最新回复(0)