【个人笔记】《知了堂》MySQL三种关系:一对一,一对多,多对多。
一对一:比如一个学生对应一个身份证号、学生档案;
一对多:一个班可以有很多学生,但是一个学生只能在一个班;
多对多:一个班可以有很多学生,学生也可以有很多课程;
一对多关系处理:
我们以学生和班级之间的关系来说明一对多的关系处理方法。
假设现有基本表班级表(班级号,备注信息,……)。学生表(学号,姓名),

方法一:
在学生表中新增字段(班级号),该字段作为学生表的外键与班级表中的班级号关联。每一个学生实体在班级号字段的值,表示该学生属于的班级。
方法二:
新增一个关系表,用来表示学生与班级的属于关系,该关系表包含字段(学生号,班级号)。通过学生号与班级号的对应关系表示学生属于的班级。
代码示例:
-- 创建班级表
CREATE TABLE t_class(
c_id INT PRIMARY KEY AUTO_INCREMENT, --班级id
c_name VARCHAR(20) NOT NULL UNIQUE --班级名称
)
-- 删除学生表
DROP TABLE t_student;
-- 创建学生表
CREATE TABLE t_student(
s_id INT PRIMARY KEY AUTO_INCREMENT, --主键id
s_name VARCHAR(15) UNIQUE, --姓名
s_sex VARCHAR(5) DEFAULT '男', --性别
s_age INT, --年龄
s_class_id INT, --班级id
使用外键关联班级表的主键,附:表的外键必须是另一张表的主键
CONSTRAINT FOREIGN KEY(s_class_id) REFERENCES t_class(c_id)
)
-- 添加数据
INSERT INTO t_student(s_name,s_sex,s_age)
VALUES ('刘基','男','20')
INSERT INTO t_student(s_name,s_sex,s_age)
VALUES ('老刘','男','22')
INSERT INTO t_student(s_name,s_sex,s_age)
VALUES ('唐伯虎','男','20')
小结:一般情况下,一对多关系采用方法一来处理。
多对多关系处理:

在多对多关系中,我们要新增加一个关系表。在学生表和课程表的基础上增加选课表来表示学生与课程之间的多对多关系。在选课表中,必须含有的属性有学生号和课程号。(学生号,课程号)这个属性集刚好也就是选课表的关键字。
代码示例:
-- 创建学生表
CREATE TABLE student(
t_id INT PRIMARY KEY AUTO_INCREMENT, -- 学号
t_name VARCHAR(20), -- 学生名字
t_age INT, -- 年龄
t_sex CHAR(4), --性别
t_date DATE,
t_enrolDate DATETIME,
t_class VARCHAR(20)
)
-- 创建班级表
CREATE TABLE class(
b_id INT PRIMARY KEY AUTO_INCREMENT,
b_name VARCHAR(20), --编辑编号
b_bname VARCHAR(50), --班级名称
b_start DATE --开班时间 类型 date
)
-- 成绩表
CREATE TABLE grade(
c_id INT,
c_nameId INT, --学生id 类型 int
c_courseId VARCHAR(40), --课程编号 类型 varchar
c_coursegrade INT, --课程成绩 类型 int
c_exam DATE --考试时间 类型 date
)
-- 课程表
CREATE TABLE course(
k_id VARCHAR(40), --课程编号 类型 varchar
k_name VARCHAR(40) --课程名称 类型 varchar
)
【个人笔记】《知了堂》MySQL三种关系:一对一,一对多,多对多。的更多相关文章
- Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作
Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: 由于如果只使用一张表存储所有的数据,就会操作数 ...
- MySQL学习7 - 外键的变种 三种关系
一 介绍 二 如何找两张表之间的关系 三 表的三种关系 1.书和出版社 2.作者和书籍的关系 3.用户和博客 本节的重点 如何找出两张表之间的关系 表的三种关系 一 介绍 因为有foreign key ...
- mysql外键的三种关系
因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 一对多或多对一 create table press( id int primary key auto_inc ...
- mysql更新(五) 完整性约束 外键的变种 三种关系 数据的增删改
11-数据的增删改 本节重点: 插入数据 INSERT 更新数据 UPDATE 删除数据 DELETE 再来回顾一下之前我们练过的一些操作,相信大家都对插入数据.更新数据.删除数据有了全面的认识. ...
- Mysql外键的变种 三种关系
一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出两张表之间的关系 分析步骤: #1.先站在左表的角度去找 是否左表的多条记录可以 ...
- day03 mysql外键 表的三种关系 单表查询 navicat
day03 mysql navicat 一.完整性约束之 外键 foreign key 一个表(关联表: 是从表)设置了外键字段的值, 对应的是另一个表的一条记录(被关联表: 是主 ...
- Mysql -- 外键的变种 三种关系
一.介绍 因为有foreign key的约束, 使得两张表形成了三种关系 多对一 多对多 一对一 二.如果找出两张表之间的关系 #.先站在左表的角度去找 是否左表的多条记录可以对应右 ...
- python 全栈开发,Day62(外键的变种(三种关系),数据的增删改,单表查询,多表查询)
一.外键的变种(三种关系) 本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出 ...
- 完整性约束&外键变种三种关系&数据的增删改
完整性约束 本节重点: not null 与 default unique primary auto_increment foreign key 一.介绍 约束条件与数据类型的宽度一样,都是可选参数 ...
随机推荐
- go web 第三天 学习笔记 --mysql
CREATE TABLE `userinfo` ( `uid` INT() NOT NULL AUTO_INCREMENT, `username` VARCHAR() NULL DEFAULT NUL ...
- NTP原理及配置使用
一.NTP简介 1.NTP简介 NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议.它的用途是把计算机的时钟同步到世界协调时UTC,其精 ...
- pdf.js跨域问题的分析
最近在做公司业务时,需要在线浏览pdf.在现代浏览器中, 均可直接浏览pdf文件,无兼容性问题.但公司的业务线需要支持到ie8. 经过自己的搜索调研, pdf.js比较适合.pdf.js兼容到ie9, ...
- redis集群搭建及注意事项
上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...
- Html5笔记之第四天
属性 值 描述 accesskey character 规定访问元素的键盘快捷键 class classname 规定元素的类名(用于规定样式表中的类). contenteditable true f ...
- CentOS7.3虚拟机扩展数据磁盘
操作之前需要重点查看: 由于扩容磁盘的操作非同小可,一旦哪一步出现问题,就会导致分区损坏,数据丢失等一系列严重的问题,因此建议:在进行虚拟机分区扩容之前,一定要备份重要数据文件,并且先在测试机上验证以 ...
- Appium环境搭建(python)
appium是一个开源的,适用于原生或者移动网络和混合应用程序在 iOS 和 Android 平台上的的开源自动化测试框架.在这里,详细的介绍Appium的环境搭建步骤. 1.安装Node.js在ht ...
- MEF IOC使用
IOC介绍 IOC:控制反转,DI:依赖注入.按我的理解应该是一个东西.作用目前我看到的主要是解除各个层之间的强耦合,实现接口分离.MEF优点: 1.net4 自带,无需安装扩展(引用System.C ...
- 两台主机之间单向Ping不通的问题
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...
- Webservice优缺点总结
优点: 1 .采用xml支持跨平台远程调用. 2.基于http的soap协议,可跨越防火墙. (因为SOAP一般使用HTTP协议,而服务器的这个协议一般都是开放的,而且是可以穿过防火墙的) 3.支持面 ...