mysql 表关系 与 修改表结构

两张表关系

多对一 以员工和部门举例 多个员工对应一个部门 foreign key 永远是在多的那张表中设置外键

"""

从左边的表思考,这张表的多条信息是否能对应上右边表的一条信息,能对应上(成立),再从右边的表思考,

右表的多条信息是否能对应上左表的一条信息(不成立),那么两张表就可以确定是多对一关系,右表是多,左表是一,右边表就是设置外键的表

"""

多个员工对应一个部门

员工表关联部门表

员工表是多 部门表是一

foreign key(字段信息多的) references 表(字段信息少的)

多对多 以书和作者举例 多个作者合作出一本书(成立),多本书是一个作者(成立)

这时就(产成第三张表) 把两个表的id,作为第三张表的外键,创建关系表

多个作者可以共同出版一本书

多本书可以是一个作者写的

关系表设置外键 foreign key 分别对应作者和书的id

一对一 以客户 和 学员为例 (一个客户报名缴费后,只能对应一个学员)

先有客户表,客户成交后成为学员,后出现的学员表设置外键,并且要约束这个外键是唯一,关联客户表一对一关系成立

如果1和2都不成立,而是左表的一条记录唯一对应右表的一条记录,反之亦然。这种情况很简单,

就是在左表foreign key右表的基础上,将左表的外键字段设置成unique即可

分析步骤

"""

#1、先站在左表的角度去找

是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id)

#2、再站在右表的角度去找

是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id)

#3、总结:

#多对一:

如果只有步骤1成立,则是左表多对一右表

如果只有步骤2成立,则是右表多对一左表

#多对多

如果步骤1和2同时成立,则证明这两张表时一个双向的多对一,即多对多,需要定义一个这两张表的关系表来专门存放二者的关系

#一对一:

如果1和2都不成立,而是左表的一条记录唯一对应右表的一条记录,反之亦然。这种情况很简单,

就是在左表foreign key右表的基础上,将左表的外键字段设置成unique即可

"""

修改表结构

对表结构进行修改的情况在那些时候发生?

创建项目之前

项目开发、运行过程中"""

语法:

1. 修改表名

alter table 表名

rename 新表名;

2. 增加字段

alter table 表名

add 字段名 数据类型 [完整性约束条件…],

add 字段名 数据类型 [完整性约束条件…];

3. 删除字段

alter table 表名

drop 字段名;

4. 修改字段

alter table 表名

modify 字段名 数据类型 [完整性约束条件…];

alter table 表名

change 旧字段名 新字段名 旧数据类型 [完整性约束条件…];

alter table 表名

change 旧字段名 新字段名 新数据类型 [完整性约束条件…];

5.修改字段排列顺序/在增加的时候指定字段位置

alter table 表名

add 字段名 数据类型 [完整性约束条件…] first;

alter table 表名

add 字段名 数据类型 [完整性约束条件…] after 字段名;

alter table 表名

change 字段名 旧字段名 新字段名 新数据类型 [完整性约束条件…] first;

alter table 表名

modify 字段名 数据类型 [完整性约束条件…] after 字段名;

6.去掉null约束

create table t(id int unique,name char(10) not null);

alter table t modify name char(10) null;

7.添加null约束

alter table t modify name char(10) not null;

8.去掉unique约束

alter table t drop index id;

9.添加unique约束

alter table t modify id int unique;

10.删除表

drop table 表名;

"""

alter table 表名 modify 修改已经存在的字段 的类型 宽度 约束

alter table 表名 change 修改已经存在的字段 的类型 宽度 约束 和 字段名字

alter table 表名 add 字段名 数据类型(宽度) 约束 first/after name

alter table 表名 drop 字段名

alter table 表名 modify name varchar(12) not null

alter table 表名 change name new_name varchar(12) not null

id name age

alter table 表名 modify age int not null after id;

alter table 表名 modify age int not null first;

内容来源于网络如有侵权请私信删除

mysql 表结构关系_mysql 表关系 与 修改表结构相关推荐

  1. MYSQL数据库字段关联_MySQL数据库 字段操作 多表关系(更新中...)

    外键 (foreign key) ## 外键 ```mysql # 作者(author):id,name,sex,age,mobile, detail_id # 作者详情(author_detail) ...

  2. mysql frm恢复数据_MYSQL使用.frm恢复数据表结构的实现方法

    我们都知道当我们建立数据表(innodb或myisam)时,会生成相应的文件(如:MYD,MYI,frm) 在这里,我们探讨下使用frm文件恢复 innodb和myisam类型表的结构,不过由于他们存 ...

  3. mysql为什么要分库_mysql为什么要分库分表?

    1 基本思想之什么是分库分表? 从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上. 2 基本思想之为什么要分库分表? 单表操作数据量有最优值 ...

  4. MySQL什么是关系_MySQL教程-关系模型

    MySQL教程-关系模型 Date 2021-1-22 Author Haihan Gao 什么是关系模型关系模型本质上就是多个存储数据的二维表 表的每一行称为记录 记录是一个逻辑意义上的数据 表的每 ...

  5. mysql 关系_MySQL之关系

    关系 多对多的关系,如何通过mysql来表示 站在老师的角度 一个老师可以教多个学生, 一个老师也可以教一个学生. 站在学生的角度 一个学生可以被一个老师教 一个学生也可以被多个老师教 结论:如果站在 ...

  6. mysql多表操作语句_MYSQL数据库语句之多表操作(三)

    多表操作 join查询(join按照功能分可以分为3类): cross join(交叉连接):获取多个表中的交叉关系. inner join(内连接):获取2个表中字段匹配关系的记录. 外连接 lef ...

  7. mysql 表和视图_MySQL中视图和普通表的区别

    1.视图是数据库数据的特定子集.可以禁止所有用户访问数据库表,而要求用户只能通过视图操作数据,这种方法可以保护用户和应用程序不受某些数据库修改的影响. 2.视图是抽象的,他在使用时,从表里提取出数据, ...

  8. mysql 优化表的作用_mysql实战优化之三:表优化

    对于大多数的数据库引擎来说,硬盘操作可能是最重大的瓶颈.所以,把你的数据变得紧凑会对这种情况非常有帮助,因为这减少了对硬盘的访问. 如果一个表只会有几列罢了(比如说字典表,配置表),那么,我们就没有理 ...

  9. mysql数据库实验任务二_MySQL数据库实验:任务二 表数据的插入、修改及删除

    任务二 表数据的插入.修改及删除 @[toc] 班级 姓名 软件工程16-9班 洪燕妮 [实训目的与要求] 1.利用MySQL命令行窗口进行增.删.改数据操作: 2.利用界面工具进行增.删.改数据操作 ...

  10. mysql删减表的关键字_Mysql 删除数据及数据表

    在Mysql 中删除数据以及数据表非常的容易,但是需要特别小心,因为一旦删除所有数据都会消失. 删除数据 删除表内数据,使用delete关键字. 删除指定条件的数据 删除用户表内id 为1 的用户:d ...

最新文章

  1. Set集合常用方法 遍历Set集合的方法
  2. C#中HtmlAgilityPack判断是否包含或不包含指定的属性或值
  3. 计算机语言表示教师节快乐,表达教师节快乐的微信祝福语大汇总54句
  4. C++:undefined reference to vtable 原因与解决办法 [转]
  5. 基于sklearn.decomposition.TruncatedSVD的潜在语义分析实践
  6. 7个有用的JavaScript技巧
  7. saltstack系列~第四篇
  8. php更改二维数组的键,学习猿地-php如何修改二维数组的键名
  9. 相机靶面尺寸详解+工业相机选型
  10. Pytorch并行计算(一): DataParallel
  11. 《全网搜索》6.1版 - 更新内容及下载链接
  12. 聊聊我在职场的至暗时刻!
  13. 飞机机身控制电子设计,原理图和PCB
  14. 录屏储存失败因为5823_屏幕录制存储失败因为5823
  15. pandas选取数据方法
  16. 大数据时代隐私泄露呈高发趋势 如何有效预防成关键
  17. COVID应对小tips
  18. 请写下你的烦恼——读《解忧杂货店》有感
  19. 计算机视觉领域的杰出人物,计算机视觉领域的大牛们
  20. angularJS求助

热门文章

  1. Js中去除数组中重复元素的几种方法
  2. runtime的用法
  3. 查看目标网站--结构
  4. BootStrap_01之全局样式
  5. 在Source Insight中看Python代码
  6. 非静态内部类中为什么不能拥有静态成员?
  7. Postman教程大全
  8. 世界机器人大会进入最后一天,最受市民关注的是它!
  9. TensorFlow 2.0.0-RC0版发布,专注于简单性与易用性
  10. lib(静态库)和dll(动态库)的生成和使用详细说明以及注意事项