mysql 数据库一对一,一对多,多对多实例
学生表和课程表可以多对多
一个学生可以学多门课程
一门课程可以有多个学生: 多对多
一个学生对应一个班级
一个班级对应多个学生: 一对多
一个老师对应多个学生
多个学生对应一个老师:一对多
一个老师教一门课
一门课对应一个老师: 一对一
- 一对多(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 数据库一对一,一对多,多对多实例相关推荐
- 数据库一对一 一对多 多对多关系
参考:https://blog.csdn.net/u013144287/article/details/79024130 自己在项目中写的实例: '实体'和'公理'具有多对多关系,即一个实体可以对应多 ...
- Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作
Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: 由于如果只使用一张表存储所有的数据,就会操作数 ...
- SQLAlchemy_定义(一对一/一对多/多对多)关系
SQLAlchemy_定义(一对一/一对多/多对多)关系 目录 Basic Relationship Patterns One To Many One To One Many To Many Basi ...
- mybatis的一对一 一对多 多对多
mybatis的一对一 一对多 多对多 1.表 2.建表语句 order_t表 CREATE TABLE `order_t` ( `id` int(11) NOT NULL, `user_id` in ...
- 织梦数据库改mysql前缀_织梦快速批量修改MYSQL数据库表前缀与表名实例操作
这篇文章主要为大家详细介绍了织梦快速批量修改MYSQL数据库表前缀与表名实例操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 我们在安装织梦系统的时候,有一次 ...
- MySQL 数据库 source 命令详解及实例
MySQL 数据库 source 命令详解及实例 MySQL 数据库 source 命令,该命令是数据库导入命令.source 命令的用法非常简单,首先你需要进入 MySQL 数据库的命令行管理界面, ...
- 7. MyBatis多表查询 - 一对一 - 一对多 - 多对多
7. MyBatis多表查询 - 一对一 - 一对多 - 多对多 前言 在前面的篇章,我们已经熟悉了单表查询,下面我们来看看如何进行 多表查询. 数据准备 create database if not ...
- JPA 一对一 一对多 多对一 多对多配置
1 JPA概述 1.1 JPA是什么 JPA (Java Persistence API) Java持久化API.是一套Sun公司 Java官方制定的ORM 方案,是规范,是标准 ,sun公司自己并没 ...
- day 69-70 一对一 一对多 多对一联表查询
day 69 orm操作之表关系,多对多,多对一多对一/一对多,多对多{类中的定义方法}day691. 昨日内容回顾1. 单表增删改查2. 单表查询API返回QuerySet对象的:1. .all() ...
最新文章
- 使用leangoo做多团队敏捷开发项目管理
- 【Linux 操作系统】 Secure CRT 终端配置 -- 配置语法高亮 光标 和 字体
- Elasticsearch——Search的基本介绍
- hashset hastable dictionary concurrentdictionary区别
- OpenCV高效准确的场景文本检测器(EAST)(附完整代码)
- Socket.IO for Unity 简要介绍
- Bootstrap学习笔记(四)-----Bootstrap每天必学之表单
- 在Ocelot中使用自定义的中间件(一)
- python 里面的单下划线与双下划线的区别
- 前端学习(1864)vue之电商管理系统电商系统之绘制登录表单区域带icon的输入框
- linux安装jdk(二)
- html表单作业练习
- 有限差分法下-一维中的显示有限差分(python)
- 古月学院《如何在Gazebo中实现阿克曼转向车的仿真》课程资料在ROS Noetic版本中运行时的常见错误及解决方法
- 2021全新整合单机游戏 PC电脑版中文合集系列下载持续更新
- Lacuncher3---修改文件夹图标和修改桌面布置
- 计算机使用技巧大全 书,总算明白电脑使用技巧大全
- AppOps命令分析
- [风一样的创作]二次封装阿里云短信 验证码 发送短信 查询短信 编辑短信
- 为痉挛性斜颈的患者敲响警钟,必看文章!
热门文章
- 2021年最热门的5种编程语言
- FineReport中如何对cpt模板加密
- 组合控件——升级版翻页——下拉刷新布局SwipeRefreshLayout
- 共论技术变革,分享实践经验丨2020数据技术嘉年华·金融峰会率先在深圳召开...
- 学习OpenCV——对图像中的多个条形码进行定位
- 【美化§§小鸟的爱巢xp电脑主题】
- WinRAR4.20注册文件rarreg.key
- 安装lightgbm报错Filelt ornoiEtnw Cuild nt find moble ‘Try usi ng the fil. pth with constowctor synta.
- 字符串转整数函数stoi()实现
- 使用lr如何添加照片?