Mysql-表关系
表关系分为三种:一对一,一对多,多对多
一对多:一个学院对应多个学生,而一个学生只对应一个学院
-- 这儿classroom 是代表的学院。
-- 一对多 - A表的一条记录 对应 B 表多条记录,B表一条记录 只能对应 A表一条记录
-- 一个classroom对应多个student
-- 创建主表
create table if not exists classroom(
id int primary key auto_increment,
name varchar(20)
);
-- 创建子表
create table student(
id int primary key auto_increment,
name varchar(10),
cls_id int,
constraint `idx_cls_id` foreign key(cls_id) references classroom(id)
); insert into classroom(name) values('Python学院'),('Web学院'),('Java学院'); insert into student(name,cls_id) values('Which',1);
insert into student(name,cls_id) values('Tuple',1);
insert into student(name,cls_id) values('Tom',3);
insert into student(name,cls_id) values('Tim',2); -- select * from student;
+----+-------+--------+
| id | name | cls_id |
+----+-------+--------+
| 1 | Which | 1 |
| 2 | Tuple | 1 |
| 3 | Tom | 3 |
| 4 | Tim | 2 |
+----+-------+--------+
一对一:一个学生对应一个地址,一个地址也对应一个学生
-- 一对一 - A表的一条记录一定只能对应B表一条记录,B表的一条记录一定只能对应A表一条记录 -- 创建学生的地址表 学生和地址一对一关系
create table stu_address(
id int primary key auto_increment,
address varchar(10),
constraint `idx_adrs_id` foreign key(id) references student(id)
); insert into stu_address(address) values('地球'),('月球'),('Earth'),('Moon');
--在插入第五六条数据会失败,应为上表student只有4个学生,id最多为4
insert into stu_address(address) values('Earth'),('Moon'); -- select * from stu_address;
+----+---------+
| id | address |
+----+---------+
| 1 | 地球 |
| 2 | 月球 |
| 3 | Earth |
| 4 | Moon |
+----+---------+
多对多:老师对应多个学生,学生也可以对应多个老师
-- 创建老师表
create table teacher(
id int primary key auto_increment,
name char(12) not null );
insert into teacher(name) values('陈老师'),('郭老师'),('范老师'),('夏老师'); -- 创建老师学生中间表
create table stu_teacher(
st_id int,
te_id int,
primary key(st_id,te_id),
constraint `idx_st_id` foreign key(st_id) references student(id),
constraint `idx_te_id` foreign key(te_id) references teacher(id)
); insert into stu_teacher values(1,1),(1,2),(2,1),(1,3),(3,1);
-- select * from stu_teacher;
+-------+-------+
| st_id | te_id |
+-------+-------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 1 | 2 |
| 1 | 3 |
+-------+-------+
Mysql-表关系的更多相关文章
- mysql 表关系 与 修改表结构
目录 mysql 表关系 与 修改表结构 两张表关系 分析步骤 修改表结构 mysql 表关系 与 修改表结构 两张表关系 多对一 以员工和部门举例 多个员工对应一个部门 foreign key 永远 ...
- mysql表关系
表与表之间的关系 """ 把所有数据都存放于一张表的弊端 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 """ # 上述的弊端产生原 ...
- MySQL表关系--外键
一.外键前戏 如果我们把所有的信息都记录在一张表中会带来的问题: 1.表的结构不清晰 2.浪费磁盘空间 3.表的扩展性极差 所以我们要把这种表拆成几张不同的表,分析表与表之间的关系. 确定表与表之间的 ...
- python开发mysql:表关系&单表简单查询
一 一对多,多对一 1.1 建立多对一 ,一对多的关系需要注意 先建立被关联的表,被关联的字段必须保证时唯一的 在创建关联的表,关联的字段一定是可以重复的 1.2 示例: 出版社 多对一,多个老师可能 ...
- MySQL表关系总结
一对多关系 : 一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关. 一对多关系,一般是一 ...
- MySQL之表关系
MySQL表关系 一对多关系 一对多与多对一是一个概念,指的是一个实体的某个数据与另外一个实体的多个数据有关联关系. 举例,学校中一个学.院可以有很多的学生,而一个学生只属于某一个学院(通常情况下), ...
- 库增删该查,表增删该查,记录增删该查,表与表关系(多对多,多对一,一对一),mysql用户管理
库增删该查 增加库 create database db1 create database db1 charset="gbk 查看库 show databases 查看所有库 show cr ...
- MySQL开发——【多表关系、引擎、外键、三范式】
多表关系 一对一关系 一对多或多对一关系 多对多关系 MySQL引擎 所谓的MySQL引擎就是数据的存储方式,常用的数据库引擎有以下几种: Myisam与InnoDB引擎之间的区别(面试) ①批量插入 ...
- MySQL数据库篇之完整性约束和表关系
主要内容: 一.完整性约束 二.表关系 1️⃣ 完整性约束 (1)何为完整性约束? 约束条件与数据类型的宽度一样,都是可选参数. 作用:用于保证数据的完整性和一致性 (2)分类主要有以下五类: 1.n ...
- mysql数据库之表关系
外键 前戏之一对多关系 # 定义一张部门员工表id name gender dep_name dep_desc1 jason male 教学部 教书育人2 egon male 外交部 漂泊游荡3 ta ...
随机推荐
- 51Nod 1091:线段的重叠(贪心)
1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 ...
- CTF-练习平台-Misc之 MISC图穷匕见
十七.MISC图穷匕见 用txt打开,发现文件尾有东西,截取出来 用notepad++的插件 HEX转ASCII 得到35019个坐标 根据图片的详细信息的提示 应该是要把这些坐标转换为图形 这里使用 ...
- list.stream().parallel() 并行流
https://blog.csdn.net/u011001723/article/details/52794455/ : parallel()其实就是一个并行执行的流.它通过默认的ForkJoin ...
- 关于Hibernate性能优化之 FetchType=Lazy时查询数据
当表A和表B一对多的关系 对于A和B的实体类,设置FetchType=EAGER时,取A表数据,对应B表的数据都会跟着一起加载,优点不用进行二次查询.缺点是严重影响数据查询的访问时间. 解决办法Fet ...
- 【liunx】端口号的占用情况查看
Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 # lsof -i:8000 COMMAND PID USER ...
- 【maven】Maven根据Profile读取不同配置环境配置文件
开发需求:在日常开发中,我们大多都会有开发环境(dev).测试环境(test).生产环境(product),不同环境的参数肯定不一样,我们需要在打包的时候,不同环境打不同当包,如果手动改,一方面效率低 ...
- 推荐 Laravel API 项目必须使用的 8 个扩展包
如今在现代网络开发中,比较流行的模式是基于 API 开发,可以通过手机或网站来创建服务. Laravel 是创建基于 API 的项目的最佳框架之一,它为世界各地的大型社区提供了高速开发. Larave ...
- 【MVC】VS常用技巧
1,在VS2010中,选中指定的代码段,可以拖拽到工具箱中,形成标签,以后还想书写类似的代码,双击鼠标即可. 2,在VS2012中,可以在注释上标注//TODO:我是注释 这样,注释就会出现在任务列表 ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境
1.资源准备 最近,在VmwareStation 10虚拟机上,基于CentOS5.4安装Oracle 11g RAC,并把过程记录下来.刚开始时,是基于CentOS 6.4安装Oracle 11g ...
- <script>标签里的defer和async属性 区别(待补充)
defer与async的区别(表格显示): table th:first-of-type { width: 150px; } table th:nth-of-type(2) { } 区别 defer ...