做商品网站数据库有哪些,分页网站,网站建设实训个人,实时新闻简介
MySQL的外键约束用来在两个表数据之间建立链接#xff0c;其中一张表的一个字段被另一张表中对应的字段约束。也就是说#xff0c;设置外键约束至少要有两种表#xff0c;被约束的表叫做从表#xff08;子表#xff09;#xff0c;另一张叫做主表#xff08;父表其中一张表的一个字段被另一张表中对应的字段约束。也就是说设置外键约束至少要有两种表被约束的表叫做从表子表另一张叫做主表父表属于主从关系。
表格说明
现在有两张表my_class主表、my_stu从表主表与从表通过id连接。 创建表的sql语句
#主表
CREATE table my_class(id int PRIMARY KEY,name VARCHAR(32) not null
)
#从表
CREATE table my_stu(id int PRIMARY KEY,name VARCHAR(32),class_id int ,foreign key(class_id) REFERENCES my_class(id)
)外键是怎么来体现约束的呢
1.从表插入数据时主表中一定要有对应的外键。 my_class表主表
id主键name1小班2中班3大班
insert into my_stu(id,name,class_id) values(1,小花,4); #错误,class_id4在主表中找不到对应的id4
insert into my_stu(id,name,class_id) values(1,小花,3); #正确符合外键约束规范主表中存在id32.主表数据删除时一定要确保从表中没有与删除数据相关联的数据。 比如现在存在my_stu表
id主键nameclass_id外键1小花12小红23小张3
因为从表中存在(1,小花,1)所以下面的删除会报错。
delete from my_class where id1; #错误应当先删除从表中关联数据再删除主表中的数据。
delete from my_stu where class_id1;#删除从表关联数据
delete from my_class where id1; 注意事项
外键指向的主表字段要求是primary key或unique表必须为innodb才支持外键外键与主键类型需一致外键可以为null为null时主表中可以不存在对应的null。