四、约束-3.外键约束

news2024/9/24 11:30:28

一、概念

外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

 【例】

准备数据

-- 准备数据
create table dept(
    id int auto_increment comment 'ID' primary key ,
    name varchar(50) not null comment '部门名称'
) comment '部门表';
insert into dept (id, name) values (1, '研发部'), (2, '市场部'), (3, '财务部'), (4, '销售部'), (5, '总经办');

create table emp(
    id int auto_increment comment 'ID' primary key,
    name varchar(50) not null comment '姓名',
    age int comment '年龄',
    job varchar(20) comment '职位',
    salary int comment '薪资',
    entrydate date comment '入职时间',
    managerid int comment '直属领导ID',
    dept_id int comment '部门ID'
) comment '员工表';
insert into emp(id, name, age, job, salary, entrydate, managerid, dept_id)
values (1, '金庸', 66, '总裁', 20000, '2000-01-01', null, 5),
       (2, '张无忌', 20, '项目经理', 12500, '2005-12-05', 1, 1),
       (3, '杨逍', 33, '开发', 8400, '2000-11-03', 2, 1),
       (4, '韦一笑', 48, '开发', 11000, '2002-02-05', 2, 1),
       (5, '常遇春', 43, '开发', 10500, '2004-09-07', 3, 1),
       (6, '小昭', 19, '行政', 6600, '2004-10-12', 2, 1);

 演示:删除dept表中的id为1的数据

此时emp表中关联dept_id为1的数据就出现了不完整

没有数据库外键关联的情况下,是无法保证数据的完整性和一致性

二、添加外键

 【例】

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

  删除dept表中id为1的数据,会报错: 

 

三、删除外键

 【例】

alter table emp drop foreign key fk_emp_dept_id;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/797113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL库开发)

时钟配置HSI主频配置64M 勾选打开8个通道的ADC 使能连续转换模式 添加DMA DMA模式选择循环模式 使能DMA连续请求 采样时间配置160.5 转换次数为8 配置好8次转换的顺序 配置好串口,选择异步模式配置好需要的开发环境并获取代码 修改main.c 串口重定向 #include &…

【第一阶段】Kotlin的空检查

空检查 代码: fun main() {var info:stringprintln(info) }在Java中可以直接不给默认值,但是在kotlin中必须给默认值不然就会报错 正确写法应该为: fun main() {var info:String" "println("info$info") }执行结果&…

【基于Spark的电影推荐系统】环境准备

概览 本科毕设做过电影推荐系统,但当时的推荐算法只有一个,现在已经忘记大部分了,当时也没有记录,因此写这个博客重新来记录一下。此外,技术栈由于快秋招原因来不及做过多的部分,因此只实现简单的功能&…

uniapp跨平台项目实战失物招领

失物招领项目虽然是一个小项目,但是内部的功能还是很全的,比如发布消息,包含图片或者是视频,获取数据,包含分页的数据获取,同时该项目也包含了多表关联的业务设计。 学习本项目能获得的经验有,数…

Selenium的学习

介绍下学习selenium的经验。之前有网友要求我给布置作业,那么我整理一下就全部列在这里。每一步给出一个小题目。 selenium是一个比较古老也比较流行的自动化测试库。他的特点是,版本较多,以至于在网上搜到很多教程都是过时的。 一、Seleniu…

lightGBM实例——特征筛选和评分卡模型构建

数据还是采用这个例子里的数据,具体背景也同上。 添模型构建——使用逻辑回归构建模型,lightGBM进行特征筛选 lightGBM模型介绍请看这个链接:集成学习——Boosting算法:Adaboost、GBDT、XGBOOST和lightGBM的简要原理和区别 具体代…

65. 有效数字

题目链接:力扣 解题思路:从前往后挨个进行有效判断,注意其中e或E和小数点只能出现一次,具体算法如下: 初始变量: i 0:遍历指针dotfalse:标记小数点是否已经出现E false&#xff1a…

以智慧监测模式守护燃气安全 ,汉威科技“传感芯”凸显智慧力

城市燃气工程作为城市基建的重要组成部分,与城市居民生活、工业生产紧密相关。提升城市燃气服务质量和安全水平,也一直是政府和民众关注的大事。然而,近年来居民住宅、餐饮等工商业场所燃气事故频发,时刻敲响的警钟也折射出我国在…

浅浅了解下单例模式中的懒汉模式饿汉模式

单例模式 1.什么是设计模式2.什么是单例模式3.常见实现单例模式的两种方式1.饿汉模式(1)特点(2)代码实现(3)线程是否安全 2.懒汉模式(1)特点(2)代码实现(3)线程是否安全(4)如何保证线程安全解决方案:进阶方案 3.对比懒汉模式和饿汉模式1、线程安全2、是否延迟加载3、系统开销4、…

QMainWindow

文章目录 QMainWindow基本元素QMainWindow函数介绍简单的示例效果图 QMainWindow QMainWindow是一个为用户提供主窗口程序 的类,包含一个菜单栏(menu bar)、多个工具栏 (tool bars)、多个锚接部件(dock widgets)、―个 状态栏(status bar )及一个中心部件(central …

【算法提高:动态规划】1.2 最长上升子序列模型(TODO最长公共上升子序列)

文章目录 题目列表1017. 怪盗基德的滑翔翼1014. 登山482. 合唱队形1012. 友好城市(⭐排序后 最长上升子序列模型)1016. 最大上升子序列和1010. 拦截导弹解法1——最长递减子序列 贪心解法2——最长递减子序列 最长递增子序列(⭐贪心结论&am…

K8s集群部署-详细步骤

不够详细,后面有时间再编辑 安装 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 关闭swap, selinux swapoff -a && sed -i / swap / s/^\(.*\)$/#\1/g /etc/fstab setenforce 0 && sed -i s/^SELINUX.*/SELINUXdisabled/ /…

Safari 查看 http 请求

文章目录 1、开启 Safari 开发菜单2、显示 JavaScript 控制台 1、开启 Safari 开发菜单 Safari 设置中,打开开发菜单选项 *** 选择完成后,Safari 的目录栏就会出现一个 开发 功能。 2、显示 JavaScript 控制台 开启页面后,在开发中选中 显…

Android 之 动画合集之补间动画

本节引言: 本节带来的是Android三种动画中的第二种——补间动画(Tween),和前面学的帧动画不同,帧动画 是通过连续播放图片来模拟动画效果,而补间动画开发者只需指定动画开始,以及动画结束"关键帧"&#xff0…

提示计算机丢失MSVCP140.dll怎么办?这三个修复方法可解决

最近在使用电脑的过程中,遇到了一个问题,即缺少了MSVCP140.dll文件。这个文件是一个动态链接库文件,常用于Windows操作系统中的应用程序中。由于缺少这个文件,会导致计算机系统无法运行某些软件或游戏。丢失MSVCP140.dll可能是由于…

【技术分享】oracle数据库相关操作

-- 截断表 TRUNCATE TABLE TABLE_NAME;-- 删除表 DROP TABLE TABLE_NAME;-- 查询表 SELECT * FROM TABLE_NAME;-- 添加一条记录 INSERT INTO TABLE_NAME(COLUMN) VALUES(VALUE);-- 删除记录 DELETE FROM TABLE_NAME WHERE COLUMNVALUE;-- 修改记录 UPDATE TABLE_NAME SET…

Android性能优化之Thread native层源码分析(InternalError/Out of memory)

近期处理Bugly上OOM问题,很多发生在Thread创建启动过程,虽然最后分析出是32位4G虚拟内存不足导致,但还是分析下Java层Thread 源码过程,可能会抛出的异常InternalError/Out of memory。 Thread报错堆栈: Java线程创建…

数据库|手把手教你成为 TiDB 的 Contributor

一、背景 最近笔者在 AskTUG 回答问题的时候发现,在 6.5.0 版本出现了几个显示未启动必要组件 NgMonitoring 的问题贴。经过排查发现,是 ngmonitoring.toml 中的配置文件出现了问题。文件中的 endpoints 应该是以逗号分隔的,但是却写成了以空…

JavaWeb 项目实现(二) 注销功能

3.注销功能 接前篇,实现了登录功能之后,现在实现注销功能。 因为我们实现登录就是在Session中记录了用户信息。 所以注销功能,就是在Session中移除用户信息。 代码:删除Session中的用户信息,跳转登录页面 package…

【安全渗透】第一次作业(编码知识总结)

目录 1. ASCII编码 2、Unicode 3、UTF-8 1. ASCII编码 ASCII 是“American Standard Code for Information Interchange”的缩写,翻译过来是“美国信息交换标准代码”。ASCII 的标准版本于 1967 年第一次发布,最后一次更新则是在 1986 年&#xff0c…