表的内外连接是mysql中比较常用的内容 也是我们学习mysql的重点
但是其实它的内容和语法都是很少很简单的
内连接
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连
接,也是在开发过程中使用的最多的连接查询
语法
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;
不过其实这里我并不推荐大家使用内连接 因为使用内连接的场景都可以使用笛卡尔积来替代
比如说下面的几道例题
显示SMITH的名字和部门名称
这是使用笛卡尔积做出的结果
这是使用内连接做出的结果
外连接
左外连接
如果联合查询,左侧的表完全显示我们就说是左外连接。
左外连接的语法格式是这样子的
select 字段名 from 表名1 left join 表名2 on 连接条件
下面是案例
查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
-- 建两张表 create table stu (id int, name varchar(30)); -- 学生表 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);
在我们前面使用笛卡尔积做的时候会删除掉一些“无效数据” 但是有时候我们不想要这些数据被删除 此时我们就可以使用左外连接来处理
使用左外连接之后 我们可以查找一些所谓的‘无效数据’
这里我们就可以发现 exam的id为null依旧显示出来了
右外连接
右外连接和左外连接之间只差了一个关键字
语法:
select 字段名 from 表名1 right join 表名2 on 连接条件
我们还是使用上面的题目 稍微改变下语法即可
总结