美文网首页
MySQL学习日记(14)外键约束

MySQL学习日记(14)外键约束

作者: copymaker | 来源:发表于2021-01-30 11:34 被阅读0次

约束的意义

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)
学生信息表
添加四条信息

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

mysql> CREATE TABLE 学生期中考试成绩表(
    -> 考试学号 INT,
    -> 成绩 INT UNSIGNED,
    -> FOREIGN KEY(考试学号) REFERENCES 学生信息表(学号) ON DELETE CASCADE);
自动创建索引
添加超出外键约束的值时报错 因为添加了删除级联,删除父表行时,子表所关联的也会被删除
如果没有添加删除级联,删除父表行时则会报错

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

相关文章

  • MySQL学习日记(14)外键约束

    约束的意义 1.约束保证数据的完整性和一致性2.约束分为表级约束和列级约束3.约束类型包括 NOT NULL (非...

  • mysql 学习语句

    MySQL学习笔记 登录和退出MySQL服务器 基本语法 建表约束 主键约束 唯一主键 非空约束 默认约束 外键约...

  • mysql约束

    1, mysql 不支持外键约束 ,条件约束约束分为列级约束,primary 主键约束check 条件约束for...

  • laravel 填充数据前用truncate清空有外键的表时报错

    原理就是在执行truncate之前告诉mysql取消所有外键约束检查,清空之后再恢复外键约束检查。 参见: htt...

  • MySQL外键约束

    1、概念 外键:从表中的公共字段称之为外键好处:保证数据库数据的完整性,不会存在数据丢失的情况缺点:对性能有影响,...

  • mysql 添加外键约束错误 1215 Cannot add t

    mysql 添加外键约束 1215 Cannot add the foreign key constraint 1...

  • 设置外键,外键约束值的区别

    laravel 设置外键,并设置外键约束的方式 为联级删除 更新:在使用Navicat for mysql设计表时...

  • mysql 约束

    mysql 中常见的约束: 默认约束 非空约束 主键约束 唯一约束 外键约束 自增长约束 顾命思议,主要讲几个容易...

  • MySQL学习:外键约束foreign key

    1、在创建表时,可添加外键 语法: CREATE TABLE 表名( .... 外键列 CONSTRAINT 外键...

  • mysql创建外键约束

    语法: 外键约束常用的两种选项 父表更新同时更新子表,父表删除的时候如果子表不存在对应的数据删除成功,如果存在对应...

网友评论

      本文标题:MySQL学习日记(14)外键约束

      本文链接:https://www.haomeiwen.com/subject/ghpqtltx.html