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

二十、MySQL多表关系

1、概述

        在项目开发中,在进行数据库表结构设计时,会根据业务需求以及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种对应关系

2、多表关系分类

(1)一对多

(2)多对多

(3)一对一

3、一对多

(1)基础举例:

4、多对多

(1)基础举例:

(2) 代码举例:

use other;
select database();
create table student(id int auto_increment primary key comment '主键ID',name varchar(10) comment '姓名',no varchar(10) comment '学号'
)comment '学生表';
insert into student values (null,'lom','42201'),(null,'kom','42202'),(null,'jom','42203'),(null,'hom','42204');create table course(id int auto_increment primary key comment '主键ID',class varchar(10) comment '课程名称'
);
insert into course values (null,'chinese'),(null,'math'),(null,'chinese'),(null,'english');create table student_course(id int auto_increment primary key comment '主键',StudentId int not null comment '学生ID',CourseId int not null comment '课程ID',constraint fk_CourseId foreign key (CourseId) references course(id),constraint fk_StudentId foreign key (StudentId) references student(id)
)comment '学生课程中间表';
insert into student_course values (null,1,1),(null,1,2),(null,1,4),(null,2,1),(null,2,2),(null,3,1),(null,3,2),(null,3,3),(null,3,4),(null,4,2);

运行之后,会建立三个表:

student:存放着学生信息的表,其字段“id”作为student_source表中的StudentId字段的外键;

source:存放着课程名称,其字段“id”作为student_source表中的SourceId字段的外键;

student_sources:作为一个中间表,将student和source两张表连接在一起,多对多关系;

5、一对一

(1)基础举例:

在创建子表结构时,给外键字段设置限制“唯一”,unique即可

(2)代码举例:

http://www.lryc.cn/news/167963.html

相关文章:

  • HarmonyOS/OpenHarmony应用开发-DevEco Studio新建项目的整体说明
  • 去耦电路设计应用指南(三)磁珠/电感的噪声抑制
  • Spring Bean的获取方式
  • 4795-2023 船用舱底水处理装置 学习记录
  • [框架设计之道(二)]设备、任务设置及业务流程
  • Nuxt3+Vite批量引入图片
  • 采用nodejs + socket.io实现简易聊天室功能(群聊 + 私聊)
  • 消息队列(一):需求分析
  • ImageViewer技术实现细节
  • MFC多文档程序,从菜单关闭一个文档和直接点击右上角的x效果不同
  • 【数据结构】C++实现AVL平衡树
  • 图神经网络系列之序章
  • Unity中 UI Shader的基本功能
  • 【自学开发之旅】Flask-标准化返回-连接数据库-分表-orm-migrate-增删改查(三)
  • numpy增删改查
  • 【kafka】kafka重要的集群参数配置
  • cs224w_colab3_2023 And cs224w_colab4_2023学习笔记
  • Cannot find module ‘prop-types‘
  • LeetCode-63-不同路径Ⅱ-动态规划
  • unity 使用Photon进行网络同步
  • 大数据课程M1——ELK的概述
  • C# byte[] 如何转换成byte*
  • MySQL与Oracle的分页
  • git基本手册
  • 每日一题(两数相加)
  • 恒运资本:沪指震荡涨0.28%,医药板块强势拉升,金融等板块上扬
  • 【计算机网络】Tcp详解
  • 最简单的laravel不使用任何扩展导出csv
  • Android studio 断点调试、日志断点
  • 服务器数据恢复-热备盘同步过程中硬盘离线的RAID5数据恢复案例