mysql 外部键约束名_MySQL学习日记(14)外键约束

约束的意义

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

2.约束分为表级约束和列级约束

3.约束类型包括

NOT NULL (非空约束)

PRIMARY KEY (主键约束)

UNIQUE KEY (唯-约束)

DEFAULT (默认约束)

FOREIGN KEY (外键约束)

4.外键约束FOREIGN KEY

保持数据一致性,完整性。

实现一对一或一堆多关系,简单来说举个例子,现在有个管理学生的数据库,其中有很多数据表,比如学生信息表,学生期中考试成绩表,学生期末考试成绩表等等,这其中有一个数据字段是完全一致的且不会重复,就是学号,此时可以在其他成绩表中与信息表中的学号字段建立外键约束。

外键约束的规则

1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表。

2.数据表的存储引擎只能为InnoDB(创建表一般默认为innoDB)。

3.外键列和参 照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;

而字符的长度则可以不同。

4.外键列和参 照列必须创建索引。如果外键列不存在索引的话,MySQL将 自动创建索引。

5.查看索引: SHOW INDEXES FROM 数据表名

CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行

格式: ON {UPDATE | DELETE CASCADE}

SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项

必须保证子表列没有指定NOT NULL。

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

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

首先创建一个学生信息表(父表):

mysql> CREATE TABLE 学生信息表(

-> 学号 INT AUTO_INCREMENT PRIMARY KEY,

-> 姓名 VARCHAR(10),

-> 性别 ENUM('男','女'),

-> 年龄 INT UNSIGNED)

97e3ffe55e31

学生信息表

97e3ffe55e31

添加四条信息

再创建一个学生其中考试成绩表(子表),并添加删除级联:

mysql> CREATE TABLE 学生期中考试成绩表(

-> 考试学号 INT,

-> 成绩 INT UNSIGNED,

-> FOREIGN KEY(考试学号) REFERENCES 学生信息表(学号) ON DELETE CASCADE);

97e3ffe55e31

自动创建索引

97e3ffe55e31

添加超出外键约束的值时报错

97e3ffe55e31

因为添加了删除级联,删除父表行时,子表所关联的也会被删除

97e3ffe55e31

如果没有添加删除级联,删除父表行时则会报错

不过一般性外键约束属于物理性约束,用的比较少性能比较差

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值