MySQL数据库基础——多表操作:添加与删除外键
一、外键
外键用于建立加强两个表之间的联系,引入外链后,外键只能插入参照列存在的值,参照列被参照的值不能被删除,这就保证了数据的参照完整性。
1.为表添加外键约束:
想要真正连接两个表的数据,就需要为表添加外键约束。添加外键约束的语法格式:
ALTER TABLE 表名 ADD CONSTRAINT FK_ID FOREIGN KEY(外键字段名) REFERENCES 主表表名(主键字段名);
被引用的表为主表,引用外键的表为从表。主表和从表是主从关系。
为表添加外键时,需要注意:1.建立外键的表必须是InnoDB型,不能是临时表。只有InnoDB类型的表才支持外键。2.定义外键时不能加引号。
2.添加外键约束的参数说名:
当主表被删除后从表的数据也应该删除,才能保证数据库中不会存在无意义的垃圾。所以在MySQL中可以在建立外键时添加“ON DELETE”或“ON UPDATE”子句来告诉数据库,怎样避免垃圾数据的产生。其语法格式如下:
ALTER TABLE 表名 ADD CONSTRAINT FK_ID FOREIGN KEY(外键字段名) REFERENCES 主表表名(主键字段名);
[ ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT } ]
[ ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT } ]
添加外键约束的参数说明:
参数名称 | 功能描述 |
---|---|
CASCADE | 删除包含与已删除值有参照关系的所有记录 |
SET NULL | 修改删除与已删除键值有参照关系的所有记录,使用NULL值替换(不能用于已标记为NOT NULL的字段) |
NO ACTION | 不进行任何操作 |
RESTRICT | 拒绝主表删除或修改外键关联列。(在不定义ON DELECT 和 ON UPDATE子句时,这是默认设置,也是最安全的设置) |
3.删除外键:
在需要解除两个表之间的关联关系时,就要删除外键约束。其语法格式如下:
ALTER TABLE 表名 DROP FOREING KEY 外键名;
]