前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >外键约束

外键约束

作者头像
前朝楚水
发布2018-04-04 10:52:40
2K0
发布2018-04-04 10:52:40
举报
文章被收录于专栏:互联网杂技

外键约束

foreign key

外键约束的要求:

父表和字表必须使用相同的存储引擎,禁止使用临时表;

数据库引擎只能是InnoDB;

外键列和参照列必须具有相似的数据类型,数字的长度或者是否有符号必须一样,字符长度可以不不一样;

外键列和参照列必须创建索引,参照列没有索引,mysql回自动创建索引;

-----------

下面创建两个数据表

1(父表)省份表两个字段

id (主键)

省份名称

2(子表)用户表三个字段

id (主键)

用户名称

省份编号(外键对应省表的主键id类型一样,因为需要把这个设置为外键约束)

-------------------

字表通过省份编号去在父表中查询省份名称;

------------

如果要创建外键约束,那么在父表最后加上一句

foreign key (省份编号字段) references 省份表 (省份id);

这样就创建一个外键约束,

上面两个表,也就是说用户表中的省份标号是外键,相当于省份表

中的id,那么用户表的省份编号与省份表的id字段类型必须一样;

-------------

添加外键的语法

代码语言:javascript
复制
ALTER TABLE tbl_name    ADD [CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

---------

查看索引;

show indexes from test2\G;

--------

一个实际的例子

create table emp( emp_id char(8) primary key, //员工号 emp_name char(30) //员工名 ); create table salary( id char(8), //(员工号) salary flaot, //薪资 foreign key (id) references emp (emp_id) //添加外键约束 ); ----------

外键约束的参照操作:也据说说父表与字表建立了关联或者约束,这个时候父表进行操作的时候,子表也可以设置相应操作;

cascade;从父表删除的时候,字表相应字段删除

Set null;从父表删除的时候,子表设置为null;这种情况子表字段需要没有设置为not null

restrict;拒绝对父表删除或者更新

No action;与restrict一样

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 交互设计前端开发与后端程序设计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档