mysql外键的建立与类型
2014-06-07 09:54
225 查看
之前看过一本“mysql必知必会”的入门书籍,我有选择性的读过两遍,感觉比较不错,例子很多并且简单易懂,对于mysql入门来说挺适合的,不过缺点就是没有重要的索引部分,在此先推荐一下。
进入正题,如果想在两个表中间里连结关系(即外键),则需要先选定一个父表、一个子表,以及确定这两个表中的关联项,这样建立连结后当父表的连结项变更时,子表的相应项也会随着变更(也可设置成被连结后的值无法变更,下面会详细说)。
例如:
我建立了两个表,父表是productinfo,子表是product,表结构如下图
父表productinfo,为了简便只设置了一个值,就是将被关联的项,注意关联项与被关联项都一定要是key。
子表product,关联项和被关联项的各类参数(名称、类型、长度)都应该是一样的。
在navicat中关联的方式:
sql语句形式为:ALTER TABLE `product` ADD CONSTRAINT `proid` FOREIGN KEY (`proid`) REFERENCES `productinfo` (`proid`) ON DELETE CASCADE ON UPDATE CASCADE;
其中:四中关联方式分别为
cascade
父表上有修改时,子表同步修改
restrict
如果进行了关联,那么不允许父表相应项进行修改
no action
如果进行了关联,那么不允许父表相应项进行修改
set null
若父表上的项修改后,子表上的相应项设置为null
进入正题,如果想在两个表中间里连结关系(即外键),则需要先选定一个父表、一个子表,以及确定这两个表中的关联项,这样建立连结后当父表的连结项变更时,子表的相应项也会随着变更(也可设置成被连结后的值无法变更,下面会详细说)。
例如:
我建立了两个表,父表是productinfo,子表是product,表结构如下图
父表productinfo,为了简便只设置了一个值,就是将被关联的项,注意关联项与被关联项都一定要是key。
子表product,关联项和被关联项的各类参数(名称、类型、长度)都应该是一样的。
在navicat中关联的方式:
sql语句形式为:ALTER TABLE `product` ADD CONSTRAINT `proid` FOREIGN KEY (`proid`) REFERENCES `productinfo` (`proid`) ON DELETE CASCADE ON UPDATE CASCADE;
其中:四中关联方式分别为
cascade
父表上有修改时,子表同步修改
restrict
如果进行了关联,那么不允许父表相应项进行修改
no action
如果进行了关联,那么不允许父表相应项进行修改
set null
若父表上的项修改后,子表上的相应项设置为null
相关文章推荐
- [引]MySQL INNODB类型表的外键关联设置
- MySQL INNODB类型表的外键关联设置
- 人生第一个MYSQL外键(Foreign Key)的使用--二者类型一定要相同
- mysql重命名表,建立外键,增、删、改列名实例
- MySQL的数据类型,MySQL增删改--添加主外键、添加属性、删除主外键、改表名、获取系统当前时间等
- mysql建立外键
- MYSQL数据表建立外键
- MYSQL 建立外键关联错误
- MYSQL建立外键失败几种情况记录Can't create table不能创建表
- mysql给创建的外键自动建立索引吗?
- MySQL里建立索引应该考虑数据库引擎的类型
- MySQL 关于建立外键失败的问题
- mysql中建立外键注意的问题
- 【原】+【转】MYSQL建立外键失败几种情况记录
- mysql 建立外键错误(mysql error number 1005 errno: 150)
- [引]MySQL INNODB类型表的外键关联设置
- MySQL里建立索引应该考虑数据库引擎的类型
- MySQL里建立索引应该考虑数据库引擎的类型
- Navicate for MySQL建立外键
- mysql学习笔记--插入日期--case--ifnull--if--lower、upper--concat--建立外键关联表