MySql学习笔记之约束及修改数据表

外键约束的要求

  1. 父表和子表必须使用相同的存储引擎,禁止使用临时表。
  2. 数据表的存储引擎只能为innodb。
  3. 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同。
  4. 外键列和参照列必须创建索引,如果外键列不存在索引,MySQ将自动创建索引。

比如 FOREIGN KEY(pid) REFERENCES provinces (id) ,provinces为父表,id为参照列,pid为外键列,参照列有索引(因为id被设为主键),外键列有两个索引,分别是id和系统为pid自动创建的索引。命令:show indexes from provinces\G;

 外键约束的参照操作

  1. CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行。
  2. SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL,如果使用该选项,必须保证子表列没有指定NOT NULL。
  3. RESTRICT:拒绝对父表的删除或更新操作。
  4. NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同。

当信息未写入成功(报错),id还是加1。

 表级约束和列级约束

  1. 对一个数据列建立的约束,称为列级约束。
  2. 对多个数据列建立的约束,称为表级约束。
  3. 列级约束既可以在列定义时声明,也可以在列定义后声明,表级约束只能在列定义后声明。

修改数据表

  1. 添加单列可以指定first、after,多列不行

 

 

猜你喜欢

转载自blog.csdn.net/Dilly__dally/article/details/83281045