mysql创建外键
原载于:原文章%77w%77%2Ef%6F%72%61%73%70%2E%63n
mysql设置外键,mysql设置外键可以通过语句设置,也可以通过界面化得软件设置。下面将通过这两种方式设置外键的方式说一下
首先说一下设置外键的作用:外键是为了保持数据的一致性,完整性。外键是引用外表的值(A表)来做本表(B表)的数据。
假设A表如下:
用户表 user
userid int 自动增长 用户id
username varchar 用户名
假设B表如下:
留言表 message
mid int 自动增长
userid int 用户id
title varchar 用户发布留言名
注意:
(1)在mysql中设置外键是必须用InnoDb数据库引擎,本次举例是将message中的userid为外键。
(2)两表的对应列数据类型必须一样
(3)所有的键必须唯一
(4)外键总是关联唯一的字段
1.通过mysql的语句来设置外键。
如果同过创建语句来的话,则要在创建表的时候设置或者之后再执行
先看创建语句原文是网站制作学习网的FoAsP.cn
创建用户表user
CREATE TABLE `user` (
`userid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
`username` varchar(11) NOT NULL COMMENT '用户名',
`passwowrd` char(15) NOT NULL,
PRIMARY KEY (`userid`),
KEY `a` (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk;
创建信息表message
CREATE TABLE `message` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `userid` (`userid`),
CONSTRAINT `article_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `user` (`userid`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk;
然后看通过mysql语句更改的
假设已经创建好连个表,并且InnoDb表。并且没有任何关系。
执行下面语句来设置mysql外键
alter table article
add constraint 外键名
foreign key(userid)
references user(userid) ON DELETE CASCADE ON UPDATE NO ACTION;
在此注明一下下面的ON DELETE CASCADE ON UPDATE NO ACTION;
都是有以下时间:ON DELETE ON UPDATE ,动作有RESTRICT: 拒绝对父表的删除或更新操作.cascade从父表删除或更新且自动删除或更新子表中匹配的行.no action不做任何操作(默认),SETNULL设置为空。
下一篇文章,用界面化如阿健创建mysql外键。我们用navicate创建外键