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

Posted 森明帮大于黑虎帮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL从青铜到王者第七篇:MySQL内外连接相关的知识,希望对你有一定的参考价值。

系列文章目录



前言


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

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

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

用标准的内连接写法

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

成绩表exam

create table exam(id int,grade int) charset=utf8;

成绩表插入数据

insert into exam values(1,56),(2,78),(3,11);

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

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

两张表信息如下图:

select * from stu left join exam on stu.id=exam.id;

2.右外连接


如果联合查询,右侧的表完全显示我们就说是右外连接。

语法:

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

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

两张表信息如下:

select * from stu right join exam on stu.id=exam.id;

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

总结

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

以上是关于MySQL从青铜到王者第七篇:MySQL内外连接的主要内容,如果未能解决你的问题,请参考以下文章

数据结构从青铜到王者第七篇:数据结构之堆

C++从青铜到王者第七篇:STL之string类的初识

Lua从青铜到王者基础篇第七篇:Lua数组和迭代器

设计模式从青铜到王者第七篇:创建型模式之抽象工厂模式(Abstract Factory)

Love2d从青铜到王者第七篇:Love2d之对象

MySQL从青铜到王者第五篇:MySQL内置函数