当前位置: 首页 > news >正文

MySQL数据库 外键默认约束和action 基础知识【2】推荐

数据库就是储存和管理数据的仓库,对数据进行增删改查操作,其本质是一个软件。MySQL就是一种开源的关系型数库,也是最受欢迎的数据库之一,今天对MySQL数据的基础知识做了整理,方便自己查看,也欢迎正在学习MySQL数据库的同学参考,谢谢。

说明:

1.MySQL数据库相关数据表的增删改查数据库的增删改查以及  primary key 主键约束联合主键自动递增 auto_incrementunique 唯一约束非空约束 not null等基本知识请参考:

MySQL数据库入门基础知识 【1】推荐-CSDN博客

2.MySQL数据库安装配置连接:详细教程 MySQL 数据库 下载 安装 连接 环境配置 全面-CSDN博客


目录

1.外键约束

1.1外键的默认约束

1.2 外键操作 action 

1.2.1  restrict 严格模式

1.2.2 set null 置空操作

1.2.3 cascade 级联操作


1.外键约束

1.1外键的默认约束

如果一张表中的一个字段指向了另一张表中的主键,就将该字段称为外键,外键的数据类型必须和指向的主键一致,定义外键的表称为从表,被外键引用的表称为主表。

-- 外键约束
-- 如果一张表中的一个字段指向了另一张表中的主键,就将该字段称为外键
-- 外键的数据类型必须和指向的主键一致
-- 定义外键的表称为从表,被外键引用的表称为主表 -- 主表
create table if not  exists users(
id int unsigned primary key auto_increment,
username varchar(20) not null
);
desc users;--从表
create table if not  exists dynamic_1(
id int unsigned primary key auto_increment,
content varchar(220) not null,
user_id int unsigned,
foreign key(user_id) references users(id) 
);
desc dynamic_1;

两张表主表users和dynamic_1从表之间的关系

默认情况下主表users中删除一条已经和从表关联的数据是不被允许的。

主表想修改已经关联从表的数据id 也是不被允许的。

1.2 外键操作 action 

如果想要删除或者修改数据怎么处理?一般情况下都是主表删除从表置空,主表更新从表级联操作。

通过数据表右键设计表>外键 的删除和更新时的数据内容可以看到当前外键的约束方式。

1.2.1  restrict 严格模式
  1. 主表中不存在对应的数据,从表不允许添加
  2. 主表引用着数据(即和从表有关联数据),主表对应的数据不允许删除和修改
1.2.2 set null 置空操作

修改或删除主表 id 时,所有跟它关联的从表字段数据都会被置为null

1.2.3 cascade 级联操作

修改或删除主表 id 时,所有跟它关联的从表字段数据都会做同样的操作

现在我们把外键约束设置成级联操作了,下面是主表和从表对应的数据 

当我们修改主表的数据时,从表跟着一起变化了。

当我们删除主表的数据时,从表相应的字段数据也变成null了。

关于外键约束的内容完了。

MySQL数据基础查询,条件查询、多表查询;如何在nodejs中使用MySQL?请参考:

MySQL数据库入门基础知识 【3】

http://www.lryc.cn/news/412603.html

相关文章:

  • JS正则表达式学习与实践
  • Java数据结构(五)——栈和队列
  • 工具使用:nrm使用以及n模块
  • 匿名管道+进程池+命名管道
  • 【深度学习】【语音TTS】OpenVoice: Versatile Instant Voice Cloning,论文
  • 一六零、云服务器开发机配置zsh
  • [ZJCTF 2019]NiZhuanSiWei1
  • 【网络安全】副业兼职日入12k,网安人不接私活就太可惜了!
  • [STM32]HAL库实现自己的BootLoader-BootLoader与OTA-STM32CUBEMX
  • 鸿萌数据备份服务:中小型企业如何策划及实施云备份方案
  • x264 编码过程中延迟逻辑分析
  • 前端框架 element-plus 发布 2.7.8
  • 2024.8.1(前端服务器的配置以及tomcat环境的配置)
  • 使用 宝塔面板 部署 语料库php网站
  • springboot农产品报价系统-计算机毕业设计源码37300
  • 食源送系统项目的测试
  • JS解构赋值
  • 多多OJ评测系统 前端项目环境初始化 安装Vue脚手架 引入Arco Design组件
  • OceanBase 配置项系统变量实现及应用详解(4):新增系统变量
  • `CAUTION: request is not finished yet!`
  • 科研绘图系列:R语言GWAS曼哈顿图(Manhattan plot)
  • DjangoRF-11-创建testcases子应用--任务模块
  • 服务器数据恢复—SAN环境下LUN被重复映射导致写操作不互斥的数据恢复案例
  • Linux系统安全加固:从防火墙到SELinux策略
  • 排序算法:归并排序,golang实现
  • CSS 的工作原理
  • 买完就后悔?只需几步教你 Apple 怎么申请退款
  • 【保卫战】休闲小游戏 链游
  • 如何构建自己的交易机器人开发环境
  • 解决WordPress文章引用的图片不显示问题