mysql 导入sql文件 外键报错_MySQL基础入门学习【4】约束2

约束: 保证数据的一致性和完整性

约束分为(约束所针对的字段的多少决定): 表级约束和列级约束

约束类型: NOT NULL(非空约束); PRIMARY KEY(主键约束); UNIQUE KEY(唯一约束); DEFAULT(默认约束); FOREIGN KEY (外键约束)

1. 外键约束:

(1)作用:保证数据一致性、完整性;实现数据表的一对一或一对多关系

(2)要求:父表与子表必须使用相同的存储引擎,且禁止使用临时表;

数据表的存储引擎只能为InnoDB;

外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同;

外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将自动创建索引。(主键创建的时候自动创建索引)

(3)子表: 具有外键列的表;父表:子表所参照的表

(4)编辑数据表的默认存储引擎:MySQL配置文件: default-storage-engine=INNODB,重启;

查看存储引擎: mysql> SHOW ENGINES;  或者 SHOW CREATE TABLE tbl_name;

1e7f3d1e5c0fd986e00ddccac9f81819.png

705adf5dded5e069c297dfd47cf527dc.png

a43e2d56f49710d4d58d6bcdf457e561.png

(5) 针对于外键约束的参照操作:(在进行了外键创建以后,在更新表的时候,子表是否也进行相应的操作)

CASCADE: 从父表删除或更新记录时,同时也删除或更新子表中的相应的行

ee2d5f1d31b18aaa075f0e7d1b461729.png

(必须先在父表中插入记录,然后才能在子表中插入记录)

6ee373a84cb09e36dedd7b7f41819343.png

7b087474f1e929088de25288110b8b68.png

3cc890c3411b684f4375043798f2ca11.png

SET NULL:从父表中删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL

RESTRICT: 拒绝对父表的删除或更新操作

NO ACTION: 标准SQL的关键字,在MySQL中与RESTRICT相同

实际开发中很少使用物理的外键约束,很多都使用逻辑的外键约束。因为物理外键约束只有innodb引擎支持。

所谓逻辑外键,是指在定义两张表的结构时,按照存在着某种结构的方式去定义,但是不去使用FOREIGN KEY这个关键词来定义。

[参考链接]   https://www.imooc.com/learn/122

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值