【MySQL从青铜到王者】第七篇:MySQL内外连接

【MySQL从青铜到王者】第七篇:MySQL内外连接_第1张图片

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、表的内连和外连(重点)
      • 1.内连接
      • 1.案例:显示SMITH的名字和部门名称
      • 2.外连接
        • 1.左外连接
          • 1.查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
        • 2.右外连接
          • 1.对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来
          • 2.列出部门名称和这些部门的员工信息,同时列出没有员工的部门
  • 总结


前言


一、表的内连和外连(重点)

表的连接分为内连和外连。

1.内连接

在这里插入图片描述
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。备注:前面学习的都是内连接!

语法:

select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;

1.案例:显示SMITH的名字和部门名称

用前面的写法

select ename,dname from emp,dept where emp.deptno=dept.deptno and ename=‘SMITH’;
【MySQL从青铜到王者】第七篇:MySQL内外连接_第2张图片

用标准的内连接写法

select ename ,dname from emp inner join dept on emp.deptno=dept.deptno and ename=‘SMITH’;
在这里插入图片描述

2.外连接

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

1.左外连接

在这里插入图片描述
如果联合查询,左侧的表完全显示我们就说是左外连接。

语法:

select 字段名 from 表名1 left join 表名2 on 连接条件

首先创建两张表,一张学生表stu,一张成绩表grade。

学生表stu

create table stu(id int,name varchar(30)) charset=utf8;
在这里插入图片描述

学生表插入数据

insert into stu values(1,‘jack’),(2,‘tom’),(3,‘kity’),(4,‘nono’);
【MySQL从青铜到王者】第七篇:MySQL内外连接_第3张图片

成绩表exam

create table exam(id int,grade int) charset=utf8;
在这里插入图片描述

成绩表插入数据

insert into exam values(1,56),(2,78),(3,11);
【MySQL从青铜到王者】第七篇:MySQL内外连接_第4张图片

1.查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来

当左边表和右边表没有匹配时,也会显示左边表的数据。

两张表信息如下图:
【MySQL从青铜到王者】第七篇:MySQL内外连接_第5张图片

select * from stu left join exam on stu.id=exam.id;
【MySQL从青铜到王者】第七篇:MySQL内外连接_第6张图片

2.右外连接

在这里插入图片描述
如果联合查询,右侧的表完全显示我们就说是右外连接。

语法:

select 字段 from 表名1 right join 表名2 on 连接条件;

1.对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来

两张表信息如下:【MySQL从青铜到王者】第七篇:MySQL内外连接_第7张图片

select * from stu right join exam on stu.id=exam.id;
【MySQL从青铜到王者】第七篇:MySQL内外连接_第8张图片

2.列出部门名称和这些部门的员工信息,同时列出没有员工的部门

总结

以上就是今天要讲的内容,本文详细介绍了数据库内外连接的使用,数据库提供了大量的方法供我们使用,非常的便捷,我们务必掌握。希望大家多多支持!另外如果上述有任何问题,请懂哥指教,不过没关系,主要是自己能坚持,更希望有一起学习的同学可以帮我指正,但是如果可以请温柔一点跟我讲,爱与和平是永远的主题,爱各位了。加油啊!
【MySQL从青铜到王者】第七篇:MySQL内外连接_第9张图片

你可能感兴趣的:(MySQL,mysql,数据库,sql)