>约束:
分类:表级约束和列级约束
按功能分:
外键约束:
外键列——使用 FOREIGN KEY的一列
参照列——外键列所参照的一列为外键列
父表、子表——子表指具有外键列的表,子表所参照的表为父表
创建外键约束条件:
①父表、子表具有相同存储引擎,且数据表的存储引擎为InnoDB
(修改mysql配置文件,default-storage-engine=INNODB)
(SHOW CREATE TABLE tablename 查看表创建信息)
②外键列和参照列要具有相同的数据类型,数字型则需要位数和符号相同,字符型长度可以不同
③外键列和参照列必须创建索引,参照列设置主键时自动创建索引(SHOW INDEXES FROM tablename 查看索引信息,加\G以网格形式查看),如果外键列不存在索引则自动创建索引
外键约束操作:
①CASCADE: 对父表进行的删除或更新对子表对应的行也进行;
(DELETE FROM tablename WHERE condition 删除记录);
②SET NULL:从父表删除或更新行,会设置子表中的外键列为NULL,如果使用该选项,必须保证子表列没有指定NOT NULL
③RESTRICT://拒绝对父表的删除或更新操作; ④NO ACTION://标准的SQL语句,在MYSQL当中与RESTRICT相同实际开发中,我们很少使用物理的外键约束,而是使用逻辑约束;物理的外键约束只有innoDB这种存储引擎才会支持,MYISAM这种引擎就不支持物理的外键约束。反过来说,当我们使用到的引擎为MYISAM时,只能使用逻辑外键(即两个表的设计的逻辑关系)而不设置FOREIGN KEY。