MySQL零基础教程15—简单的表连接(join)

在学习子查询的时候,我们已经感受到了,在一个语句中,通过访问不同表的数据最终获取我们想要的结果这种操作方式,实际上在mysql中,还有更加有趣的一个功能,就是表连接,同样是在查询数据的时候连接不同的表。

基础概念

关系表

假如有这样的场景:
有一个图书馆中存放图书信息的数据库,其中有一个表,存储的是图书信息

在这个表中,存放了书名,书籍编码、作者、书记存放位置

还有一个借阅登记表,里边记录了借书人姓名、借书卡号、借的书籍编码、借书日期

两个表不是毫无关系的,而是通过书籍编码关联了起来,我们查看借阅登记表,比如A同学借了一本书,我们想知道借了什么书,就直接根据书记编码去图书信息中查找

这种方式就实现了两个表通过某一个关系连接起来,我们也称之为关系表

关系表的优势:

  • 分工明确:每张表只负责一类信息。
  • 高效联动:通过关键字段(如用户ID、书号)快速关联。
  • 数据干净:避免重复和错误,比如改地址只需改一次。

外键的概念:

在上边的例子中,借阅信息表中,存放了图书信息表的书籍编码这个字段,我们就称借阅信息表中的书籍编码叫做外键

借阅信息表的这个外键是书籍信息表中的主键值

上边的这种表的设计方式的有点就是这样的数据库可伸缩性好

简单的多表查询

这里还使用一个简单的学校信息的场景作为例子:

select student_name, teacher_name, class_name from students, classes where students.class_id=classes.id order by class_id;

在这里插入图片描述
从上边可以看出,指定查找哪个表的哪个列的语法是:表名.列名
from中也出现了两个表的名称,因为查找的字段是来自于两个表的数据

这里的where子句很重要,它保证了根据第一个表的信息一一与第二个表的信息匹配,逐行找出满足条件的数据,如果没有where相当于全排列,也就是返回了两个表信息的笛卡尔积

内连接:inner join

在上边的例子中,我们用的是两个表的某个字段相等的条件,这种连接方式叫做“等值连接”,对于这种连接,还有一种语法,就是使用inner join

select student_name, class_name from students inner join classes on students.class_id=classes.class_id;

在这里插入图片描述
效果是一样的

上边的sql我们使用的是inner join指定了要连接的表名,然后通过on子句写出过滤条件,实际上与where的作用是一样的

多表连接

在mysql中,一个sql想连多少表,就可以连多少表,规则相同

selectstudent_name,teacher_name,class_name
fromstudents,teachers,classes
wherestudents.class_id = classes.class_idand teachers.teacher_id = classes.head_teacher_id;

在这里插入图片描述
知道了连接之后,我们再回到子查询中的例子:

查询名字叫李晓红同学的班主任姓名

这个时候就多了一种解法了:

selectteacher_name
fromteachers,classes,students
whereteachers.teacher_id = classes.head_teacher_idand classes.class_id = students.class_idand students.student_name = '李晓红';

在这里插入图片描述

通过以上的例子,我们大概可以初步认识表连接的概念以及简单的用法(内连接),下一篇一起学习更加复杂的表连接的用法吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27859.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AVRCP】深入剖析 AVRCP 命令体系:从单元到特定命令的全面解读

在蓝牙音频 / 视频远程控制规范(AVRCP)中,丰富的命令体系是实现设备间高效交互的关键。这些命令涵盖了单元命令、通用单元与子单元命令、特定命令等多个层面, 一、支持的单元命令 1.1 单元命令概述 AVRCP中支持的单元命令在设备…

物业管理系统源码 物业小程序源码

物业管理系统源码 物业小程序源码 一、基础信息管理 1. 房产信息管理 记录楼栋、单元、房间的详细信息(面积、户型、产权等)。 管理业主/租户的档案,包括联系方式、合同信息等。 2. 公共资源管理 管理停车场、电梯、绿化带、公…

专题二最大连续1的个数|||

1.题目 题目分析: 给一个数字k,可以把数组里的0改成1,但是只能改k次,然后该变得到的数组能找到最长的子串且都是1。 2.算法原理 这里不用真的把0变成1,因为改了比较麻烦,下次用就要改回成1,这…

【计算机网络入门】初学计算机网络(十一)重要

目录 1. CIDR无分类编址 1.1 CIDR的子网划分 1.1.1 定长子网划分 1.1.2 变长子网划分 2. 路由聚合 2.1 最长前缀匹配原则 3. 网络地址转换NAT 3.1 端口号 3.2 IP地址不够用? 3.3 公网IP和内网IP 3.4 NAT作用 4. ARP协议 4.1 如何利用IP地址找到MAC地址…

精讲坐标轴系统(Axis)

续前文: 保姆级matplotlib教程:详细目录 保姆级seaborn教程:详细目录 seaborn和matplotlib怎么选,还是两个都要学? 详解Python matplotlib深度美化(第一期) 详解Python matplotlib深度美化&…

Metal学习笔记十:光照基础

光和阴影是使场景流行的重要要求。通过一些着色器艺术,您可以突出重要的对象、描述天气和一天中的时间并设置场景的气氛。即使您的场景由卡通对象组成,如果您没有正确地照亮它们,场景也会变得平淡无奇。 最简单的光照方法之一是 Phong 反射模…

动态规划_路径问题(典型算法思想)—— OJ例题算法解析思路

目录 一、62. 不同路径 - 力扣(LeetCode) 算法代码: 代码思路分析 问题定义: 动态规划定义: 边界条件: 填表过程: 返回结果: 代码优化思路 空间优化: 滚动数组…

【AI论文】ViDoRAG:通过动态迭代推理代理实现视觉文档检索增强生成

摘要:理解富含视觉信息的文档中的信息,对于传统的检索增强生成(Retrieval-Augmented Generation,RAG)方法来说,仍然是一个重大挑战。现有的基准测试主要集中在基于图像的问答(Question Answerin…

【赵渝强老师】监控Redis

对运行状态的Redis实例进行监控是运维管理中非常重要的内容,包括:监控Redis的内存、监控Redis的吞吐量、监控Redis的运行时信息和监控Redis的延时。通过Redis提供的监控命令便能非常方便地实现对各项指标的监控。 一、监控Redis的内存 视频讲解如下 【…

HTML前端手册

HTML前端手册 记录前端框架在使用过程中遇到的各种问题和解决方案,供后续快速进行手册翻阅使用 文章目录 HTML前端手册1-前端框架1-TypeScript框架2-CSS框架 2-前端Demo1-Html常用代码 2-知云接力3-Live2D平面动画 3-前端运维1-NPM版本管理 1-前端框架 1-TypeScrip…

C++:类和对象(下篇)

1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _mont…

JVM基本概念及内存管理模型

一、JVM基本概念 JVM(Java Virtual Machine,Java 虚拟机)是 Java 程序运行的核心组件。它负责将 Java 字节码转换为特定平台的机器指令,并提供内存管理、垃圾回收、安全性等功能。JVM 的主要功能包括以下: 加载和执行…

MyBatis - 单元测试 参数传递 注解 CRUD

目录 1. MyBatis 简介 2. 简单使用 MyBatis 2.1 创建 MyBatis 项目 2.2 连接数据库 2.3 创建 Java 类 2.4 创建 Mapper 接口 2.5 在测试类中执行 3. 单元测试 3.1 Test 3.2 SpringBootTest 3.3 BeforeEach / AfterEach 4. MyBatis 基础操作 4.1 配置 MyBatis 打印日…

大语言模型学习--本地部署DeepSeek

本地部署一个DeepSeek大语言模型 研究学习一下。 本地快速部署大模型的一个工具 先根据操作系统版本下载Ollama客户端 1.Ollama安装 ollama是一个开源的大型语言模型(LLM)本地化部署与管理工具,旨在简化在本地计算机上运行和管理大语言模型…

shell文本处理

shell文本处理 一、grep ​ 过滤来自一个文件或标准输入匹配模式内容。除了 grep 外,还有 egrep、fgrep。egrep 是 grep 的扩展,相当于 grep -E。fgrep 相当于 grep -f,用的比较少。 用法 grep [OPTION]... PATTERN [FILE]...支持的正则描述…

Linux中死锁问题的探讨

在 Linux 中,死锁(Deadlock) 是指多个进程或线程因为竞争资源而相互等待,导致所有相关进程或线程都无法继续执行的状态。死锁是一种严重的系统问题,会导致系统资源浪费,甚至系统崩溃。 死锁的定义 死锁是指…

Baklib内容中台赋能企业智管

内容中台构建全场景智管 现代企业数字化运营中,全域内容管理能力已成为核心竞争力。通过智能知识引擎驱动的内容中台架构,企业能够实现跨部门、多形态数据的统一归集与动态调度。以某制造企业为例,其利用中台系统将分散在CRM、ERP及内部文档…

ArcGIS Pro高级应用:高效生成TIN地形模型

一、引言 在地理信息科学与遥感技术的快速发展背景下,数字高程模型(DEM)已成为地形表达与分析的关键工具。 三角网(TIN)作为DEM的一种重要形式,因其能够精准描绘复杂地形特征而广受青睐。 ArcGIS Pro为用…

leetcode112-路径总和

leetcode 112 思路 我们利用递归来实现,用result字段来记录结果值,默认为false,我们递归的时候传入需要的目标值,然后每次遍历到一个节点,就用目标值减去节点当前值,最终到叶子节点时,如果是…

LLM | 论文精读 | CVPR | PEACE : 通过多模态大语言模型(MLLMs)赋能地质图全面理解

论文标题:FairCLIP: Harnessing Fairness in Vision-Language Learning 作者:Yan Luo Min Shi Muhammad Osama Khan Muhammad Muneeb Afzal等 期刊:CVPR 2025 email:yuhan.huangwhu.edu.cn 创作不易,恳请大家点赞收…