SQL 连接查询技术笔记
一、连接查询介绍属于DQL查询用于多张表联合查询数据。MySQL 中使用join实现多表连接分为三类inner join内连接left join左连接right join右连接数据准备-- 创建数据库createdatabasedb_test2;usedb_test2;-- 班级表createtableclasses(class_idintprimarykeyauto_increment,class_namevarchar(40)notnullunique,class_remarkvarchar(200));-- 学生表createtablestudents(stu_numchar(8)primarykey,stu_namevarchar(20)notnull,stu_genderchar(2)notnull,stu_ageintnotnull,cidint);-- 班级测试数据insertintoclasses(class_name,class_remark)values(Java2204,...);insertintoclasses(class_name,class_remark)values(Java2205,...);insertintoclasses(class_name,class_remark)values(Java2206,...);insertintoclasses(class_name,class_remark)values(Python2205,...);-- 学生测试数据insertintostudents(stu_num,stu_name,stu_gender,stu_age,cid)values(20220101,张三,男,20,1);insertintostudents(stu_num,stu_name,stu_gender,stu_age,cid)values(20220102,李四,女,20,1);insertintostudents(stu_num,stu_name,stu_gender,stu_age,cid)values(20220103,王五,男,20,1);insertintostudents(stu_num,stu_name,stu_gender,stu_age,cid)values(20220104,赵柳,女,20,2);insertintostudents(stu_num,stu_name,stu_gender,stu_age,cid)values(20220105,孙七,男,20,2);-- 无班级的学生cid为nullinsertintostudents(stu_num,stu_name,stu_gender,stu_age)values(20220106,小红,女,20);insertintostudents(stu_num,stu_name,stu_gender,stu_age)values(20220107,小明,男,20);二、内连接 inner join只返回两张表匹配条件成立的数据两边没有匹配的记录不会出现在结果中。笛卡尔积不写匹配条件时A表每条记录和B表每条记录全部互相组合总条数 A表条数 × B表条数大部分数据无业务意义必须加匹配条件过滤。语法-- on连接匹配条件推荐写法先匹配再组合数据效率高select*fromstudentsinnerjoinclassesonstudents.cidclasses.class_id;-- where先生成笛卡尔积再过滤效率低不推荐select*fromstudentsinnerjoinclasseswherestudents.cidclasses.class_id;结果说明小红、小明无班级Java2206、Python2205无学生不会被查询出来。三、左连接 left join以左边表为基准左表所有记录全部展示右表匹配到就显示对应数据没有匹配则字段填充null。语法select*fromstudentsleftjoinclassesonstudents.cidclasses.class_id;结果说明全部学生都会显示小红、小明班级相关字段全部为null。四、右连接 right join以右边表为基准右表所有记录全部展示左表匹配到就显示对应数据没有匹配则字段填充null。语法select*fromstudentsrightjoinclassesonstudents.cidclasses.class_id;结果说明全部班级都会显示Java2206、Python2205对应的学生字段全部为null。五、数据表别名多表查询表名较长时可以给表设置别名简化书写多张表存在同名字段必须使用表名.字段名区分。-- 给表设置别名 s、cselects.stu_name,c.class_namefromstudents sinnerjoinclasses cons.cidc.class_id;⚠️ 核心要点总结连接类型特点inner join只返回两边互相匹配的数据left join保留左表全部数据右表无匹配填nullright join保留右表全部数据左表无匹配填null连接匹配条件使用on不要用where做连接匹配where用于连接完成之后再过滤结果。多表字段重名必须通过表别名.字段名指定字段来源。笛卡尔积会产生大量无效数据多表连接一定要写on匹配条件。

相关新闻

VueGL开发实战:构建交互式3D数据可视化仪表盘

VueGL开发实战:构建交互式3D数据可视化仪表盘

VueGL开发实战:构建交互式3D数据可视化仪表盘 【免费下载链接】vue-gl Vue.js components rendering 3D WebGL graphics reactively with three.js 项目地址: https://gitcode.com/gh_mirrors/vu/vue-gl VueGL是基于Vue.js和three.js的WebGL 3D渲染组件库&am…

2026/10/5 23:18:55 阅读更多 →
运维转大模型:脚本经验能直接迁移吗?权限日志才是Agent上线的门槛

运维转大模型:脚本经验能直接迁移吗?权限日志才是Agent上线的门槛

聊《同样转大模型,运维背景的优势和短板分别是什么?》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要去年我带团队做了一次内部转型调研,问了一圈从运维、SRE转大模型方向的同…

2026/10/2 5:49:21 阅读更多 →
login-with-metamask项目详解:从安装到部署的终极教程

login-with-metamask项目详解:从安装到部署的终极教程

login-with-metamask项目详解:从安装到部署的终极教程 【免费下载链接】login-with-metamask Demo project for "One-click Login with Blockchain: A MetaMask Tutorial" 项目地址: https://gitcode.com/gh_mirrors/lo/login-with-metamask login…

2026/10/7 9:25:38 阅读更多 →

最新新闻

从 Rule、Spec 到 Harness:AI Coding 渐进式建设路径的 TaoToken 实践

从 Rule、Spec 到 Harness:AI Coding 渐进式建设路径的 TaoToken 实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:53:44 阅读更多 →
期刊论文快速成文技巧:借助硕词AI提升发文效率

期刊论文快速成文技巧:借助硕词AI提升发文效率

期刊论文发表是科研成果输出的重要渠道,相较于学位论文,期刊文稿更看重选题新颖、观点凝练、逻辑紧凑、语言精炼。很多科研人员研究成果充足,却因写作效率低、表述不精炼、内容冗余、格式不达标,导致反复退稿、返修,错…

2026/10/7 14:53:44 阅读更多 →
硬件I2C与软件I2C谁更坑?嵌入式通信选型与避坑指南

硬件I2C与软件I2C谁更坑?嵌入式通信选型与避坑指南

1. 从一根线说起:为什么I2C总让人又爱又恨搞嵌入式的人,几乎都绕不开I2C。两根线,一根SCL时钟,一根SDA数据,挂上一堆设备,EEPROM、OLED、传感器、数字电位器、DAC,甚至某些电源管理芯片的反馈调…

2026/10/7 14:53:44 阅读更多 →
基于SSM的汽车售后服务管理系统:数据库设计到项目部署全解析

基于SSM的汽车售后服务管理系统:数据库设计到项目部署全解析

简介:一套基于SSM框架实现的汽车售后服务管理系统,面向正在筹备毕业设计的计算机专业学生,以及需要快速搭建Web管理后台的Java初学者。系统采用B/S架构,后端由Spring、SpringMVC、MyBatis整合,前端使用JSP,…

2026/10/7 14:53:43 阅读更多 →
无感FOC低速高频注入:Ud/Uq与控制频率的硬约束

无感FOC低速高频注入:Ud/Uq与控制频率的硬约束

1. 从一次电机启动失败说起:为什么Ud/Uq和注入频率值得单独拎出来讲 前阵子帮朋友调一块无感FOC驱动板,板子跑的是比较常见的滑模观测器方案,低速段一直不太稳。他的现象很典型:给一个固定频率的方波做高频注入,电机在…

2026/10/7 14:53:43 阅读更多 →
五类机器人嵌入式岗位差异全解析:从AMR到人形机器人的技能转型指南

五类机器人嵌入式岗位差异全解析:从AMR到人形机器人的技能转型指南

1. 五类机器人嵌入式岗位的真实差异 1.1 为什么同样叫“嵌入式”,薪资和门槛能差出一倍 我做了十多年嵌入式,从最早的8位机裸跑到后来带Linux BSP团队,再到这两年密集接触机器人项目,最大的感受就是: “嵌入式”这三…

2026/10/7 14:52:43 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:13 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →