当前位置: 首页 > ai >正文

MYSQL之表的内连和外连

表的连接分为 内连外连:

内连接

我们在多表查询中将 from 语句的多个表进行笛卡尔积用where条件判断 进行多表的对接, 其实就是内连接的一种.

内连接是在开发过程中使用的最多的连接查询.

语法:

不写 inner, 默认是内连接(inner)

select 字段 from1 inner join2 on 连接条件 and 其他条件;

使用 join on 连接和之前单纯的 from where 效果是一样的, 但是这样写逻辑更清晰, 是一个递进的过程, 将连接条件和其他条件分开, 连接的条件就放在 on 中, 然后再用 where 在新表的基础上进行筛选.

案例: 显示SMITH的名字和部门名称

//方法一, 常规多表查询select ename, dept.deptno from dept, emp where dept.deptno=emp.deptno and ename='SMITH'
+-------+--------+
| ename | deptno |
+-------+--------+
| SMITH | 20     |
+-------+--------+
//方法二, join on连接表, where 筛选条件
select ename, emp.deptno from emp inner join dept on emp.deptno=dept.deptno where ename='SMITH'
+-------+--------+
| ename | deptno |
+-------+--------+
| SMITH | 20     |
+-------+--------+

外连接

外连接分为左外连接右外连接

先提供两张表:

select * from stu;
+----+------+
| id | name |
+----+------+
| 1  | jack |
| 2  | tom  |
| 3  | kity |
| 4  | nono |
+----+------+select * from exam;
+----+-------+
| id | grade |
+----+-------+
| 1  | 56    |
| 2  | 76    |
| 11 | 8     |
+----+-------+

左外连接

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

语法 (join 前的 inner 改为 left 即可):

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

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

 select stu.id, name, grade from stu left join exam on stu.id=exam.id
+----+------+--------+
| id | name | grade  |
+----+------+--------+
| 1  | jack | 56     |
| 2  | tom  | 76     |
| 3  | kity | <null> |
| 4  | nono | <null> |
+----+------+--------+

右外连接

和左外连接相反, 如果联合查询, 右侧的表完全显示, 我们就说是右外连接.
语法 (join 前的 inner 改为 right 即可):

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

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

select stu.id, name, grade  from stu right join exam on stu.id=exam.id
+--------+--------+-------+
| id     | name   | grade |
+--------+--------+-------+
| 1      | jack   | 56    |
| 2      | tom    | 76    |
| <null> | <null> | 8     |
+--------+--------+-------+

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

//法一: 左外连接
select dept.deptno, dname, empno 
from dept left join emp 
on dept.deptno=emp.deptno 
order by dept.deptno
+--------+------------+--------+
| deptno | dname      | empno  |
+--------+------------+--------+
| 10     | ACCOUNTING | 7934   |
| 10     | ACCOUNTING | 7839   |
| 10     | ACCOUNTING | 7782   |
| 20     | RESEARCH   | 7902   |
| 20     | RESEARCH   | 7876   |
| 20     | RESEARCH   | 7788   |
| 20     | RESEARCH   | 7566   |
| 30     | SALES      | 7900   |
| 30     | SALES      | 7844   |
| 30     | SALES      | 7698   |
| 30     | SALES      | 7654   |
| 30     | SALES      | 7521   |
| 40     | OPERATIONS | <null> |
+--------+------------+--------+//法二: 右外连接:
select d.deptno, dname, empno from emp e 
right join dept d 
on e.deptno=d.deptno 
order by deptno
+--------+------------+--------+
| deptno | dname      | empno  |
+--------+------------+--------+
| 10     | ACCOUNTING | 7934   |
| 10     | ACCOUNTING | 7839   |
| 10     | ACCOUNTING | 7782   |
| 20     | RESEARCH   | 7902   |
| 20     | RESEARCH   | 7876   |
| 20     | RESEARCH   | 7788   |
| 20     | RESEARCH   | 7566   |
| 30     | SALES      | 7900   |
| 30     | SALES      | 7844   |
| 30     | SALES      | 7698   |
| 30     | SALES      | 7654   |
| 30     | SALES      | 7521   |
| 40     | OPERATIONS | <null> |
+--------+------------+--------+
http://www.xdnf.cn/news/11815.html

相关文章:

  • ABP-Book Store Application中文讲解 - Part 8: Authors: Application Layer
  • 解决Java项目NoProviderFoundException报错
  • C++课设:银行账户管理系统
  • 【Golang笔记04】Go语言中文件操作的学习笔记
  • tauri2项目中自定义执行cmd命令界面卡死以及中文出错问题
  • Elasticsearch中的监控(Monitoring)功能介绍
  • 【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
  • 八:操作系统设备管理之I/O 操作方法
  • AI编程规范失控?三大策略用Cursor Rules精准约束
  • 电子手机商城源码+springboot+vue3(带用户协同过滤个性化推荐算法)
  • DexUMI:以人手为通用操作界面,实现灵巧操作
  • 平面上的最接近点对
  • 怎么通过 jvmti 去 hook java 层函数
  • 构建高效可靠的电商 API:设计原则与实践指南
  • PyTorch学习笔记 - 损失函数
  • unix/linux,sudo,其历史争议、兼容性、生态、未来展望
  • 如何有效删除 iPhone 上的所有内容?
  • 激光干涉仪:解锁协作机器人DD马达的精度密码
  • 前端工具库lodash与lodash-es区别详解
  • ES海量数据更新及导入导出备份
  • 设计模式之单例模式(二): 心得体会
  • UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误
  • 功能测试、性能测试、安全测试详解
  • 近端策略优化(PPO,Proximal Policy Optimization)
  • vue实现点击按钮input保持聚焦状态
  • Oracle实用参考(13)——Oracle for Linux静默安装(1)
  • springboot 微服务 根据tomcat maxthread 和 等待用户数量,达到阈值后,通知用户前面还有多少用户等待,请稍后重试
  • 低代码采购系统搭建:鲸采云+能源行业订单管理自动化案例
  • Electron打包前端和后端为exe
  • el-table 树形数据,子行数据可以异步加载