表关系分为三种:一对一,一对多,多对多

一对多:一个学院对应多个学生,而一个学生只对应一个学院  

--  这儿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-表关系的更多相关文章

  1. mysql 表关系 与 修改表结构

    目录 mysql 表关系 与 修改表结构 两张表关系 分析步骤 修改表结构 mysql 表关系 与 修改表结构 两张表关系 多对一 以员工和部门举例 多个员工对应一个部门 foreign key 永远 ...

  2. mysql表关系

    表与表之间的关系 """ 把所有数据都存放于一张表的弊端 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 """ # 上述的弊端产生原 ...

  3. MySQL表关系--外键

    一.外键前戏 如果我们把所有的信息都记录在一张表中会带来的问题: 1.表的结构不清晰 2.浪费磁盘空间 3.表的扩展性极差 所以我们要把这种表拆成几张不同的表,分析表与表之间的关系. 确定表与表之间的 ...

  4. python开发mysql:表关系&单表简单查询

    一 一对多,多对一 1.1 建立多对一 ,一对多的关系需要注意 先建立被关联的表,被关联的字段必须保证时唯一的 在创建关联的表,关联的字段一定是可以重复的 1.2 示例: 出版社 多对一,多个老师可能 ...

  5. MySQL表关系总结

    一对多关系  : 一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关. 一对多关系,一般是一 ...

  6. MySQL之表关系

    MySQL表关系 一对多关系 一对多与多对一是一个概念,指的是一个实体的某个数据与另外一个实体的多个数据有关联关系. 举例,学校中一个学.院可以有很多的学生,而一个学生只属于某一个学院(通常情况下), ...

  7. 库增删该查,表增删该查,记录增删该查,表与表关系(多对多,多对一,一对一),mysql用户管理

    库增删该查 增加库 create database db1 create database db1 charset="gbk 查看库 show databases 查看所有库 show cr ...

  8. MySQL开发——【多表关系、引擎、外键、三范式】

    多表关系 一对一关系 一对多或多对一关系 多对多关系 MySQL引擎 所谓的MySQL引擎就是数据的存储方式,常用的数据库引擎有以下几种: Myisam与InnoDB引擎之间的区别(面试) ①批量插入 ...

  9. MySQL数据库篇之完整性约束和表关系

    主要内容: 一.完整性约束 二.表关系 1️⃣ 完整性约束 (1)何为完整性约束? 约束条件与数据类型的宽度一样,都是可选参数. 作用:用于保证数据的完整性和一致性 (2)分类主要有以下五类: 1.n ...

  10. mysql数据库之表关系

    外键 前戏之一对多关系 # 定义一张部门员工表id name gender dep_name dep_desc1 jason male 教学部 教书育人2 egon male 外交部 漂泊游荡3 ta ...

随机推荐

  1. PNotes – 目前最优秀的桌面便签软件 - imsoft.cnblogs

    Pnotes: 下载链接: http://pan.baidu.com/s/1o6FK4SM 密码: n7il 便携版,包含中文语音包,包含十几种合适的皮肤. 更多信息:小众软件 http://www. ...

  2. 配置搭建与使用redis

    redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 redis是如今被互联网公司使用最广泛的一个中间件,我们打开GitHub搜索redis,边 ...

  3. 大家一起做训练 第一场 G CD

    题目来源:UVA 624 题目的意思就是:我现在需要从 t 张CD中拿出一部分来,尽可能的凑出接近 N 这么久的音乐,但是不能超过 N. CD不超过20张,每张长度不超过 N ,不能重复选. 一个很简 ...

  4. 对比dfs与bfs的存储机制以及bfs与队列的关系

    dfs由于是利用递归进行遍历,所以每种情况在时空上不会出现冲突,所以可以利用数组将每种情况的各个元素的值进行存储(即存储当前位) 而bfs由于并不是利用递归,不能将每种情况的值进行不冲突地存储,但由于 ...

  5. CSS 属性用法备忘录

    ☆ margin: 0; padding: 0; :{ 顺时针 margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: ...

  6. 【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

    原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年 ...

  7. ORACLE expdp/impdp详解

    ORCALE10G提供了新的导入导出工具,数据泵.Oracle官方对此的形容是:Oracle DataPump technology enables Very High-Speed movement ...

  8. Oracle误删除表空间的恢复

    对于误删除表空间的恢复,本文通过基于数据库的时间点恢复和基于表空间的时间点恢复分别加以讨论 一 通过基于数据库的时间点恢复被误删除的表空间 1 需要注意的事项 a 基于数据库的时间点恢复将会回退整个数 ...

  9. 创建ASM实例及ASM数据库

    --======================== -- 创建ASM实例及ASM数据库 --======================== 一.ASM相关概念 1.什么是ASM(Auto Stor ...

  10. 动态爬虫——selenium2搭载phantomjs入门范例

    这是我学习爬虫比较深入的一步了,大部分的网页抓取用urllib2都可以搞定,但是涉及到JavaScript的时候,urlopen就完全傻逼了,所以不得不用模拟浏览器,方法也有很多,此处我采用的是sel ...