MySQL--索引和外键
来自:http://www.jb51.net/article/32149.htm
1.添加PRIMARY KEY(主键索引)
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.添加UNIQUE(唯一索引)
ALTER TABLE `table_name`
ADD UNIQUE (
`column`
)
3.添加INDEX(普通索引)
ALTER TABLE `table_name`
ADD INDEX index_name (
`column` )
4.添加FULLTEXT(全文索引)
ALTER TABLE `table_name`
ADD FULLTEXT (
`column`)
5.添加多列索引
ALTER TABLE `table_name`
ADD INDEX index_name (
`column1`,
`column2`,
`column3` )
在创建索引时,可以指定在删除、更新父表时,对子表进行相应的操作,包括RESTRICT, CASCADE, SET NULL, NO ACTION
其中,RESTRICT和SET NULL相同,是指限制在子表有关联记录的情况下父表不能更新
CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录
SET NULL则表示父表在更新或者删除的时候,子表的对应字段被SET NULL
选择后面两种方式的时候要谨慎,可能因为错误的操作导致数据的丢失
当某个表被其他表创建了外键参照,那么该表的对应索引或者主键禁止被删除
在导入多个表的数据是,如果需要忽略表之前的导入顺序,可以暂时关闭外键的检查;同样,在执行LOAD DATA和ALTER TABLE操作的时候,可以通过暂时关闭外键约束来加快处理的速度。关闭的命令是
SET FOREIGN_KEY_CHECKS = 0
执行完成之后,通过执行
SET FOREIGN_KEY_CHECKS = 1
改回原状态