外键约束

外键约束

foreign key

外键约束的要求:

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

数据库引擎只能是InnoDB;

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

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

-----------

下面创建两个数据表

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

id (主键)

省份名称

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

id (主键)

用户名称

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

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

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

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

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

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

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

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

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

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

添加外键的语法

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一样

原文发布于微信公众号 - 交互设计前端开发与后端程序设计(interaction_Designer)

原文发表时间:2017-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java呓语

第13.1.1章 语法解释ALTER DATABASE

ALTER DATABASE 允许修改数据库的特征,所有关于数据库的特征都存储在db.opt文件中。你必须先具备该数据库的ALTER特权,才能完成对数据库的AL...

761
来自专栏跟着阿笨一起玩NET

SET XACT_ABORT各种用法及显示结果

  2、每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚,格式为:

992
来自专栏散尽浮华

mysql操作命令梳理(2)-alter(update、insert)

在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列、创造或消去索引、改变现有列的类...

2066
来自专栏java初学

数据库索引

43517
来自专栏PHP在线

MySQL DELETE语句和TRUNCATE TABLE语句的区别

MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语句和TRUNCATE ...

37814
来自专栏Java后端生活

MySQL(十五)DDL之常见的约束

1774
来自专栏PHP在线

MyISAM InnoDB 区别(回顾)

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高查...

3455
来自专栏PHP在线

MySQL索引类型一览 让MySQL高效运行起来

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高...

3385
来自专栏极客生活

mysql 数据去重

从excel中导入了一部分数据到mysql中,有很多数据是重复的,而且没有主键,需要按照其中已经存在某一列对数据进行去重。

962
来自专栏抠抠空间

MySQL 如何删除有外键约束的表数据

今天删除数据库中数据,提示因为设置了foreign key,无法修改删除 可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。

1143

扫码关注云+社区

领取腾讯云代金券