MySQL表的内外连接

内连接

内连接实际上就是利用where子句对两种表形成的笛卡尔积进行筛选,前面所说过的查询都是内连接,也是在开发过程中使用的最多的连接查询。

sql 复制代码
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;

inner join : 将两个表按照指定条件关联匹配,只返回两个表中满足连接条件的行。可简写为join

on : 用来指定join的关联条件为连接两个表的核心规则,也可附加筛选条件

显示SMITH的名字和部门名称

用上一篇的写法为

内连接的写法为

sql 复制代码
select ename,dname from EMP inner join DEPT on EMP.deptno=DEPT.deptno where ename='SMITH';

select ename,dname from EMP inner join DEPT on EMP.deptno=DEPT.deptno and ename='SMITH';

on后的条件形成笛卡尔积,where进一步筛选 这种写法会更清晰

外连接

左外连接

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

语法

sql 复制代码
select 字段名  from 表名1 left join 表名2 on 连接条件

四名同学,两名同学有成绩,left join 会优先考虑完整显示左侧的表,inner

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

右外连接

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

语法

sql 复制代码
select 字段 from 表名1 right join 表名2  on 连接条件;

显示所有成绩即使没有学生与之对应

将两个表互换位置就是左外连接,显示所有学生的成绩...

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

优先显示部门表,根据 deptno来筛选

select * from DEPT left join EMP on EMP.deptno=DEPT.deptno;

相关推荐
AI_5678几秒前
阿里云OSS成本优化:生命周期规则+分层存储省70%
运维·数据库·人工智能·ai
choke2334 分钟前
软件测试任务测试
服务器·数据库·sqlserver
龙山云仓4 分钟前
MES系统超融合架构
大数据·数据库·人工智能·sql·机器学习·架构·全文检索
IT邦德5 分钟前
OEL9.7 安装 Oracle 26ai RAC
数据库·oracle
jianghua00124 分钟前
Django视图与URLs路由详解
数据库·django·sqlite
那我掉的头发算什么25 分钟前
【Mybatis】Mybatis-plus使用介绍
服务器·数据库·后端·spring·mybatis
倔强的石头10626 分钟前
关系数据库替换用金仓:数据迁移过程中的完整性与一致性风险
数据库·kingbase
_Johnny_27 分钟前
ETCD 配额/空间告警模拟脚本
数据库·chrome·etcd
静听山水30 分钟前
StarRocks查询加速
数据库
静听山水37 分钟前
StarRocks高级特性
数据库