学生表和课程表可以多对多

一个学生可以学多门课程

一门课程可以有多个学生: 多对多


一个学生对应一个班级

一个班级对应多个学生: 一对多


一个老师对应多个学生

多个学生对应一个老师:一对多


一个老师教一门课

一门课对应一个老师: 一对一

  • 一对多(foreign key):

    • 学生表要关联班级表,多个学生属于一个班级. 班级是被关联的表

    • 创建班级表
      create table class(
      -> id int primary key auto_increment,
      -> caption char(20)
      -> );

    • 插入一条数据
      insert into class(caption) values(‘三年二班’),(‘一年三班’),(‘三年一班’);

    • 创建学生表
      create table student (
      -> id int primary key auto_increment,
      -> name varchar(20),
      -> sex enum(‘male’,‘female’) default ‘male’,
      -> class_id int,
      -> foreign key(class_id) references class(id)
      -> );

    • 1:n也就是一对多的形式,把外键放在学生里面

    • 插入学生数据和外键值
      insert into student(name,class_id) values(‘钢炮’,1),(‘狗蛋’,2),(‘猪猪’,3);

    • 创建教师表

    • 对这个班级来说,一门课程只有一个老师,一个老师只会教一门课程. 所以是一对一的关系
      create table teacher(
      ->id int primary key auto_increment,
      ->name varchar(20));

    • 插入一条数据
      insert into teacher(name) value(‘ff’),(‘ff1’),(‘ff2’);

    • 创建课程表
      create table course (
      -> id int primary key auto_increment,
      -> name varchar(20),
      -> teacher_id int unique,
      -> foreign key(teacher_id) references teacher(id)
      -> );
      insert into course(name,teacher_id) values (‘数学’,1),(‘语文’,2);

    • 一个学生可以学多门课程,一门课程可有有多个学生, 他们就是多对多的关系.
      create table student2course (
      -> id int primary key auto_increment,
      -> student_id int,
      -> course_id int,
      -> foreign key(student_id) references student(id),
      -> foreign key(course_id) references course(id),
      -> score int
      -> );
      insert into student2course (student_id,course_id,score) values(1,1,60),(1,2,59),(2,2,100);

    • 多表联合查询学生姓名,班级,课程,老师,分数

      select S.name,C.caption,course.name,T.name,student2course.score
      -> from student S,teacher T,class C,course,student2course
      -> where S.class_id=C.id and S.id=student2course.student_id and course.id=student2course.course_id and T.id=course.teacher_id;

mysql 数据库一对一,一对多,多对多实例相关推荐

  1. 数据库一对一 一对多 多对多关系

    参考:https://blog.csdn.net/u013144287/article/details/79024130 自己在项目中写的实例: '实体'和'公理'具有多对多关系,即一个实体可以对应多 ...

  2. Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作

    Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: ​ ​ ​  ​ ​ 由于如果只使用一张表存储所有的数据,就会操作数 ...

  3. SQLAlchemy_定义(一对一/一对多/多对多)关系

    SQLAlchemy_定义(一对一/一对多/多对多)关系 目录 Basic Relationship Patterns One To Many One To One Many To Many Basi ...

  4. mybatis的一对一 一对多 多对多

    mybatis的一对一 一对多 多对多 1.表 2.建表语句 order_t表 CREATE TABLE `order_t` ( `id` int(11) NOT NULL, `user_id` in ...

  5. 织梦数据库改mysql前缀_织梦快速批量修改MYSQL数据库表前缀与表名实例操作

    这篇文章主要为大家详细介绍了织梦快速批量修改MYSQL数据库表前缀与表名实例操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 我们在安装织梦系统的时候,有一次 ...

  6. MySQL 数据库 source 命令详解及实例

    MySQL 数据库 source 命令详解及实例 MySQL 数据库 source 命令,该命令是数据库导入命令.source 命令的用法非常简单,首先你需要进入 MySQL 数据库的命令行管理界面, ...

  7. 7. MyBatis多表查询 - 一对一 - 一对多 - 多对多

    7. MyBatis多表查询 - 一对一 - 一对多 - 多对多 前言 在前面的篇章,我们已经熟悉了单表查询,下面我们来看看如何进行 多表查询. 数据准备 create database if not ...

  8. JPA 一对一 一对多 多对一 多对多配置

    1 JPA概述 1.1 JPA是什么 JPA (Java Persistence API) Java持久化API.是一套Sun公司 Java官方制定的ORM 方案,是规范,是标准 ,sun公司自己并没 ...

  9. day 69-70 一对一 一对多 多对一联表查询

    day 69 orm操作之表关系,多对多,多对一多对一/一对多,多对多{类中的定义方法}day691. 昨日内容回顾1. 单表增删改查2. 单表查询API返回QuerySet对象的:1. .all() ...

最新文章

  1. 使用leangoo做多团队敏捷开发项目管理
  2. 【Linux 操作系统】 Secure CRT 终端配置 -- 配置语法高亮 光标 和 字体
  3. Elasticsearch——Search的基本介绍
  4. hashset hastable dictionary concurrentdictionary区别
  5. OpenCV高效准确的场景文本检测器(EAST)(附完整代码)
  6. Socket.IO for Unity 简要介绍
  7. Bootstrap学习笔记(四)-----Bootstrap每天必学之表单
  8. 在Ocelot中使用自定义的中间件(一)
  9. python 里面的单下划线与双下划线的区别
  10. 前端学习(1864)vue之电商管理系统电商系统之绘制登录表单区域带icon的输入框
  11. linux安装jdk(二)
  12. html表单作业练习
  13. 有限差分法下-一维中的显示有限差分(python)
  14. 古月学院《如何在Gazebo中实现阿克曼转向车的仿真》课程资料在ROS Noetic版本中运行时的常见错误及解决方法
  15. 2021全新整合单机游戏 PC电脑版中文合集系列下载持续更新
  16. Lacuncher3---修改文件夹图标和修改桌面布置
  17. 计算机使用技巧大全 书,总算明白电脑使用技巧大全
  18. AppOps命令分析
  19. [风一样的创作]二次封装阿里云短信 验证码 发送短信 查询短信 编辑短信
  20. 为痉挛性斜颈的患者敲响警钟,必看文章!

热门文章

  1. 2021年最热门的5种编程语言
  2. FineReport中如何对cpt模板加密
  3. 组合控件——升级版翻页——下拉刷新布局SwipeRefreshLayout
  4. 共论技术变革,分享实践经验丨2020数据技术嘉年华·金融峰会率先在深圳召开...
  5. 学习OpenCV——对图像中的多个条形码进行定位
  6. 【美化§§小鸟的爱巢xp电脑主题】
  7. WinRAR4.20注册文件rarreg.key
  8. 安装lightgbm报错Filelt ornoiEtnw Cuild nt find moble ‘Try usi ng the fil. pth with constowctor synta.
  9. 字符串转整数函数stoi()实现
  10. 使用lr如何添加照片?