外键

MySQL引擎类型(三)

十年热恋 提交于 2019-11-28 03:40:47
https://www.cnblogs.com/sunsky303/articles/8274586.html mysql 各个引擎 InnoDB: 1)经常更新的表,适合处理多重并发的更新请求。 2)支持事务。 3)可以从灾难中恢复(通过bin-log日志等)。 4)外键约束。只有他支持外键。 5)支持自动增加列属性auto_increment。 MyISAM: 1)不支持事务的设计,但是并不代表着有事务操作的项目不能用MyIsam存储引擎,可以在service层进行根据自己的业务需求进行相应的控制。 2)不支持外键的表设计。 3)查询速度很快,如果数据库insert和update的操作比较多的话比较适用。 4)整天 对表进行加锁的场景。 5)MyISAM极度强调快速读取操作。 6)MyIASM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选择。 来源: https://www.cnblogs.com/fanBlog/p/9754829.html

外键 #36

本小妞迷上赌 提交于 2019-11-28 02:45:33
day36外键 表与表之间建关系 1.外键 1 """""" 2 """一对多""" 3 """ 4 5 """ 6 """ 7 例: 8 以员工表和部门表为例 9 先站在员工表 看能否有多个员工对应同一个部门 10 翻译过来:一个部门能否有多个员工 可以!!!(暂时能确认员工单向多对一部门) 11 再站在部门表看能否有多个部门对应一个员工 12 翻译过来:一个员工能否属于多个部门 不可以!!! 13 结论:员工表和部门表之间仅仅是单向的 多对一 14 那么他们的表关系就是"一对多" 15 表关系中没有多对一一说,只有一对多 16 (无论是多对一还是一对多都叫"一对多") 17 """ 18 """ 19 如何让两种表有代码层面上的真正的关联 就必须使用"外键" 20 什么是外键? 21 让表与表有硬性层面的的关系 22 23 foreign key 24 外键约束 25 1.在创建表的时候 必须先创建被关联表 26 2.插入数据的时候 也必须先插入被关联表的数据 27 28 """ 29 """ 30 例: 31 建表: 32 首先创建被关联表 33 create table dep( 34 id int primary key auto_increment, 35 dep_name varchar(32), 36 dep_desc varchar(123) 37 ); 38

MySQL之Foreign_Key

给你一囗甜甜゛ 提交于 2019-11-28 01:59:33
  MySQL之Foregin_Key    一\\一对多 一.员工表和部门表 dep emp 类似与我们将所有的代码都写在一个py文件内 确立标语表之间的关系 思路:一定要要换位思考问题(必须两方都考虑周全之后才能得出结论) 思路:一定要要换位思考问题(必须两方都考虑周全之后才能得出结论) 1.先站在部门表中看能否有多个部门对应一个员工 1.先站在部门表中看能否有多个部门对应一个员工 翻译过来就是:一个员工能否有多个部门 很显然不可以!!! 在站在员工表中看能否有多个员工对应一个部门 翻译过来: 很显然是可以的!!! 所以员工表和部门表之间仅仅打火机单向事务多对一 他们的表关系就是"一对多" 表关系中没有"多对一"的说法,都是"一对多"   让两个表代码层面上的真正的关联,就是必须使用外键 2,让两个表代码层面上的真正的关联,就是必须使用外键 什么是外键呢>>> 让表与表之间有硬性关系 foreign key 注意这里是没有下滑线的 foreign key 外键约束 1.在创建表的时候,必须先创建被关联系 2.插入数据的时候 也必须先插入被关联表的数据   建表# 被关联 create table dep(id int primary key auto_increment, dep_name varchar(32), dep_desc varchar(128));   在建

外键一对一,一对多,多对多表关系

心已入冬 提交于 2019-11-28 01:31:16
表与表之间建立关系: 把所有数据都存放于一张表的弊端 1.组织结构不清晰 2.浪费硬盘空间 3.扩展性极差 查找表关系一定要换位思考,就是要站在两张表角度全部考虑完毕才能下结论, 否则无法的出正确答案。单向的多对一,就是一对多的外键关系。 一对多:   简单举个例子:比如说一个公司里面有很多部门,而且有很多员工分别在不同的部门里, 我们可以先站在员工的角度看是否能多个员工同属于一个部门:也就是说一个部门是否有多个员工? 当然是可以的。这里我们确定了员工是单向多对一个部门的。   再站在部门的角度来看能否可以有多个部门对应一个员工?显然是不可以的。   总结一下就是员工和部门之间关系如果仅仅是单向的多对一那么他们的表关系就是一对多。 什么是外键?   外键就是让表与表之间有硬性层面上的关系,而不是你说它们有关系它们就有关系了。 如何让两种表有代码层面上真正的关联:   就得使用外键,外键语法:foreign key 一对多建立表关系:    外键约束:     在创建表的时候 必须先创建被关联表。     插入数据的时候 也必须先插入被关联表的数据。   建表: 部门表: create table dep( id int primary key auto_increment, dep_name varchar(32), dep_desc varchar(128) ); 建员工表:

表与表的关系

孤者浪人 提交于 2019-11-28 01:20:27
表与表的关系 >>> 思维导图 >>> 中二青年 表与表之间的关系 所有信息都记录在一张表中所带来的问题 1.表的结构不清晰 2.浪费硬盘空间 3.表的扩展性极差(无法忽略的缺点) 类似于我们将所有的代码都写在同一个py文件内 确立表与表之间的关系一定要换位思考(必须两方都考虑周全之后才能得出结论) 一对多关系 以员工表和部门为例 先站在员工表看,一个部门可以有多个员工 再站在部门表看,一个员工不能属多个部门 结论:员工表和部门表之间仅仅是单向的多对一,那么他们的表关系就是‘一对多’(表关系中没有多对一一说,只有一对多,无论是多对一还是一对多都叫‘一对多’) 外键 如何让两种表有代码层上真正的关联,就必须使用外键。 什么是外键?外键就是让表与表有硬性层上的关系 foreign key 外键约束 1.在创建表的时候,必须先创建被关联表 2.插入数据的时候,也必须先插入被关联表的数据 create table dep( id int primary key auto_increment, dep_name varchar(32), dep_desc varchar(128) ); create table emp( id int primary key auto_increment, emp_name varchar(64), emp_gender enum('male',

day36_8_20数据库3外键

社会主义新天地 提交于 2019-11-28 01:15:52
一。一对多   在数据库使用数据中经常遇到一对多的情况,以公司员工为例。   一张完整的员工表有以下字段:     id name gender dep_name dep_desc .   以此建表得: id name gender dep_name dep_desc 1 jason male 教学部 教书育人 2 egon male 外交部 漂泊游荡 3 tank male 教学部 教书育人 4 kevin male 教学部 教书育人 5 owen female 技术部 技术能力有限部门   少数的数据看不出有多大的不合理,但是如果一个公司中频繁有教学部的出现,它和它的描述就要反复写一遍,这种感觉就像一个py文件写下了所有的代码,这本身就是不合理的,为了像模块一样封装代码,我们先将其分成2个表,再使用一对多的关系关联两表: emp: id name gender dep_id 1 jason male 1 2 egon male 2 3 tank male 2 4 kevin male 2 5 owen female 3 dep id dep_name dep_desc 1 教学部 教书育人 2 外交部 漂泊游荡 3 教学部 教书育人 4 教学部 教书育人 5 技术部 技术能力有限部门   两张表唯一有关系的是dep_id,所以要将dep_id设置成外键。  

表与表之间建关系

帅比萌擦擦* 提交于 2019-11-28 01:11:12
一、一对多 1.确立表与表之间的关系 一定要换位思考(必须两方都考虑周全之后才能得出结论) 以员工表和部门表为例: 1.先站在员工表看能否有多个员工对应一个部门 翻译过来: 一个部门能否有多个员工 可以!!!(暂时只能确定员工单向多对一部门) 2.再站在部门表看能否有多个部门对应一个员工 翻译过来: 一个员工能否属于多个部门 不可以!!! 结论:员工表和部门表之间仅仅是单向的多对一 那么它们的表关系就是"一对多" 表关系中没有多对一一说,只有一对多 (无论是多对一还是一对多都叫"一对多") 2.如何让两种表有代码层面上真正的关联 就必须使用外键(foreign key) 什么是外键? 让表与表有硬性层面上的关系 foreign key 外键约束 1.在创建表的时候 必须先创建被关联表 2.插入数据的时候 也必须先插入被关联表的数据 1、在创建表时,先建被关联的表dep,才能建关联表emp create table dep( id int primary key auto_increment, dep_name varchar(32), dep_desc varchar(128) ); create table emp( id int primary key auto_increment, emp_name varchar(64), emp_gender enum('male',

Day36 数据库(三) 表与表建立联系-外键

↘锁芯ラ 提交于 2019-11-28 01:09:01
1.理解表与表之间建立关系的必要性 比如我们建立了一张个人信息表,把所有人的信息都存在这张表中 这张表中有老师和他们所属的部门,并且不同的部门工作也是不同的 所有数据存放在一张表中的弊端   1.组织结构不清晰   2.浪费存储空间   3.扩展性差 针对这个问题我们可以将他们分成两张表,一张专门记录个人信息,一张专门记录部门和部门工作 建立表的时候我们需要进行分析   1.站在个人信息表的角度:一个老师能否属于多个部门,不能!!!   2.站在部门表的角度:一个部门能否有多个老师,可以!!! 那这两张表的关系就是老师表 多对一 部门表,也可以这么说,部门表 一对多 老师表 在表中是如何表示这种关系,需要找出一个两者中独一无二的东西并且把他们连接起来,我们在部门表中创建一个部门的id,在老师表中添加这个属性并指向部门id 如下表所示 这样我们就可以把两者联系起来了,但是老师的dep_id我们还是可以随意的修改,应该有一个限制,限制他们只能和部门表的id相同才对 2.外键(foreign key) 什么是外键   如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。 外键的作用   保持数据一致性,完整性

表与表关系

和自甴很熟 提交于 2019-11-28 01:07:44
外键 什么是外键:让表与表有硬性层面上的关系 使用外键条件:1、表类型必须是InnoDB存储引擎。2、关联的字段即references指定的另外一个表的字段必须要唯一。 注意:1、创建表时必须先创建被关联表。2、插入数据时,也必须先插入被关联表数据。 一对多 案例1:部门和员工 思考: 一个部门可以有多个员工吗?可以 一个员工可以有多个部门吗?不可以 结论:部门与员工的关系是一对多。且外键创建在多的一方。 案例二:班级和学生 一个班级可以有多个学生吗?可以 一个学生可以有多个班级吗?不可以 结论:一对多,外键建立在多的一方即学生表里面。 案例三:老师和课程 一个课程可以有多个老师吗?可以。 一个老师可以有多个课程吗?不可以,一个老师只能教一门课程,语文老师不能同时也是数学老师,不专业。 结论:一对多,老师表里面应该设置外键。 只有一方可以一条数据对应对方的多条数据,这种关系叫做一对多。 ''' 创建部门表: ''' create table department( id int primary key auto_increment, name varchar(20) not null, dep_desc varchar(200) ); ''' 创建员工表 ''' create table employee( id int primary key auto_increment,

mysql数据库 day03

与世无争的帅哥 提交于 2019-11-28 00:54:22
---恢复内容开始--- 1.外键(重点) 2.修改表的完整语句(了解知识点) 一.外键 外键一共分为三大类:一对多,多对多,一对一 1.一对多: 为什么要有这些外键了: 比如说定义了一张员工表 # 定义一张部门员工表 id name gender dep_name dep_desc 1 jason male 教学部 教书育人 2 egon male 外交部 漂泊游荡 3 tank male 教学部 教书育人 4 kevin male 教学部 教书育人 5 owen female 技术部 技术能力有限部门 那么这张表有什么问题 ?: 把所有的数据都存放在一张表的弊端: 1.表的结构不清晰 2.浪费硬盘空间(因为有相同的部门,需要重复写) 3.表的扩展性极差(无法忽略的缺点) 这个问题就类似我们将所有的代码都写在用一个py文件内 那么我们该怎么解决这个问题:(我们要把表分开,解耦和)           emp id emp_name emp_gender dep_id 1 jason male 1 2 egon female 2 3 tank male 2 4 jerry male 2 5 kevin male 3             dep id dep_name dep_desc 1 外交部 形象代言人 2 教学部 教书育人 3 技术部 技术能力有限部门 表示解耦和了