【MySQL】主键和外键

1 主键

  • 主键:给定表里每条记录的唯一标识;
    • 理想情况下,主键不能修改,它的值应该永远不变。
    • 主键是非空的,必须有一个唯一标识。
    • 主键可启用自动递增,便于插入数据,不会有重复主键标识;表的主键不能重复。
    • 如student_id, course_id等。

2 外键

  • 外键:一张表中引用了另外一张表主键的那列。如注册表中引用了学生表的主键student_id,引用了课程表的主键course_id,这两个就是注册表的外键。
  • 复合主键:表中的两个外键的结合成为主键,唯一标识每次注册。如student_id和course_id的组合构成此表的主键。

3 外键约束

  • 需要为表中的外键设置更新和删除的约束,保护数据不受损坏。通过外键约束决定当主键被更新或删除时,外键应该进行什么操作。
  • 一般来说,更新的约束设置为级联。删除的约束需按情况设置。
  • 外键约束面板:更新 / 删除。
    • cascade:级联。如果主键更改或删除,会自动更新子表中的记录。
    • restrict:限制。拒绝更新或删除。
    • no action:无操作。和限制一样,防止或拒绝更新或删除操作。
    • set null:设为空值。如果学生id改变,外键会被设置为空值。会导致注册表里的一条记录失去了父表,成为“孤儿记录”。“孤儿记录”是不良数据,多数情况下不选set null

相关推荐

  1. MySQL

    2024-01-03 15:52:01       68 阅读
  2. MYSQL,索引,

    2024-01-03 15:52:01       49 阅读
  3. MYSQL增加

    2024-01-03 15:52:01       31 阅读
  4. 、建表范式、MySQL索引、用户管理

    2024-01-03 15:52:01       44 阅读
  5. MySQLMySQL级联删除

    2024-01-03 15:52:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-03 15:52:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-03 15:52:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-03 15:52:01       82 阅读
  4. Python语言-面向对象

    2024-01-03 15:52:01       91 阅读

热门阅读

  1. openssl passwd -crypt

    2024-01-03 15:52:01       53 阅读
  2. sentinel相关面试题及答案(2024)

    2024-01-03 15:52:01       49 阅读
  3. c++语句详细介绍

    2024-01-03 15:52:01       40 阅读
  4. Python随机点名

    2024-01-03 15:52:01       57 阅读
  5. 4.Unity中向量相关

    2024-01-03 15:52:01       58 阅读
  6. vue3-13

    vue3-13

    2024-01-03 15:52:01      47 阅读
  7. openCV处理音视频的常用API及一般流程

    2024-01-03 15:52:01       62 阅读
  8. 详解 docker 镜像制作的两种方式

    2024-01-03 15:52:01       56 阅读
  9. 腾讯云2核2G轻量应用服务器300GB月流量够用吗?

    2024-01-03 15:52:01       60 阅读