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

MySQL数据库——表的约束

1.空属性(null/not null)

        两个值:null(默认的)和not null(不为空)

        数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算。

        下面我们通过显示null和null+1来验证null无法参与运算。

                

        案例:

        创建一个班级表,包含班级名称和班级所在的教室。

        站在正常的业务逻辑中:

        如果班级没有名字,你不知道你在哪个班级

        如果教室名字可以为空,就不知道在哪上课

        所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。这 就是“约束

        我们将字段设置为not null以后发现插入数据时不能省略,如果省略直接插入失败。

2.默认值(default)

           默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。

           默认值的生效:数据在插入的时候不给该字段赋值,就使用默认值

3.列描述(comment)

        列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA 来进行了解。

        可以看到desc查看不到注释信息,而show可以看到

4.zerofill

        数字类型后的数字如int (10)里的10在没有zerofill字段时是毫无作用的,当我们添加zerofill字段可以将10理解为输出的数字有几位

        

        开始时的表tt3并没有设置zerofill字段插入数据后显示的结果如上

        添加zerofill字段后显示的结果如上这次可以看到a的值由原来的1变成00001,这就是zerofill属性的作用,如果宽度小于设定的宽度(这里 设置的是5),自动填充0

        注意:数据库存储的内容并不会改变,00001只是设置zerofill属性后的的一种格式化输出而已

5.主键(primary key)

        主键:primary key用来表示唯一的约束字段里面的数据,不能重复,不能为空,一张表中最多只有一个主键;主键所在的列通常是整数类型

        创建一张表将id字段指定为主键

        主键约束:主键对应的字段不能重复,一旦重复,操作失败

        当表创建好以后但是并没有主键,可以追加主键

alter table 表名 add primary key(字段列表)

        删除主键

alter table 表名 drop primary key;

        复合主键:在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键,可以使用复合主键

        复合主键的复合字段全部重复才算重复,才会操作失败。

6.自增长(auto_increment)

        auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值 +1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。

        自增长的特点:

                1.任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)

                2.自增长字段必须是整数

                3.一张表最多只能有一个自增长

7.唯一键(unique)

        一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以 解决表中有多个字段需要唯一性约束的问题。

        唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。

        关于唯一键和主键的区别:我们可以简单理解成,主键更多的是标识唯一性的。而唯一键更多的是保证在业务上,不要和别的信息 出现重复。

8.外键

        外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique 约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。

语法:

foreign key (字段名) references 主表(列)

        对上面的示意图进行设计

        先建立主键表

        在创建从表

        正常插入数据

        插入一个班级为30的学生,因为没有这个班级插入失败

相关文章:

MySQL数据库——表的约束

1.空属性(null/not null) 两个值:null(默认的)和not null(不为空) 数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法…...

vue2.x 中子组件向父组件传递数据主要通过 $emit 方法触发自定义事件方式实现

在 Vue 2.x 中,子组件向父组件传递数据主要通过 自定义事件 的方式实现。具体步骤如下: 1. 子组件通过 $emit 触发事件 子组件可以使用 $emit 方法触发一个自定义事件,并将数据作为参数传递给父组件。 语法: this.$emit(事件名…...

洛谷 P1102 A-B 数对(详解)c++

题目链接:P1102 A-B 数对 - 洛谷 1.题目分析 2.算法原理 解法一:暴力 - 两层for循环 因为这道题需要你在数组中找出来两个数,让这两个数的差等于定值C就可以了,一层for循环枚举A第二层for循环枚举B,求一下看是否等于…...

python用 PythonNet 从 Python 调用 WPF 类库 UI 用XAML

pythonnet 是pythonhe.net通用的神器不多介绍了. 这次这基本上跟python没有关系了. 和winform一样先导包 import clr clr.AddReference("PresentationFramework.Classic, Version3.0.0.0, Cultureneutral, PublicKeyToken31bf3856ad364e35") clr.AddReference(&…...

C++——list模拟实现

目录 前言 一、list的结构 二、默认成员函数 构造函数 析构函数 clear 拷贝构造 赋值重载 swap 三、容量相关 empty size 四、数据访问 front/back 五、普通迭代器 begin/end 六、const迭代器 begin/end 七、插入数据 insert push_back push_front 八、…...

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-utils.py

utils.py ultralytics\data\utils.py 目录 utils.py 1.所需的库和模块 2.def img2label_paths(img_paths): 3.def get_hash(paths): 4.def exif_size(img: Image.Image): 5.def verify_image(args): 6.def verify_image_label(args): 7.def visualize_image_ann…...

Linux 内核 RDMA CM 模块分析:drivers/infiniband/core/cma.c

一、引言 随着高性能计算和大数据处理需求的不断增长,远程直接内存访问(RDMA)技术在数据中心和高性能计算领域得到了广泛应用。RDMA 允许数据直接在不同系统的内存之间传输,而无需经过 CPU 和操作系统的干预,从而显著提高了数据传输效率和系统性能。Linux 内核中的 RDMA …...

Flask flash() 消息示例

目录 安装 Flask 入门:Flask flash() 基本示例 进阶:使用 Flask-WTF Flash 登录结果消息 详解:get_flashed_messages() 详解:flash() 消息的完整生命周期 Flask 提供 flash() 用于向 用户传递临时消息,通常用于: • 表单提交成功或失败 • 用户登录、注册、退出提…...

ImGui 学习笔记(三)—— 隐藏主窗口窗口关闭检测

ImGui 的主窗口是平台窗口,默认是可见的,这会影响视觉效果。那么怎么隐藏 ImGui 的主窗口呢? 这很简单,但是需要针对后端做一些修改。 本文仅介绍在 glfwopengl3 和 win32dx11 两种实现上如何修改。 在 win32dx11 实现上&#…...

ubuntu磁盘清理垃圾文件

大头文件排查 #先查看是否是内存满了,USER 很高即是满了 du -f#抓大头思想,优先删除大文件#查看文件目录 内存占用量并排序,不断文件递归下去 du --max-depth1 -h /home/ -h | sort du --max-depth1 -h /home/big/ -h | sort 缓存文件清理…...

vue-fastapi-admin 部署心得

vue-fastapi-admin 部署心得 这两天需要搭建一个后台管理系统,找来找去 vue-fastapi-admin 这个开源后台管理框架刚好和我的技术栈所契合。于是就浅浅的研究了一下。 主要是记录如何基于原项目提供的Dockerfile进行调整,那项目文件放在容器外部&#xf…...

大语言模型微调的公开JSON数据

大语言模型微调的公开JSON数据 以下是一些可用于大语言模型微调的公开JSON数据及地址: EmoLLM数据集 介绍:EmoLLM是一系列能够支持理解用户、帮助用户心理健康辅导链路的心理健康大模型,其开源了数据集、微调方法、训练方法及脚本等。数据集按用处分为general和role-play两种…...

C++STL容器之set

1.介绍 set容器是C标准模板库(STL)中的一个关联容器,用于存储唯一的元素。set中的元素是自动排序的,不允许重复。set通常基于红黑树(一种自平衡二叉查找树)实现,因此插入、删除和查找操作的时间…...

《微软量子芯片:开启量子计算新纪元》:此文为AI自动生成

量子计算的神秘面纱 在科技飞速发展的今天,量子计算作为前沿领域,正逐渐走进大众的视野。它宛如一把神秘的钥匙,有望开启未来科技变革的大门,而微软量子芯片则是这把钥匙上一颗璀璨的明珠。 量子计算,简单来说,是一种遵循量子力学规律调控量子信息单元进行计算的新型计算…...

使用AI创建流程图和图表的 3 种简单方法

你可能已经尝试过使用 LLMs 生成图像,但你有没有想过用它们来创建 流程图和图表?这些可视化工具对于展示流程、工作流和系统架构至关重要。 通常,在在线工具上手动绘制图表可能会耗费大量时间。但你知道吗?你可以使用 LLMs 通过简…...

从波士顿动力到Figure AI:探寻人工智能驱动的机器人智能化

一、引言 1.1 研究背景与意义 在科技飞速发展的当下,机器人智能化已成为全球科技竞争的关键领域,深刻影响着人类社会的生产与生活方式。从工业制造到日常生活服务,从医疗保健到探索未知领域,机器人正逐步渗透进各个行业,展现出巨大的发展潜力与应用价值。其智能化水平的…...

算法——KMP算法(Knuth-Morris-Pratt算法)

KMP算法(Knuth-Morris-Pratt算法)是一种高效的字符串匹配算法,用于在主文本字符串中快速查找模式字符串的出现位置。其核心思想是通过预处理模式字符串,利用部分匹配信息(即“失败函数”或“next数组”)避免…...

一周学会Flask3 Python Web开发-flask3模块化blueprint配置

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们在项目开发的时候,多多少少会划分几个或者几十个业务模块,如果把这些模块的视图方法都写在app.py…...

Pytorch实现之统计全局信息的轻量级EGAN

简介 简介:模型在EGAN的基础上改进了一个降维的自注意力机制,并且设计了一个新颖的选择算子,使用轮盘赌来选择个体,如果他们的适配度满足fchild<VALUE,则被选中的个体将被丢弃。需要在进化的初始阶段尽快找到最佳个体,并在后续阶段保持种群的多样性。 论文题目:LGE…...

Java开发实习面试笔试题(含答案)

在广州一家中大公司面试&#xff08;BOSS标注是1000-9999人&#xff0c;薪资2-3k&#xff09;&#xff0c;招聘上写着Java开发&#xff0c;基本没有标注前端要求&#xff0c;但是到场知道是前后端分离人不分离。开始先让你做笔试&#xff08;12道问答4道SQL题&#xff09;&…...

保姆级教程:手把手教你给Jenkins装上Gitee插件并配置全局连接(含Docker重启避坑)

Jenkins与Gitee深度集成实战&#xff1a;从插件安装到自动化构建全流程解析 在当今快速迭代的软件开发环境中&#xff0c;持续集成与持续交付(CI/CD)已成为团队协作的标配。作为开源CI/CD工具的标杆&#xff0c;Jenkins凭借其强大的插件生态和灵活性&#xff0c;依然是众多开发…...

RE引擎游戏Mod开发技术深度解析:REFramework架构设计与实战指南

RE引擎游戏Mod开发技术深度解析&#xff1a;REFramework架构设计与实战指南 【免费下载链接】REFramework Mod loader, scripting platform, and VR support for all RE Engine games 项目地址: https://gitcode.com/GitHub_Trending/re/REFramework 在当今游戏Mod开发领…...

小白从零开始做多模态新生儿疼痛评估系统|第十二篇:PainC3M模型完落地!实验结果复盘+准确率提升规划

哈喽大家好&#xff5e;前面十一篇内容&#xff0c;我们已经把前端页面、后端API、数据库、前后端联调全部打通&#xff0c;整套系统已经可以正常运行、展示数据、完成基础疼痛评估。这一篇正式进入AI核心模型篇&#xff0c;基于论文《Evaluating neonatal pain via fusing vis…...

本科论文维普AI率80%,2026年4月率零2小时解决

本科论文维普AI率80%&#xff0c;2026年4月率零2小时解决 2026年4月中旬&#xff0c;本科毕业论文查重季进入最后冲刺阶段。一位就读于华东某二本院校的大四学生把论文交到维普检测系统后&#xff0c;屏幕上跳出一个让他愣在原地的数字&#xff1a;维普AI率80%。距离学院规定的…...

用友U8 ERP系统管理员必备:5个数据库清理锁定的SQL脚本(附详细操作步骤)

用友U8 ERP系统数据库锁定的深度解析与实战解决方案 作为企业核心业务支撑平台&#xff0c;用友U8 ERP系统在长期运行过程中难免会遇到各种数据锁定问题。这些锁定不仅影响日常业务流程&#xff0c;还可能造成关键操作中断&#xff0c;给企业运营带来不便。本文将深入剖析U8系统…...

不止于安装:在VS2017中配置Eigen库后,如何用它快速上手你的第一个机器人SLAM项目?

从矩阵操作到SLAM实战&#xff1a;用Eigen库构建2D机器人位姿系统 当你第一次在Visual Studio 2017中成功编译Eigen库后&#xff0c;看着测试程序输出的矩阵加法结果&#xff0c;可能会疑惑&#xff1a;这个看似简单的数学库如何与机器人、自动驾驶等前沿领域产生关联&#xff…...

real-anime-z部署教程:端口7860映射与Nginx反向代理配置,支持HTTPS安全访问

real-anime-z部署教程&#xff1a;端口7860映射与Nginx反向代理配置&#xff0c;支持HTTPS安全访问 1. 镜像介绍 real-anime-z 是一个专为二次元插画创作设计的文生图镜像&#xff0c;能够快速生成高质量的动漫风格图像。无论是角色设计、头像创作还是宣传插画&#xff0c;这…...

为什么 AI 生图又回到了聊天入口:ChatGPT Images 2 之后,普通人的工作流怎么变

这轮 AI 生图的变化&#xff0c;如果只盯着“效果是不是更好了”&#xff0c;其实很容易把重点看窄。对多数普通用户来说&#xff0c;真正影响使用习惯的地方&#xff0c;不是单张图的观感&#xff0c;而是聊天入口重新开始接住前后的连续动作。ChatGPT Images 2.0 这类更新放出…...

pandas删除指定列中有空值的行

pandas删除指定列中有空值的行mydf mydf.dropna(subset[列名],inplaceTrue)...

进程--程序地址空间(引文)上篇

目录 1.程序地址空间回顾 具体作用和解释 典型输出规律&#xff08;x86-64 Linux&#xff09; 程序地址空间&#xff1a;是内存吗&#xff1f; 1.程序地址空间回顾 图1 可是我们对他并不理解&#xff01;可以先对其进行各区域分布验证&#xff1a; [user1iZ5waahoxw3q2b…...