SQL怎么在有外键的主键表中插数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL怎么在有外键的主键表中插数据相关的知识,希望对你有一定的参考价值。

这个外键的数据怎么插

参考技术A 外键数据就是这个外键所对应的表中必须存在这条数据,你才可以在外键的位置插入这条数据。
比如A表是主表,B表为外键所在表:
A
id
name
B
id
aid
如果B表中aid为外键,对应A表的主键id,则在B表中插入数据时,aid字段的值必须在A表中存在。即,如果A表数据如下:
A
id
name
1
a1
2
a2
3
a3
4
a4
则,B表中插入数据时,如果aid为1~4,由于A表中存在该数据,插入可;但如果aid为A表中存在以外的数据(非1~4),则插入不可,因为外键要求主表必须存在这样的数据。

谈谈mysql的主键和外键

主键:保证数据的唯一性,非空且唯一,一般设置主键的语法为:字段 类型 PRIMARY KEY;或者 字段 类型,PRIMARY KEY(字段名)

外键:保证数据的完整性,一致性。一般设置的外键关联的是另一张表的主键。外键的插入或者更新不能插入或更新主键表中没有的值,切记删除主键表中的数据时,

要先去外键表中接触关系,也可以在建立外键时设置好更新或者删除的外键表中的数据是否更改。设置外键的语法:CONSTRAINT 外键名 FOREIGN KEY (外键字段)REFERENCES 参照表 (参照字段) ON DELETE SET NULL ON UPDATE CASCADE 设置参照完整性。

外键约束的参照操作:

RESTRICT拒绝参照表删除或更新参照字段;

RESTRICT和NO ACTION相同,但这个指令只在mysql生效;

CASCADE删除或更新参照表的参照字段时,外键表的记录同步删除更新;

SET NULL 删除或更新参照表的参照字段时,外键表的外键设为NULL。

 

在这里说一句,外键一定要加索引,

(1) 外键没有索引,确实可能导致子表产生表锁,但是有前提: 
a. 子表有删改操作。 
b. 主表有删操作,或者更新主键的操作。 
满足以上两个条件才会出现主表操作hang状态。

(2) 外键不建索引,则删除主表记录或主子表关联查询,都会进行子表的全表扫描。

 

这里顺带说一下索引查询的原理:

“索引”是为了能够更快地查询数据。比如一本书的目录,就是这本书的内容的索引,读者可以通过在目录中快速查找自己想要的内容,然后根据页码去找到具体的章节。
数据库也是一样,如果查询语句使用到了索引,会先去索引里面查询,取得数据所在行的物理地址,进而访问数据。
 

以上是关于SQL怎么在有外键的主键表中插数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在有外键关系的表中删除数据

sql中啥叫主键表,啥叫外键表

Navicat for MySQL怎么将设置成外键的ID设置自动增长

谈谈mysql的主键和外键

SQL的主键和外键的作用

主键和外键的作用