MySQL学习记录:约束以及修改数据表

《MySQL学习记录:约束以及修改数据表》

约束

  • 约束保证数据的完整性和一致性。
  • 约束分为表级约束和列级约束。

    • 只针对某一个字段 列级约束
    • 针对两个或两个以上的字段 表级约束
  • 约束类型包括:

    • NOT NULL(非空约束)
    • PRIMARY KEY(主键约束)
    • UNIQUE KEY(唯一约束)
    • DEFAULT(默认约束)
    • FOREIGN KEY(外键约束)

FOREIGN KEYp

  • 保持数据的一致性,完整性
  • 实现一对一 或者 一对多关系
    这也是很多数据库被称为关系型数据库的原因

《MySQL学习记录:约束以及修改数据表》

子表:具有外键列的表。
父表:子表所参照的表。
子表和父表必须有相同的存储引擎,而且必须为InnDB
外键列: 曾加过for in 关键词的列

编辑数据表默认存储引擎

mysql 配置文件

default-storage-engine = INNODB

《MySQL学习记录:约束以及修改数据表》

MySQL中创建外键的错误:1215 Cannot add the foreign key constraint

《MySQL学习记录:约束以及修改数据表》

《MySQL学习记录:约束以及修改数据表》
id为参照列
pid 为外键列

查看索引

《MySQL学习记录:约束以及修改数据表》

id字段上已经创建索引,所以说我们的参照列已经有索引

《MySQL学习记录:约束以及修改数据表》

在users表中存在两个索引,一个是主键索引,在id字段上,因为我们已经加过主键约束;另外在pid字段上系统已经自动的创建了索引。

外键列不存在索引的话,mysql自动创建索引

外键约束的参照操作

《MySQL学习记录:约束以及修改数据表》

这四个选项是指在在进行了外键约束的创建以后,在更新表的时候,子表是否也进行相应的操作。

《MySQL学习记录:约束以及修改数据表》

在外键约束当中,在实际的开发过程中,我们很少使用物理的外键约束,很多都去使用逻辑的外键约束,因为物理的外键约束只有INNODB这种引擎才会支持,像我们另外的一种引擎MYISAM的引擎则不支持,反过来说,如果我想创建的数据表,假设存储引擎为MYISAM,而且又想使用外键约束的话,其实是不可能实现的,所以说,我们在实际的项目开发中,我们不去定义物理的外键,所谓的逻辑外键指的是就是我们在定义两张表的结构的时候,我们是按照存在的某种结构的方式去定义,但是不去使用FOREIGN KEY这个关键词来定义。

《MySQL学习记录:约束以及修改数据表》

修改数据表

添加删除列

修改数据表 无非列的添加列的删除,约束的添加 约束的删除

《MySQL学习记录:约束以及修改数据表》

《MySQL学习记录:约束以及修改数据表》

《MySQL学习记录:约束以及修改数据表》

《MySQL学习记录:约束以及修改数据表》

《MySQL学习记录:约束以及修改数据表》

添加约束

《MySQL学习记录:约束以及修改数据表》

添加唯一约束

唯一约束可以有多个 而主键约束只能有一个

《MySQL学习记录:约束以及修改数据表》

添加外键约束

《MySQL学习记录:约束以及修改数据表》

添加和删除默认约束

《MySQL学习记录:约束以及修改数据表》
《MySQL学习记录:约束以及修改数据表》

删除主键约束

《MySQL学习记录:约束以及修改数据表》

删除唯一约束

《MySQL学习记录:约束以及修改数据表》

删除外键约束

《MySQL学习记录:约束以及修改数据表》

修改列定义

参考

外键约束
MySQL学习手册
mysql/manual

    原文作者:AlexZ33
    原文地址: https://segmentfault.com/a/1190000010615168
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞