一:关于级联
delete on cascade 表示当删除删除父表的信息时候会将相关的子表的信息也删除。
delete on restrict 表示当删除父表的时候,如果有子表与父表有关系,会拒绝。
delete on set null 标识当删除父表的时候,如果有子表与父表有关系,会将子表的信息设置为null,前提是当前限制为允许为null。
进行插值的时候,先有父表,才有子表。
二:关于数据库建表
mysql建表语句:
COLLATE = utf8_general_ci
1. COLLATE = utf8_general_ci
-
若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表,即该表的row_format是fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。
-
若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫动态表,即该表的row_format是dynamic,就是说每条记录所占用的字节是动态的。其优点节省空间,缺点增加读取的时间开销。
-
所以,做搜索查询量大的表一般都以空间来换取时间,设计成静态表。
2. ROW_FORMAT = Dynamic
-
collate utf_bin是 以二进制值比较,也就是区分大小写,collate是核对的意思
-
uft-8_general_ci 一般比较,不区分大小写
3. 取消和开启外键约束
Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构。
-
解决方法:
在Mysql中取消外键约束:
SET FOREIGN_KEY_CHECKS=0; -
然后将原来表的数据导出到sql语句,重新创建此表后,再把数据使用sql导入,
-
然后再设置外键约束:
SET FOREIGN_KEY_CHECKS=1;