【MySQL】数据库约束

 MySQL(三)数据库约束

数据库约束

一、not null

二、default

三、unique

四、primary key

1.自增主键机制

1.1单服务器下

1.2分布式下

1.2.1时间戳

1.2.2主机编号

1.2.3随机因子

五、foreign key

1.∈关系维护

1.1父约子:

1.2子约父:

1.3删表:

2.逻辑删除

2.1子表存父表删

2.2电脑空间占用


数据库约束

列字段行记录数据的约束

一、not null

create table student(id int not null);

not null 约束此列字段的行数据 不能为空


二、default

create table student(name varchar(20) default 'unknow');

约束此列字段的行数据 在默认时的值是什么

每个列字段 默认都会有的default值 是null 


三、unique

create table student(id int unique);

约束此列字段的行数据 之间不能重复 是唯一的

唯一性字段uniqueprimary key的 每次新入行数据时 都会去遍历查询 是否会重复

—>唯一性列字段创建时 会自动生成有索引,每次在此列字段 新入行数据时 都会用索引 精确定位到此列地 遍历检查行数据 是否会重复


四、primary key

create table student(id int primary key auto_increment);

约束 此列字段的行数据 或多个列字段的合行数据(联合主键) 非空且唯一,相当于是not null与unique两约束的合体版

作为记录的身份标识字段一张表中 只能有一个主键,每次新入主键的行数据时 会触发 唯一性字段的 索引遍历查询重复


1.自增主键机制

每个记录的主键值 都由数据库服务器 自动机动分配设置

1.1单服务器下

单个mysql服务器里,主键可设置 自增主键机制auto_increment服务器会维护着 当前主键值的最大值,每次分配时 以当前的最大值+1 来自增唯一id分配


1.2分布式下

分布式下的 多个mysql服务器中,如果用每个mysql服务器 各自维护的 当前最大值 来分配的话,主键值会重复 不行的,分布式用 唯一id = 时间戳 + 主机编号 + 随机因子 来自增唯一id分配:

1.2.1时间戳

分布式下 用记录产生时的时间戳 作为id,如果单位时间内 产生的记录很多,可以把时间戳 往小设置 设置成毫秒级 微秒级,尽量使得单位时间戳内 只有一条记录的产生 而去分配


1.2.2主机编号

如果发现单位时间戳内 同时产生有多条记录时,就将时间戳id 再拼上 记录产生所处的 mysql服务器的主机编号,一般情况下,当设置的时间戳单位 小到一台机器 一时间戳内 无法连续完成产生记录时,此时的多条记录 肯定是由不同主机同一时刻产生的,加上各自的主机编号后 就能确保id是唯一的了


1.2.3随机因子

如果设置的时间戳不够小,发现同一时间戳内产生的记录 是由同一台服务器主机产生时的,此时再在 同台机器同时间戳的记录 的id后面 再拼上随机因子数 使得id不同


五、foreign key

create table class(classId int primary key,name varchar(20));
create table student(id int primary key,classId int,name varchar(20),foreign key(classId) references class(classId));

约束此列字段的行数据 来源包含于 外表的唯一性列字段行数据


1.∈关系维护

外键维护着 子表数据∈父表数据 的关系:

1.1父约子:

子表新入 此外键列字段行数据时,必须来源于 父表此列字段的行数据


1.2子约父:

父表更改 外键关联的 此列字段行数据时,必须确保 子表此列字段里没有包含它


1.3删表:

删除表时,只能 先删子表再删父表


2.逻辑删除

2.1子表存父表删

很多时候,父表需要删除 但子表不能删除,就可以通过在逻辑上 把父表状态设置为删除实现 父表删,子表存 的效果,而实际上父表还在硬盘中 未删除等到后面子表 可以需要删除时,再真正地将 子表与父表都删去,实现灵活删除的效果


2.2电脑空间占用

电脑硬盘上:

  • 文件空间的占用时 将此存储空间 逻辑上设置为已占用 并往里存储它,别的文件就不能往这块空间存了
  • 删除文件时 将此存储空间 逻辑上设置为可占用 但并没有把里面的数据清理允许文件覆盖占用地 继续存储着的

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

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

相关文章

VRRP 协议

一、前言 最近被问到一个VRRP的网络协议,一开始我是蒙蔽的状态,至于什么是VRRP,我后面查了一下,因为对于网络这方面我也不是很精通,见谅! VRRP,全称叫虚拟路由冗余协议,是我孤陋寡闻…

打开小程序提示请求失败(小程序页面空白)

1、小程序代码是商城后台下载的还是自己编译的 (1)要是商城后台下载的,检查设置里面的域名是不是https的 (2)要是自己编译的,检查app.js里面的接口域名是不是https的,填了以后有没有保存 注&a…

Windows/MacOS WebStorm/IDEA 中开发 Uni-App 配置

文章目录 前言1. 安装 HBuilder X2. WebStorm/IDEA 安装 Uniapp Tool 插件3. 配置 Uniapp Tool 插件4. 运行 Uni-App 项目 前言 前端开发人员对 WebStorm 一定不陌生,但有时需要开发 Uni-App 的需求,就必须要采用 HBuilder X,如果不习惯 HBu…

第四十三节:人脸检测与识别-人脸识别基础 (Eigenfaces, Fisherfaces, LBPH)

引言 人脸识别技术是计算机视觉领域最具应用价值的方向之一,广泛应用于安防监控、身份认证、人机交互等领域。本文将通过OpenCV框架,深入解析人脸检测与识别的核心算法(Eigenfaces/Fisherfaces/LBPH),并提供完整的代码实现。 第一部分:人脸检测基础 1.1 人脸检测原理 …

在Windows 11中,Edge浏览器默认会打开多个标签页,导致任务切换时标签页过多

‌在Windows 11中,Edge浏览器默认会打开多个标签页,导致任务切换时标签页过多。要像Google Chrome一样,只显示当前标签页,可以按照以下步骤操作‌: 打开Windows系统“设置” 选择“系统”:在设置中找到“…

【modelscope/huggingface 通过colab将huggingface 模型/数据集/空间转移到 modelscope并下载】

1. 准备 注册一个modelscope账号(国内的)拿到对应的访问令牌SDK/API令牌注册一个google账号, 登录colab 2. 开始干! 打开一个ipynb 安装依赖包 !pip install -qqq modelscope huggingface-hub -U选择安装git lfs !curl -s https://packag…

HarmonyOS NEXT~鸿蒙系统与Uniapp跨平台开发实践指南

HarmonyOS NEXT~鸿蒙系统与Uniapp跨平台开发实践指南 引言:鸿蒙与Uniapp的融合价值 华为鸿蒙系统(HarmonyOS)作为新一代智能终端操作系统,其分布式能力与跨设备协同特性为开发者带来了全新机遇。而Uniapp作为流行的跨平台应用开发框架&…

【IPMV】图像处理与机器视觉:Lec10 Edges and Lines

【IPMV】图像处理与机器视觉:Lec10 Edges and Lines 本系列为2025年同济大学自动化专业**图像处理与机器视觉**课程笔记 Lecturer: Rui Fan、Yanchao Dong Lec0 Course Description Lec3 Perspective Transformation Lec7 Image Filtering Lec8 Image Pyramid …

AI筑基,新质跃升|英码科技亮相华为广东新质生产力创新峰会,发布大模型一体机新品,助力产业智能化转型

5月15日,以“AI筑基,新质跃升”为主题的华为中国行2025广东新质生产力创新峰会在惠州圆满召开。本次峰会聚焦人工智能、算力基础设施等新ICT技术如何驱动“新质生产力”,共探广东高质量发展新路径。英码科技受邀出席本次峰会,并携…

篇章三 需求分析(二)

目录 1.核心API 2.交换机类型 3.持久化 4.网络通信 5.小结 1.核心API 消息队列服务器(Broker Server),要提供的核心API 1.创建队列(queueDeclare) 此处不使用 Create 这样的术语,而是使用 Declare&…

打造高效数据处理利器:用Python实现Excel文件智能合并工具

有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析。今天,我想分享一个使用Python开发的小工具,它可以帮助我们轻松实现Excel文件的智能合并。C:\pythoncode\new\xlsx_merger.…

StepX-Edit:一个通用图像编辑框架——论文阅读笔记

一. 前言 代码:https://github.com/stepfun-ai/Step1X-Edit 论文:https://arxiv.org/abs/2504.17761 近年来,图像编辑技术发展迅速,GPT- 4o、Gemini2 Flash等前沿多模态模型的推出,展现了图像编辑能力的巨大潜力。 这…

第9.1讲、Tiny Encoder Transformer:极简文本分类与注意力可视化实战

项目简介 本项目实现了一个极简版的 Transformer Encoder 文本分类器,并通过 Streamlit 提供了交互式可视化界面。用户可以输入任意文本,实时查看模型的分类结果及注意力权重热力图,直观理解 Transformer 的内部机制。项目采用 HuggingFace …

【Java】泛型在 Java 中是怎样实现的?

先说结论 , Java 的泛型是伪泛型 , 在运行期间不存在泛型的概念 , 泛型在 Java 中是 编译检查 运行强转 实现的 泛型是指 允许在定义类 , 接口和方法时使用的类型参数 , 使得代码可以在不指定具体类型的情况下操作不同的数据类型 , 从而实现类型安全的代码复用 的语言机制 . …

linux如何查找软连接的实际地址

在Linux系统中,查找软连接(符号链接,即symbolic link)的实际地址可以通过多种方法实现。软连接是一个特殊的文件类型,它包含了一个指向另一个文件或目录的引用。要找到软连接所指向的实际文件或目录,可以使…

Token类型与用途详解:数字身份的安全载体图谱

在现代数字身份体系中,Token如同"数字DNA",以不同形态流转于各类应用场景。根据Okta的最新研究报告,平均每个企业应用使用2.7种不同类型的Token实现身份验证和授权。本文将系统梳理主流Token类型及其应用场景,通过行业典…

火山 RTC 引擎9 ----集成 appkey

一、集成 appkey 1、网易RTC 初始化过程 1)、添加头文件 实现互动直播 - 互动直播 2.0网易云信互动直播产品的基本功能包括音视频通话和连麦直播,当您成功初始化 SDK 之后,您可以简单体验本产品的基本业务流程,例如主播加入房间…

详细介绍Qwen3技术报告中提到的模型架构技术

详细介绍Qwen3技术报告中提到的一些主流模型架构技术,并为核心流程配上相关的LaTeX公式。 这些技术都是当前大型语言模型(LLM)领域为了提升模型性能、训练效率、推理速度或稳定性而采用的关键组件。 1. Grouped Query Attention (GQA) - 分组…

光电效应理论与实验 | 从爱因斯坦光量子假说到普朗克常量测定

注:本文为“光电效应”相关文章合辑。 英文引文,机翻未校。 中文引文,略作重排,未整理去重。 图片清晰度受引文原图所限。 如有内容异常,请看原文。 Photoelectric Effect 光电效应 Discussion dilemma Under the…

Visual Studio 2019/2022:当前不会命中断点,还没有为该文档加载任何符号。

1、打开调试的模块窗口,该窗口一定要在调试状态下才会显示。 vs2019打开调试的模块窗口 2、Visual Studio 2019提示未使用调试信息生成二进制文件 未使用调试信息生成二进制文件 3、然后到debug目录下看下确实未生成CoreCms.Net.Web.WebApi.pdb文件。 那下面的…