索引失效问题
https://www.jianshu.com/p/d5b2f645d657
基本使用操作
查看数据库:
show databases;
选择某个数据库:
use 数据库名
查看某个数据库内有哪些表:
show tables;
显示数据表的属性:
show columns from 表名;
1 | mysql> show index from user; |
外键约束
在建表添加外键约束的时候,需要选择on delete/update
时的操作。大致知道这是怎么回事,无非是主表的内容删除或者更新的时候,对从表的相应的字段进行什么样的操作。但是具体的内容,忘记了,在这里特地找出来,给自己一个参考,顺便温习一下外键。
外键约束对子表的含义:
如果在父表中找不到候选键,则不允许在子表上进行insert/update
外键约束对父表的含义:
在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句。
MySQL中的InnoDB有5中方式,如下:
方式 | 描述 |
---|---|
cascade | 在父表上update/delete记录时,同步update/delete掉子表的匹配记录 |
set null | 在父表上update/delete记录时,将子表上匹配记录的列设为null,要注意子表的外键列不能为not null |
no action | 如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 |
restrict | 同no action, 都是立即检查外键约束 |
缺省 | 解析器认识这个action,但Innodb不能识别,不知道是什么意思 |
常见错误
1022 can't write duplicate key in table #‘sql_XXXXX’
外键重名导致,另起一个名字即可解决。(mysql)