外键约束

时间:2022-05-07
本文章向大家介绍外键约束,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

外键约束

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 test2G;

--------

一个实际的例子

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