news 2026/4/27 17:13:58

MySQL内连和外连

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL内连和外连

1. 内连接

  • 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选
  • 只写JOIN ... ON等价于INNER JOIN ... ON(内连接)

语法

select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;

备注:前面学习的都是内连接

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

-- 用前面的写法 mysql> select ename, dname from emp, dept -> where emp.deptno=dept.deptno and -> ename='SMITH'; +-------+----------+ | ename | dname | +-------+----------+ | smith | research | +-------+----------+ 1 row in set (0.00 sec) -- 用标准的内连接写法 mysql> select ename, dname from emp inner join dept on -> emp.deptno=dept.deptno and -> ename='SMITH';

2. 外连接

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

2.1 左外连接

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

语法

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); -- 当左边表和右边表没有匹配时,也会显示左边表的数据 mysql> select * from stu left join exam on stu.id=exam.id; +------+------+------+-------+ | id | name | id | grade | +------+------+------+-------+ | 1 | jack | 1 | 56 | | 2 | tom | 2 | 76 | | 3 | kity | NULL | NULL | | 4 | nono | NULL | NULL | +------+------+------+-------+

2.2 右外连接

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

语法:

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

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

mysql> select * from stu right join exam on stu.id=exam.id; +------+------+------+-------+ | id | name | id | grade | +------+------+------+-------+ | 1 | jack | 1 | 56 | | 2 | tom | 2 | 76 | | NULL | NULL | 11 | 8 | +------+------+------+-------+
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:28:33

GROUP BY进阶用法

问题重新: sql语句中使用了GROUP BY wf_cur.REQUESTID, wf_cur.NODEID,为什么还会出用两行相同REQUESTID的记录呢,GROUP BY不就是拿某个字段来分组吗?GROUP BY 是按你指定的字段组合进行分组的,不是按单个字段。你的例子:sqlGROUP…

作者头像 李华
网站建设 2026/4/27 11:27:28

Xiaomi MiMo-V2-Flash 开源:高效推理、代码与 Agent 基座模型

Xiaomi MiMo-V2-Flash 是小米专为极致推理效率自研的总参数 309B(激活15B)的 MoE 模型,通过引入 Hybrid 注意力架构创新 及 多层 MTP 推理加速,在多个 Agent 测评基准上进入全球开源模型 Top 2;代码能力超过所有开源模…

作者头像 李华
网站建设 2026/4/22 6:10:37

VSCode 配置 C++ 开发环境(Windows+Linux 双平台)

前言作为大二计科生,是不是还在为 C 开发环境配置头疼?Dev-C 功能太简陋,Visual Studio 体积太大,VSCode 凭借轻量、跨平台、插件丰富的优势,成为很多程序员的首选。本文详细讲解 Windows 和 Linux 平台下 VSCode 的 C…

作者头像 李华
网站建设 2026/4/27 10:13:17

自定义Bean Validation注解并自定义校验逻辑

自定义校验注解 实现自定义校验注解,本质上是遵循 JSR-303/JSR-380 (Bean Validation) 规范。 在 Spring Boot 中实现它,只需要 两步走: 定义注解(接口):相当于制定法律条款。定义校验器(实现…

作者头像 李华
网站建设 2026/4/19 9:57:53

深度学习框架实战:TensorFlow与PyTorch的对比与选择指南

摘要随着人工智能技术的快速发展,深度学习框架已成为开发者必备的工具。本文将从实际应用角度出发,深入对比TensorFlow和PyTorch两大主流框架,帮助开发者根据具体需求做出明智选择,并附上实战代码示例。引言在当今AI技术爆炸式发展…

作者头像 李华
网站建设 2026/4/19 10:45:36

【MongoDB实战】7.2 事务实战:转账场景数据一致性保证(完整实操代码)

文章目录 《MongoDB实战入门》7.2 事务实战:转账场景数据一致性保证(完整实操代码) 一、前置说明:MongoDB事务的核心前提 二、核心业务场景定义 三、Node.js版本实战代码(基于mongodb驱动5.x) 1. 安装依赖 2. 完整实操代码 3. 运行结果说明 四、Python版本实战代码(基于…

作者头像 李华