首页/新闻资讯/正文详情

数据库原理及运用(初识)第五节:#外键与外键约束

发布时间:2026/9/24 17:52:06 来源:云帆数科 栏目:资讯中心
数据库原理及运用(初识)第五节:#外键与外键约束
欢迎回来本篇文章为不了解数据库或者将要学数据库却不知道它具体是什么的伙伴们介绍数据库的基础知识同时小编也会用每一小节学到的新知识一步一步搭建出一个完整的大一新生数据库系统小编争取每天都会更新一节零基础的小伙伴也可以跟着小编一起搭建自己的一个数据库系统前面我们讲解了的约束一部分知识点这一章我们重点讲解一下外键约束并用实际案例演示一遍在讲解外键约束之前我们先在我们史莱克新生数据库系统里添加一个记录我们学校老师的表格顺便演示一下上节我们学习到的约束的用法# 创建具有约束条件的表格我们先来分析一下一张表格会用上哪些约束条件首先这个表格中要有id他就像我们每个人的省份证号一样是我们身份的一种证明标识他必须具备唯一性同时我还希望他能够自动增长最好这样我们就不用在创建表格时一个一个的输入id了那么要实现这些需求我们需要用到的约束条件就是‘主键’‘自动增长’。他们对应的约束关键字是‘primary key’和‘auto_increment’。其次表格中还有姓名而考虑到学校这么多人我们希望姓名不为空就可以了约束关键字为‘not null’然后是年龄和和课程序号每个人年龄坑定都是大于0的而且如果没有特殊情况的话在座的大部分人年龄应该是要小于150的修仙的几个先站起来一下课程序号也同理所以这里我们需要用检查约束约束关键字‘check’注意这里的检查约束需要8.0.16版本之后才具备接着是教授的课程和性别这两个就没什么要求所以可以不加约束。OK分析完了就让我们动手创建一个有约束条件的教师表如果大家嫌手动建表太麻烦了也可以在MySQL里面直接新建一个同时也可以直接选择表中每个字段所需要的约束可以看到就算我们在添加数据时没有管id他也会自动填写并且自动增加。接着小编在演示一下如果我们填写的数据超过了约束条件会怎样可以看到我们的数据一旦超出了约束的范围执行后后就会报错。这里我们直接就创建好了一个由于是条件的教师表## 外键与外键约束外键是用来让两张表的数据之间建立连接保证数据的一致性和完整性。接下来大家可以思考一个问题当一个学校的每一门课是有好几个老师教而一个老师也有可能任教好评几门课程那么如果我们把课程信息和老师记录在一张表上就像我们上面那一张teacher表格一样那么我们要怎样表示学生的选课信息呢这样两张表就没法很好的表达出所有信息了。这个时候我们就需要把课程信息单独用一张表来记录。然后我们只需要将学生选的课的id填在学生表的课程那一栏就可以了这样学生表里面的c_id就与课程表里id产生了关联学生表叫做子表课程表叫做父表我不过现在这种关联还只是我们逻辑上的是我们知道课程表id为3的课刚好是某同学选的课所以我们把3写在了学生选课的c_id里但如果某天我们一不小心误删了课程表id为3的字段或者那天我们把id为3的表改下名字那岂不是要把所有学生的课程id全都改一遍这显然是不可能的为了解决这个问题我们就需要给这两个表建立外键约束具体语法在上一节已经告诉大家了而有了外间的关联这个时候我们再去删除或者修改course表中的数据就会报错下面我们补充一下外键的删除和更新行为NO ACTION当在父表中删除/更新对应记录时首先检查该记录是否有对应外键如果有则不允许删除/更新。RESTRICT当在父表中删除/更新对应记录时首先检查该记录是否有对应外键她果有则不允许删除/更新。与NO ACTION一致)CASCADE当在父表中删除/更新对应记录时首先检查该记录是否有对应外键如果有则也删除/更新外键在子表中的记录。SET NULL当在父表中删除对应记录时首先检查该记录是否有对应外键如果有则设置子表中该外键值为null这就要求该外键允许取null)。SET DEFAULT父表有变更时子表将外键列设置成一个默认的值(Innodb不支持)下面我把外键改为了cascade在修改课程表主键名试试看可以看到我们又可以修改父表数据了我们删掉了id为7的字段而选了这门课的学生数据也一起被删除了。那么以上就是这小节的全部内容我们下一节再见

相关推荐

*流水灯实验*
*流水灯实验*

流水灯实验 代码如下列所示 MX_GPIO_Init(); /* USER CODE BEGIN 2 */ __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.ModeGPIO_MODE_OUTPUT_PP ; GPIO_InitStructure.PinGPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 |GPIO_… · 2026/9/24 17:52:06

出海新征程:迁移科技全球化战略与海外市场的本土化破局
出海新征程:迁移科技全球化战略与海外市场的本土化破局

2026年7月,日本九州。一位当地制造业客户站在日本合作伙伴的展台前,用放大镜仔细查看屏幕上的点云图像——一个黑色反光金属工件的3D轮廓清晰浮现。他转头对身边的同伴说了句日语,大意是“这个在阳光下也能看到”。这台首次在日本公开亮相的E… · 2026/9/24 17:52:00

前端开发面试题
前端开发面试题

一、HTML1. HTML5 新特性有哪些? 语义化标签:header/nav/main/article/section/footer;表单增强:email/date/range;音视频:audio/video;图形:Canvas/SVG;存储&#xff1a… · 2026/9/24 17:52:00

Python接入Aeternity链:aepp-sdk核心用法与实战避坑指南
Python接入Aeternity链:aepp-sdk核心用法与实战避坑指南

1. aepp-sdk 解决的是什么问题:Python 开发者接 Aeternity 链时的工具链缺口1.1 为什么会在 Python 生态里遇到 aepp-sdk我最初接触 aepp-sdk 是因为一个内部数据工具的迁移需求。项目方给了我们一套跑在浏览器里的 JavaScript 示例,要把它改成 Python 后… · 2026/9/24 18:24:48

WiFi万能钥匙电脑版下载安装与连接教程
WiFi万能钥匙电脑版下载安装与连接教程

概述 WiFi万能钥匙是一款免费 WiFi 连接工具,通过共享经济模式帮助用户连接附近的共享热点,PC 版可借助电脑无线网卡解锁并连接附近的共享 WiFi。本文讲清电脑版的下载安装、连接步骤与功能说明。 一、下载与安装 从 WiFi万能钥匙下载入口 获取 PC 版安… · 2026/9/24 18:24:48

焦距和视场大小的关系
焦距和视场大小的关系

焦距与视场大小(视场角 FOV)呈反比关系:在感光元件(靶面尺寸)固定的前提下,焦距越长,视场角越小,看到的范围越窄(放大效果强);焦距越短,视场角越大,看到的范围越广。 1. 几何数学关系 视场角由镜头焦距 fff 和感光元件(靶面)的有效尺寸 ddd 共同决定,几何公式… · 2026/9/24 18:24:48

基于 Java Spring Boot 的寻亲网设计与实现
基于 Java Spring Boot 的寻亲网设计与实现

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 项目背景与意义 随着城市化进程加快和人口流动加剧,走失儿童、失散老人等寻亲问题日益受到社会关注。传统的寻亲方式主要依赖张贴寻人启事、广播、电视等… · 2026/9/24 18:24:42

Powerjob适配达梦数据库:国产化改造实战与踩坑记录
Powerjob适配达梦数据库:国产化改造实战与踩坑记录

1. 项目背景:为什么要做 Powerjob 国产化适配Powerjob 是目前国内用得比较多的分布式任务调度中间件,纯 Java 实现,支持秒级调度、工作流编排、故障转移、动态线程池这些特性。在信创改造的浪潮下,很多企业把数据库从 MySQL 换成达… · 2026/9/24 18:24:42

Winform中准确测量Label文本像素宽度:TextRenderer与GDI+对比实践
Winform中准确测量Label文本像素宽度:TextRenderer与GDI+对比实践

在Winform开发里,有一类需求看起来特别简单,但真动手做的时候总差那么几个像素——就是拿到Label控件里那行字符串的精确宽度。做动态布局的要根据文本自动拉伸;做上位机界面的要根据参数文本对齐输入框;做自绘控件的要在OnPaint里… · 2026/9/24 18:24:42

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码