mysql一对多、多对多关系表的建立与查询
夏梦,只写最简洁最有效的教程—欢迎关注
在实际的开发场景中,我们会建立非常多的表,其中一对多和多对多关系表的建立和查询对与一些刚接触的人来说可能会有些疑惑,所以为了解决这些疑惑,有了这篇文章。
注意:本文的重点在于一对多、多对多关系表的建立和查询
一对多
现在你手里正拿着一部iPhone手机,除了这部之外你家里还有一部华为手机和三星手机,一个人有多部手机,这就是典型的一对多关系。
此时,我们就知道需要建立两个表,一个是"人"表,一个是"手机"表。
建表
于是,先建立一个people表,包含了以下字段
再建立一个手机表,包含了以下字段
建表语句
DROP TABLE IF EXISTS `people`;
CREATE TABLE `people` (`people_id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,PRIMARY KEY (`people_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
CREATE TABLE `phone` (`phone_id` int(11) NOT NULL AUTO_INCREMENT,`brand` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`model` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`people_id` int(11) NULL DEFAULT NULL,PRIMARY KEY (`phone_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
赋值
现在向两个表中手动填值
people表
phone表
查询
使用左连接查询
查询语句
SELECT * FROM people LEFT JOIN phone on people.people_id = phone.people_id;
多对多
假如你是一个老师,需要上很多门课程。
现在学校有一个需求:要知道老师上哪些课,要知道课是被哪些老师上,这就是典型的多对多关系。
此时,我们就知道需要建立三个表,一个是"老师"表,一个是"课程"表,一个是老师和课程的联系表。
建表
老师表— teach
课程表 — class
老师课程关系表 — teach_class
建表语句
CREATE TABLE `class` (`class_id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程名字',PRIMARY KEY (`class_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
CREATE TABLE `teach` (`teach_id` bigint(20) NOT NULL AUTO_INCREMENT,`teach_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '老师名字',PRIMARY KEY (`teach_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
CREATE TABLE `teach_class` (`class_id` bigint(20) NOT NULL,`teach_id` bigint(20) NOT NULL,PRIMARY KEY (`class_id`, `teach_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
插值
老师表— teach
课程表 — class
老师课程关系表 — teach_class
查询
左连接查询
查询单个课程被哪些老师上
查询老师上哪些课程
查询语句
SELECT * FROMteach t
LEFT JOIN teach_class
on t.teach_id = teach_class.teach_id
LEFT JOIN class on teach_class.class_id = class.class_idWHERE t.teach_id = '1';
-- WHERE class.class_id = '1';
教程结束
mysql一对多、多对多关系表的建立与查询相关推荐
- 【MySql】8.多对多关系表
多对多关系: 比如在常见的订单管理数据库当中"产品"表和"订单"表之间的关系.单个订单中可以包含多个产品.另一方面,一个产品可能出现在多个订单中.因此,对于&q ...
- hibernate 一对多 多对一 关系表 增删改查大礼包ps二级查也有
今天来到混元气功 这货大概的意思就是你中有我 我中有你 ps 这里就要说到维护关系 ps写这个用了我一下午--.也是刚刚好复习到这里 顺便就写写 注意:一般都在多方维护关系,至于是用单向还是用多向要看 ...
- SQLAlchemy_定义(一对一/一对多/多对多)关系
SQLAlchemy_定义(一对一/一对多/多对多)关系 目录 Basic Relationship Patterns One To Many One To One Many To Many Basi ...
- mysql表中的多对多关系表_「一对多」关系型数据库中一对多,多对一,多对多关系(详细) - seo实验室...
一对多 在关系型数据库中,通过外键将表跟表之间联系在了一起. 一个班级有很多学生,外键维护在学生的一方,也就是多的一方.(在做页面设计的时候,需要把两个表连接到一块查询信息) 建立一个student和 ...
- 27.一对一,一对多,多对多关系表的各种骚操作
1.关系表的数据操作 (1)一对多表关系的数据的添加修改 ①学院表信息的插入: 常规方法是写个视图函数,在视图函数里添加插入数据的逻辑代码.但是这样的话--你得访问此视图函数对应的接口才能添加成功!岂 ...
- day 69-70 一对一 一对多 多对一联表查询
day 69 orm操作之表关系,多对多,多对一多对一/一对多,多对多{类中的定义方法}day691. 昨日内容回顾1. 单表增删改查2. 单表查询API返回QuerySet对象的:1. .all() ...
- Hibernate一对多/多对一关系映射详解及相应的增删查改操作
以客户与订单的关系为例 1.在实体模型类中绑定两者关系: 客户类: public class Customer {private Integer id;//客户idprivate String nam ...
- 数据库外键:一对多/多对多关系
数据库事务四大特性ACID: 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 基于原子性对存在重复数据的表进行拆分 一对多 ...
- 数据库一对一 一对多 多对多关系
参考:https://blog.csdn.net/u013144287/article/details/79024130 自己在项目中写的实例: '实体'和'公理'具有多对多关系,即一个实体可以对应多 ...
最新文章
- VMware 没网线 虚拟机和主机互联
- java-集合做成逗号分隔的字符串-类似mkstring
- 使用fastDFS客户端改造文件上传
- 学典教育计算机二级,层次化分类的离线中文签名真伪鉴别方法-计算机工程与应用.PDF...
- mysql查询每月、每天订单金额
- 圆柱属于能滚动的物体吗_小班科学领域详细教案:会滚动的物体
- 【Leetcode 795】Number of Subarrays with Bounded Maximum
- 日志打印,设置开关类【编程技巧】
- 一文详解YOLOX算法实现血细胞检测
- Android插件框架VirtualAPK学习和使用
- RF-接口自动化测试-「Body Data格式」
- android大智慧安装目录,大智慧数据文件目录解读
- UE4蓝图 绑定输入
- python练习题003:圆的面积
- Spatial4j简介
- python数据挖掘母亲和孩子身高预测_孩子身高预测公式 靠谱指数高达80分哦!
- 5G究竟如何改变我们的生活?三大特性和八大应用场景
- My dear dalao please daidai wo。
- 利用java计算长方形的面积
- 如何在linux系统之间共享文件
热门文章
- 7-14 解一元一次方程 (17 分)
- MYSQL:Inert、IGNORE、REPLACE INTO的功能与用法
- 为屏而生,为屏而死 - IT 精英”们的杯与具
- (2022mpa提前面试时间)2022年入学各院校MBA_EMBA_MEM_MPAcc提前批面试时间汇总
- 第三轮测试卷一(2020.10.29)
- 量子+AI应用:量子计算与神经网络
- GitHub搭建个人博客初始版
- 在Python中“准确而优雅”的声明函数(一)
- android大于什么系统版本,谷歌发布最新Android各版本占比数据:9.0份额超过10%
- validationQuery didn't return a row