数据库MySQL(四):表中字段约束和外键约束

news/2025/3/16 0:07:50/

约束

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
目的:保证数据库中数据的正确性、有效性、完整性。

约束分类描述关键字
非空约束限制该字段的数据不能为NULLNOT NULL
唯一约束保证该字段的所有数据都是唯一的、不重复的UNIQUE
主键约束非主键是一行数据的唯一标识,要求非空且唯一PRIMARY KEY
默认约束保存数据时,如果未指定该字段的值,则采用默认值DEFAULT
检查约束保证字段值满足某条件CHECK
外键约束用来让两张表的数据之间建立连接,保证数据的一致性和完整性FOREIGN KEY

代码示例

CREATE TABLE uesr(id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',name VARCHAR(10) NOT null UNIQUE COMMENT '姓名',age int CHECK(age>0 && age<=120) COMMENT '年龄',status char(1) DEFAULT(1) COMMENT '状态',gender char(1) COMMENT '性别'
) COMMENT '用户表';

外键约束

# 在创建表时添加外键  
CREATE TABLE 表名(字段名 数据类型,...[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
);# 在添加表之后添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表(主表字段名)# 删除表的外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称; 
外键关联的删除/更新行为

在添加了外键之后,更新/删除父表中数据时产生的约束行为。

行为说明
NO ACTION当在父表中删除/更新对应记录时,首先检查该记录是否有对应的关键,如果有则不允许删除/更新;默认行为;与RESTRICT一致。
RESTRICT当在父表中删除/更新对应记录时,首先检查该记录是否有对应的关键,如果有则不允许删除/更新;默认行为;与NO ACTION一致。
CASCADE当在父表中删除/更新对应记录时,首先检查该记录是否有对应的关键,如果有则也删除/更新外键在子表中的记录。
SET NULL当在父表中删除/更新对应记录时,首先检查该记录是否有对应的关键,如果有则设置子表中该外键值为NULL,这就要求该外键允许取NULL
SET DEFAULT父表有变更时,子表将外键列设置成一个默认的值。
代码示例
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;

数据库MySQL(一):基础知识
数据库MySQL(二):DDL数据定义语言
数据库MySQL(三):DML、DQL、DCL
数据库MySQL(四):表中字段约束和外键约束
数据库MySQL(五):多表查询
数据库MySQL(六):事务


http://www.ppmy.cn/news/1182136.html

相关文章

详细介绍如何使用 NeRF 进行 3D 体积渲染-附源码下载

介绍 在此示例中,我们展示了 Ben Mildenhall 等人的研究论文 NeRF:将场景表示为用于视图合成的神经辐射场的最小实现 。等人。作者提出了一种巧妙的方法,通过神经网络对体积场景函数进行建模来合成场景的新颖视图。 为了帮助您直观地理解这一点,让我们从以下问题开始: 是…

接口自动化测试要做什么?一文3个步骤带你成功学会!

先了解下接口测试流程&#xff1a; 1、需求分析 2、Api文档分析与评审 3、测试计划编写 4、用例设计与评审 5、环境搭建&#xff08;工具&#xff09; 6、执行用例 7、缺陷管理 8、测试报告 了解了接口测试的工作流程&#xff0c;那"接口自动化测试"怎么弄&#xff1…

《算法通关村—最大小栈问题解析》

《算法通关村—最大小栈问题解析》 最小栈 描述 leetCode 155: 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现最小栈 MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop()…

爬虫、数据清洗和分析

爬虫、数据清洗和分析是在数据科学、数据挖掘和网络爬虫开发领域中常见的概念。 爬虫&#xff08;Web Scraping&#xff09;&#xff1a;爬虫是一种自动化程序或脚本&#xff0c;用于从互联网上的网站上提取信息。这些信息可以是文本、图像、视频或其他类型的数据。爬虫通常会…

LLVM学习笔记(57)

4.2. 代码入口&#xff08;以下为7.0代码&#xff09; LLVM有两个编译器。一个是静态编译器llc——它的输入是Clang从C、C及ObjC源代码转换而来的LLVM IR&#xff0c;把IR编译为LLVM的字节码&#xff0c;或指定目标机器的汇编或机器码。另一个是动态编译器lli——它的输入是LL…

Leetcode刷题详解——解码方法

1. 题目链接&#xff1a;91. 解码方法 2. 题目描述&#xff1a; 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; A -> "1" B -> "2" ... Z -> "26"要 解码 已编码的消息&#xff0c;所有数字必须基于上述映射的方法&am…

5.OsgEarth加载地形

愿你出走半生,归来仍是少年&#xff01; 在三维场景中除了使用影像体现出地貌情况&#xff0c;还需要通过地形体现出地势起伏&#xff0c;还原一个相对真实的三维虚拟世界。 osgEarth可通过直接加载Dem数据进行场景内的地形构建。 1.数据准备 由于我也没有高程数据&#xff0c…

Power BI 傻瓜入门 15. DAX功能带来乐趣

本章的内容包括&#xff1a; 了解DAX中的功能使用DAX函数制作定义明确的公式发现哪些DAX函数可以帮助解决复杂的数据计算或操作需求 在第14章中&#xff0c;我将讨论函数如何成为计算表达式中命名公式的一部分。作为提出计算表达式的人&#xff0c;您是为函数提供特定参数的人…