MySql教程

MySQL47--外键约束

本文主要是介绍MySQL47--外键约束,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

外键约束

外键约束(也称为引用约束或引用完整性约束)用于定义数据表之间以及表内必需的关系;
外键是表中的一列或一组列,它的值需要与其父表的行的至少一个主键或唯一键值相匹配;
外键是用来实现参照完整性的,外键约束将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松;

外键约束使用条件

父表和子表必须具有相同的存储引擎,且不能为临时表;
MySQL的存储引擎中只有InnoDB类型才支持外键约束;
外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同,但字符集必须相同;
外键列和参照列必须创建索引,如果参照列不存在索引的话,MySQL将自动创建索引;

操作顺序的要求

在创建外键约束时,父表必须事先存在,然后才能创建外约束;
创建外键约束后,在子表中插入/更新记录时,只能使用主表中已经存在的记录;否则将显示CanNOT ADD OR updat a child row : a fOReign KEY cONstraINT fails ((xxx) FOREIGN KEY (xxx) REFERENCES xxx(xxx))的错误信息;
在删除数据表时,只能先删除子表,然后才能删除父表;否则将显示CanNOT delete OR upDATE a parent row:a fOReign KEY cONstraINT fails的错误信息;

创建外键约束

通过CREATE TABLE/ALTER TABLE语句进行创建数据表/修改数据表时,通过以下子句来定义外键约束:

[ CONSTRAINT ] FOREIGN KEY (INDEX_col_name, ...) 
REFERENCES tbl_name (INDEX_col_name,...)
-- 创建数据表时添加外键约束 
CREATE TABLE goods_type( 
    type_id SMALLINT UNSIGNED KEY AUTO_INCREMENT, 
    type_name VARCHAR(30) NOT NULL 
); 
CREATE TABLE goods( 
    goods_id MEDIUMINT UNSIGNED KEY AUTO_INCREMENT, 
    goods_name VARCHAR(80) NOT NULL, 
    type_id  SMALLINT UNSIGNED NOT NULL, 
    FOREIGN KEY (type_id) REFERENCES goods_type(type_id) 
); 
这篇关于MySQL47--外键约束的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!