【MySQL】表的约束(上)

在这里插入图片描述

文章目录

  • 表的约束
    • 什么是表的约束
    • 空属性
    • 默认值
    • 列描述(comment)
    • 零填充(zerofill)
    • 主键
  • 总结

表的约束

什么是表的约束

表的约束(Constraints)是数据库表中的规则,用于限制存储的数据,保证数据的完整性、一致性和准确性。
下面我们讲讲具体的表的约束

空属性

  • 两个值:null(默认的)和not null(不为空)
  • 数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算。

我们先默认创建一张表:
在这里插入图片描述
可以看见,当我们不指定约束条件的时候,创建表时默认会给Null约束条件添加上Yes,表示这里可以插入null。我们来试试。
插入数据:
在这里插入图片描述
我们重新创建一张设置为not null。
在这里插入图片描述
当表的这个属性被设置为No时,就表示不能插入Null了。

默认值

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

拿我们刚刚创建的表为例:
在这里插入图片描述
这个约束就是默认值,如果设置了默认值,当我们插入的时候忽略这一项时,就会拿默认值当中的数据进行填充。
我们来设置一下默认值,一数据没有默认值,一个数据有默认值。
在这里插入图片描述
设置默认值只需要在建表的时候在后面加上default即可,我们来插入数据:
在这里插入图片描述
可以看见这里虽然没有设置默认值,但是默认值被默认设置为了Null,因为我们没有设置not null,所以是会默认填入null的。
在这里插入图片描述
当将null约束设置为not null的时候就就不能忽略了。

列描述(comment)

列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA
来进行了解。
列描述就类似于在我们写代码时的注释。
在这里插入图片描述

这就是列描述,用来描述这一列是用来干嘛的。

零填充(zerofill)

在 MySQL 中,ZEROFILL 是一种数值列的格式化属性,用于自动在数值前补零,使其达到指定的宽度。

在这里插入图片描述

我们创建一张表,不加任何约束是这样的,当我们加上zerofill之后:
在这里插入图片描述
可以看见,修改完zerofill约束条件之后,int后面多了一个10,后面多了一个zerofill,为什么10后面讲,我们先讲这个zerofill属性添加之后有什么影响:
在这里插入图片描述
可以看见,添加了zerofill属性的列前面多出了很多个0,这是为什么呢,我们加上前面的0,一共有10为数,所以这个10,就是位数,当我们插入一个数的时候,如果这个数的位数小于int后面的数,那么我们会在前面自动补上0,如果这数的位数是大于int后面括号中的数时,是多少就是多少。

主键

**主键(Primary Key)**是关系数据库中用于唯一标识表中每一行记录的一个或多个字段的组合。
可能很多人看到这句话之后也不是很理解什么是主键,那么我们创建一张表,来解释一下什么是主键:
在这里插入图片描述
当我们创建表的时候,只需要在后面加上primary key,就表示这一列是主键,我们来插入一点数据,来具体看看主键是什么:
在这里插入图片描述
我们设置的id是主键,当我们插入第一组值的时候,id是1,当我们插入第二组值的时候id也是1,MySQL就不让我插入了,但是当我们插入的值是2的时候,MySQL又让我们插入了。
所以,被设为主键的列当中的数据时唯一的,不能有重复。


复合主键
什么是复合主键呢,我们上面是一列是主键,但是主键不一定只有一列,可以有多列啊,这被称为复合主键,我们来设置一下复合主键:
在这里插入图片描述
这就是设置复合主键,我们来看看复合主键有什么特征:
在这里插入图片描述
a和b都被设置为了主键。

我们来插入几组值试试:
在这里插入图片描述
插入三组值已经足够说明问题了。


结论:当我们插入的被设为主键的值和历史上插入过的数据都相同时,是不被允许插入的,但是当我们插入的数据只有一个是和历史上的数据是相同的,是可以被允许的。

总结

在本文中,我们深入探讨了 MySQL 中几个常用的表约束,包括 NULL 约束、DEFAULT 约束、COMMENT 约束、主键约束以及 ZEROFILL 约束。这些约束在数据库设计中扮演着至关重要的角色,通过它们可以确保数据的有效性和完整性,帮助开发者避免无效数据的插入,并提升数据表的可维护性。掌握这些约束的使用,能够让我们在实际开发中构建出更加健壮和清晰的数据库结构,从而提升系统的稳定性和可扩展性。希望通过本文的介绍,大家对 MySQL 的表约束有了更深入的理解,并能够在实际项目中灵活应用。

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

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

相关文章

【Unity网络同步框架 - Nakama研究(三)】

文章目录 【Unity网络同步框架 - Nakama研究(三)】准备工作前言Unity部分连接服务器创建并进入房间创建人物人物移动和同步 【Unity网络同步框架 - Nakama研究(三)】 以下部分需要有一定的Unity基础,在官方的案例Pirate Panic基础上进行修改而成。如果没有下载并熟悉…

前端存储-indexdb封装:dexie.js的使用

前言 indexedDB是一个用于在浏览器中存储较大数据结构的Web API,并且提供了索引功能以实现高性能查找。dexie.js是对indexdb的封装,前端用起来很方便。在此介绍一下项目中用到的操作语句,也方便记录。我的项目是vue3项目。 开始 1、安装 …

【AD】6-1 PCB常用规则

间距规则: 可自行修改线宽与间距(默认10mil) 线宽规则:电源线宽加粗 布线过程中更改线宽:走线状态下,shiftw更改线宽,线宽要在规则范围之内过孔规则: 阻焊规则:

MyBatis 的核心配置文件是干什么的? 它的结构是怎样的? 哪些是必须配置的,哪些是可选的?

MyBatis 的核心配置文件&#xff08;通常命名为 mybatis-config.xml&#xff09;是 MyBatis 应用程序的入口点&#xff0c;它定义了 MyBatis 的全局配置信息 。 核心配置文件的作用&#xff1a; 配置 MyBatis 的运行时行为: 通过 <settings> 标签设置全局参数&#xff…

搜广推校招面经四十九

tiktok广告算法 一、倒排索引原理及Map中Key的处理 具体使用方法见【搜广推校招面经三十六】 倒排索引&#xff08;Inverted Index&#xff09;是信息检索系统中常用的一种数据结构&#xff0c;用于快速查找包含某个关键词的文档。以下是倒排索引的原理及Map中Key的处理方式的…

【零基础入门unity游戏开发——unity3D篇】3D物理系统之 —— 3D刚体组件Rigidbody

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…

C# net deepseek RAG AI开发 全流程 介绍

deepseek本地部署教程及net开发对接 步骤详解&#xff1a;安装教程及net开发对接全流程介绍 DeepSeekRAG 中的 RAG&#xff0c;全称是 Retrieval-Augmented Generation&#xff08;检索增强生成&#xff09;&#xff0c;是一种结合外部知识库检索与大模型生成能力的技术架构。其…

用旧的手机搭建 MQTT Broker

MQTT Broker搭建 在Android上搭建MQTT所需工具: termux 通过网盘分享的文件:termux-app_v0.118.1+github-debug_armeabi-v7a.apk 链接: https://pan.baidu.com/s/1Iii2szXAc02cKVGdP1EuzQ?pwd=fqsc 提取码: fqsc 在 Termux 中使用 MQTT(Message Queuing Telemetry Trans…

b站视频下载工具软件怎么下载

自行配置FFMPEG环境 请优先选择批量下载&#xff0c;会自处理视频和音频文件。 如果要下载更高质量请登陆。 没有配置FFMPEG下载后会有报错提示&#xff0c;视频音频文件无法合并生成mp4文件 更新批量下载标题&#xff0c;只取视频原标题&#xff0c;B站反爬机制登陆后下载多了…

# linux有哪些桌面环境?有哪些显示服务器协议及显示服务器?有哪些用于开发图形用户界面的工具包?

linux有哪些桌面环境&#xff1f;有哪些显示服务器协议及显示服务器&#xff1f;有哪些用于开发图形用户界面的工具包&#xff1f; 文章目录 linux有哪些桌面环境&#xff1f;有哪些显示服务器协议及显示服务器&#xff1f;有哪些用于开发图形用户界面的工具包&#xff1f;1 显…

Java 大视界 -- Java 大数据分布式计算中的资源调度与优化策略(131)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

躲藏博弈中的策略优化:整合历史数据、概率论与博弈论

躲藏博弈中的策略优化&#xff1a;整合历史数据、概率论与博弈论 一、引言 躲藏博弈(Hiding Games)作为一类特殊的博弈模型&#xff0c;广泛存在于军事对抗、网络安全、商业竞争甚至日常生活中。其核心在于一方(躲藏者)试图避免被另一方(寻找者)发现&#xff0c;双方各自选择…

时序数据库 TDengine 到 MySQL 数据迁移同步

简述 TDengine 是一款开源、高性能、云原生的时序数据库&#xff0c;专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计。在工业自动化的时代&#xff0c;时序数据库在电力、轨道交通、智能制造等领域有着广泛的应用。 MySQL 是全球广泛使用的开源关系型数据库&a…

基于YOLO11深度学习的舌苔舌象检测识别与诊断系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

【愚公系列】《高效使用DeepSeek》003-DeepSeek文档处理和其他顶级 AI模型的区别

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

正新鸡排:在变革浪潮中领航,打造连锁餐饮新生态

在当下风云变幻的餐饮市场中&#xff0c;连锁品牌犹如逆水行舟&#xff0c;不进则退。作为国内坐拥万店的知名连锁餐饮品牌&#xff0c;正新鸡排2023年卖出了7.2亿片鸡排&#xff0c;集团营收同比增长28%。在《2024年中国鸡排连锁品牌10强榜单》中&#xff0c;正新鸡排以高达95…

MyBatis 的一级、二级缓存

文章目录 1️⃣ 一级缓存&#xff08;Local Cache&#xff09;&#x1f4cc; 定义&#x1f680; 示例代码 2️⃣ 二级缓存&#xff08;Global Cache&#xff09;&#x1f4cc; 定义&#x1f680; 使用方式 3️⃣ 一级缓存 vs. 二级缓存 &#x1f4ca;4️⃣ 数据共享问题&#x…

软件性能测试与功能测试联系和区别

随着软件开发技术的迅猛发展&#xff0c;软件性能测试和功能测试成为了确保软件质量的两个重要环节。那么只有一字之差的性能测试和功能测试分别是什么?又有哪些联系和区别呢? 一、软件性能测试是什么?   软件性能测试是为了评估软件系统在特定条件下的表现&#xff0c;包…

Vue 框架使用难点与易错点剖析:避开陷阱,提升开发效率

Vue.js 作为当下最流行的前端框架之一&#xff0c;以其轻量、易用和灵活的特性深受开发者喜爱。然而&#xff0c;即使是经验丰富的开发者&#xff0c;在使用 Vue 的过程中也难免会遇到一些难点和易错点。本文将深入分析 Vue 开发中常见的“坑”&#xff0c;并提供解决方案和代码…

基于大模型的上睑下垂手术全流程预测与方案优化研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究意义 1.3 研究方法与创新点 二、上睑下垂相关理论基础 2.1 上睑下垂的定义与分类 2.2 发病机制与影响 2.3 传统治疗方法概述 三、大模型技术原理与应用 3.1 大模型概述 3.2 在医疗领域的应用现状 3.3 用于上睑下垂预测的…