mysql-DQL-内连接-外连接-笛卡尔积
一、笛卡尔积现象:
- 两张表进行连接查询时,没有限制条件会发生?
- 最终查询结果是:两张表的条数乘积,这个现象称为:笛卡尔积现象
二、连接方式:
1、内连接:inner(等值连接、非等值连接、自联结)select....from....inner join....on...where...
- 内连接:等值连接
- 案例:查询每个员工所在部门名称,显示员工名和部门名?
- 分析:给表格起别名:emp e 和dept d 表进行链接。条件是:e.deptno = d.deptno
- select e.ename,d.dname
- from emp e
- inner join dept d
- on e.deptno = d.deptno;
- 内连接:非等值连接:
- 案例:找出每个员工的薪资等级,要求显示员工名,薪资,薪资等级(先查询总表,对照总表分析)
- 分析:1、总表:select * from emp;2、等级表:select * from salgrade;
- 表达逻辑:
- select e.ename, e.sal,s.grade
- from emp e
- inner join salgrade s
- on e.sal between s.losal and s.hisal;
- 内连接:自链接:一张表看作两张表
- 案例:查询员工上级领导,要求显示员工名和对应的领导名字?
- 分析:1、select empno,ename,mgr from emp;(这里查询出来一张表)
- 2、一张表看作两张表:emp a员工;emp b领导表(这两张表都是上面查询出来的一张表一分为二)
- 3、结果:
- select a.ename as '员工', b.ename as '领导'
- from emp a
- inner join emp b
- on a.mgr = b.empno;(这句话翻译过来:员工的领导编号 = 领导的员工编号)
2、外连接:outer(左外链接、右外链接)
- 外连接:right :表示将join关键字右边的这张表看成主表,主要是为了将这张表的数据全部查询出来,
- 并关联查询左边的表,在外连接中,两张表链接产生主次关系
- 右外连接:案例:查询每个员工所在的部门名称?(思路:查询整个表格,和所需要的部门表格,进行分析)
- select e.ename,d.dname
- from emp e
- right join dept d
- on e.deptno = d.deptno;
- 左外连接:案例:查询每个员工上级领导,要求显示所有员工名字和领导名字?
- select a.ename as '员工',b.ename as'领导'
- from emp a
- left join emp b
- on a.mgr = b.empno;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南