十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
数据库mysql
专业成都网站建设公司,做排名好的好网站,排在同行前面,为您带来客户和效益!创新互联为您提供成都网站建设,五站合一网站设计制作,服务好的网站设计公司,网站制作、网站建设负责任的成都网站制作公司!
建立外键的前提:本表的列必须与外键类型相同(外键必须是外表主键)。
外键作用:使两张表形成关联,外键只能引用外表中的列的值!
指定主键关键字:foreignkey(列名)
引用外键关键字:references外键表名(外键列名)
事件触发限制:ondelete和onupdate,可设参数cascade(跟随外键改动),restrict(限制外表中的外键改动),setNull(设空值),setDefault(设默认值),[默认]noaction
例如:
outTable表主键id类型int
创建含有外键的表:
createtabletemp(
idint,
namechar(20),
foreignkey(id)referencesoutTable(id)ondeletecascadeonupdatecascade);
说明:把id列设为外键参照外表outTable的id列当外键的值删除本表中对应的列筛除当外键的值改变本表中对应的列值改变。
自己实践才能完全了解外键的作用关键是:事件触发限制的作用
从上面的这个图可以看到在设计的时候,就给表1添加一个外键,这个外键就是表2中的学号字段,那么这样表1就是主表,表2就是子表。所以结合2张表就能保持数据的一致性、完整性(估计就是还原成原来的那张大表)。
借着这个例子再谈谈外键的一些事项:
1、表1可以有一个或者多个外键,也可以没有。(如果表1有多个外键可不可以是这样的情况,表2中的多个字段是表1的外键;或者说表1的多个外键是在多个表中)
2、这个外键可以不是表1的主键,但必须是子表的主键。(简单的说就是,如果一个字段是某个表的外键时,那么该字段必须是主键)
mysql添加外键:
为已经添加好的数据表添加外键:
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)
//FK_ID是外键的名称
/*
CREATE TABLE `tb_active` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `user_id_2` (`user_id`),
CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
*/