在MySQL中,内连(INNER JOIN)和外连(OUTER JOIN)是用于联接多个表的操作。接下来,我分别给大家介绍下二者。
目录
?3、案例:显示SMITH的名字和部门名称(来自oracle 9i的经典测试表)
在MySQL中, 内连接 实际上就是利用 where 子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。
SELECT 列名
FROM 表1
INNER JOIN 表2 ON 表1.关联列 = 表2.关联列;注:内连会返回同时存在于表1和表2中的行,并且仅包括满足关联条件的行。
之前我们通过笛卡尔积可以对其进行操作,今天我们通过内连接的方式来进行有关操作。具体如下:
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';
【小结】
?
在MySQL中,外连接是一种用于检索两个或多个表之间的数据的方法,它包括左外连接、右外连接和全外连接。
?💨?语法如下:select 字段名 from 表名1 left join 表名2 on 连接条件
需求: 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
select * from stu left join exam on stu.id=exam.id;
💨?语法如下:select 字段名 from 表名1 right?join 表名2 on 连接条件
需求 :对 stu 表和 exam 表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要 显示出来
select * from stu right join exam on stu.id=exam.id;
需求 :列出部门名称和这些部门的员工信息,同时列出没有员工的部门
现在有这样的场景,一家公司为了业务架构的完整设置了某个部门,但是暂时这个部门还没有人,随着之后公司的发展这个部门才会发挥作用。
?代码展示:
select dname,ename,dept.deptno from dept left join emp on dept.deptno=emp.deptno order by dept.deptno asc;
输出显示:?
?
大家看完上诉可以通过下面这两道题目练练手:
通过内连和外连操作,可以根据表之间的关联条件将数据联接起来,并进行灵活的查询和分析。具体选择哪种联接类型取决于你的需求和数据结构。