【MySQL数据库】表的约束

目录

1,空属性

2,默认值

3,列描述

4,zerofill

5,主键primary key

6,自增长auto_increment

7,唯一键unique

8,外键foreign key


        在MySQL中,表的约束是指用于插入的数据必须遵循特定的规则,使其插入正确的数据,以保持数据库的数据是符合预期的。约束可以应用于列或整个表。

            表的约束很多,这里主要介绍如下几个:null/not null,default,comment,zerofill,primary key,auto_increment,unique,foreign key。

    1,空属性

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

            数据库默认字段基本都是字段为空,因为约束字段默认为null。若是 not null 属性,那么插入时将不允许为空。

    2,默认值

            默认值:default [数据]

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

    3,列描述

            列描述:comment [列的描述]。没有实际含义,专门用来描述字段,用来给程序员进行了解。

            可发现,comment 注释信息通过desc查看不到,但通过show可以看到。

    4,zerofill

            zerofill 的主要用于数值类型的字段(如 int、bigint 等),用于将其格式化输出数据。具体来说,它的作用是用前导零填充数值,使得该列的显示宽度达到指定的长度。

            平常所看到如 int(10) 的数值类型就与该字段相关,int占比4字节,这里的10表示填充的宽度,若没有 zerofill 这个属性,括号内的数字是毫无意义的。

    create table t4(id int(5) zerofill);
    insert into t4 (id) values (3);

    insert into t4 (id) values (123456);

    此时,id列的数据为:00003、123456

    5,主键primary key

            主键 primary key 用来唯一的约束该字段里面的数据,表示该数据不能重复,不能为空。主键所在的列通常是整数类型。

            上面 t4表的描述里 key 对应的 PRI 表示主键。 创建表时,一张表中最多只能有一个主键,但这个主键可以由多个列组成,即复合主键。

            复合主键形式为:primary key(主键字段列表),如果有多个字段作为主键,可以使用复合主键。若创建表时没有添加主键,这里可运用相关指令追加主键,或者删除主键。

    删除表下的所有主键:alter table 表名 drop primary key;

    对没有主键的表追加主键:alter table 表名 add primary key(要追加列的名称);

    6,自增长auto_increment

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

            注意:首先,auto_increment修饰的列必须是表的主键或唯一键的一部分,如果没有将列定义为主键或唯一键MySQL不允许使用 auto_increment 属性。其次,auto_increment 和 default 不能同时使用,因为 auto_increment 列的值是由数据库自动生成的,通常从 1 开始递增,它的行为已经隐含了默认值的生成机制,而 default 也是MySQL默认值的自动生成,因此,这两个字段不能同时使用。上面这两点是自增长的约束。

    7,唯一键unique

            唯一键作用与主键差不多,都是保证一列中的所有值都是唯一的,不同的是主键不可以为空(null),但唯一键可以为空,且一个表中可以有多个唯一键。

            主键和唯一键的运用场景主要是在业务上。主键更多的是标识唯一性的,比如身份证号,而而唯一键更多的是保证在业务数据上,表示不要和别的信息出现重复。

    8,外键foreign key

            外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique 约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。在MySQL中,外键是一种用于建立和加强两个表数据之间连接的列。通过确保一个表中的数据与另一个表中的数据匹配。

    外键语法:foreign key (字段列名) references 主表(列名);

            由于外键约束,如果主表或从表存在依赖项的话,它会拒绝删除或更新操作。

            上面,我们设计了主表——班级表myclass 和从表——学生表stu,让学生表的 class_id 和班级表 id 形成关联关系,即在外表中建立外键约束。当向从表 stu 的 class_id 插入不存在于主表 myclass 的 id 列中的数据时,这里将插入失败。当然,插入 null 会插入成功,表示当前还未进行分配班级。

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

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

    相关文章

    基于javaweb的SpringBoot校园失物招领系统设计与实现(源码+文档+部署讲解)

    技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

    多模态大语言模型arxiv论文略读(二十六)

    Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ➡️ 论文标题:Holistic Autonomous Driving Understanding by Bird’s-Eye-View Injected Multi-Modal Large Models ➡️ 论文作者:Xinpeng Ding,…

    “星睿O6” AI PC开发套件评测 - 部署PVE搭建All in One NAS服务器

    Radxa O6平台上部署PVE搭建All in One NAS服务器 Radxa O6是一款性能卓越的单板计算机,其强劲的硬件配置和多样化的接口设计,使其成为家庭和小型企业理想的All in One服务器解决方案。值得一提的是,O6原生配备了两个5G网口,便于直…

    C++ linux打包运行方案(cmake)

    文章目录 背景动态库打包方案动态库转静态库动态库打到软件包中 运行 背景 使用C编写的一个小项目,需要打包成ubuntu下的可执行文件,方便分发给其他ubuntu执行,因为docker镜像方案过于臃肿,所以需要把项目的动态库都打在软件包中…

    Linux内核编译(Ubuntu)

    实验内容:在系统中下载统一发行版本的版本号较高的内核,编译之后运行自己编译的内核,并使用uname-r命令查看是否运行成功。 实验步骤: 1.查看实验环境和内核版本 图1 实验环境 VMware中虚拟机Ubuntu(24.04&#xff…

    EdgeGPT - 新版Bing聊天功能逆向工程

    本文翻译整理自:https://github.com/acheong08/EdgeGPT 文章目录 一、关于 EdgeGPT相关链接资源关键功能特性 二、安装系统要求安装命令 三、认证配置获取Cookie步骤代码中使用Cookie 四、使用方法1、命令行方式2、Python API方式使用Chatbot类使用Query辅助类 3、…

    三网通电玩城平台系统结构与源码工程详解(四):子游戏集成与服务器调度机制全解

    本篇将深入讲解三网通电玩城平台中子游戏接入、前后端资源组织方式、服务器调度逻辑、并发接入方案等核心内容,重点覆盖“李逵劈鱼”、“水果玛丽”、“疯狂玛丽”等热门组件,辅以完整代码框架与部署逻辑。 一、子游戏资源目录结构与加载机制 平台采用标…

    1.1 AI大模型与Agent的兴起及其对企业数字化转型的推动作用

    随着人工智能技术的飞速发展,AI大模型和智能代理(Agent)的兴起正成为推动企业数字化转型的重要力量。从2017年GPT-1的首次亮相到2025年GPT-4和Qwen 2.5等多模态模型的成熟,AI大模型经历了显著的技术演进;与此同时&…

    位运算练习:起床困难综合征(贪心,位运算)(算法竞赛进阶指南学习笔记)

    目录 前情提要起床困难综合征(贪心,位运算) 前情提要 一些基础运算操作用法看看上一篇; 起床困难综合征(贪心,位运算) 题目原文 [P2114 NOI2014] 起床困难综合症 - 洛谷 思路分析 题目很长…

    PowerBi中REMOVEFILTERS怎么使用?

    在 Power BI 的 DAX 中,REMOVEFILTERS() 是一个非常重要的函数,常用于取消某个字段或表的筛选上下文(Filter Context),从而让你的计算不受切片器(Slicer)、筛选器或视觉对象的限制。 ✅ 一、REM…

    Vue3 实战:打造多功能旅游攻略选项卡页面

    在旅游类应用开发中,为用户提供全面、直观的信息展示界面至关重要。本文将分享如何基于 Vue3 Axios 技术栈,实现一个包含攻略、游记、问答三大板块的旅游攻略选项卡页面,从样式设计到交互逻辑,带你深入了解整个开发过程。 项目背…

    JavaScript性能优化实战(1):性能优化基础与性能分析工具

    性能优化的重要性与业务价值 在当今竞争激烈的互联网环境中,网站和应用的性能已成为用户体验和业务成功的关键因素。研究表明,页面加载时间每增加1秒,转化率可能下降7%,而53%的用户会在页面加载时间超过3秒后放弃访问。这些数据直接揭示了性能优化对业务的巨大影响: 用户…

    Unity 脚本使用(二)——UnityEngine.AI——NavMesh

    描述 Singleton class 用于访问被烘培好的 NavMesh. 使用NavMesh类可以执行空间查询(spatial queries),例如路径查找和可步行性测试。此类还允许您设置特定区域类型的寻路成本,并调整寻路和避免的全局行为。 静态属性&#xff0…

    Java 静态内部类面试题与高质量答案合集

    本文整理了关于 Java 静态内部类(Static Nested Class)在面试中的高频问题及标准答案,帮助你理解其底层原理、内存表现以及实际应用。 1. 什么是静态内部类?和普通内部类有什么区别? 答: 静态内部类是定义…

    为什么买不到一定阻抗特性曲线的磁环

    为什么买不到一定阻抗特性曲线的磁环: 磁环绕不同的圈数,阻抗特性曲线不同,磁环没有类似于磁珠的特定频率和阻抗特性曲线的磁环。 磁环与磁珠的核心区别: 磁珠是一种固定频率阻抗器件,出厂时已通过材料和工艺设计确定…

    【MATLAB海洋专题】历史汇总

    【MATLAB海洋专题】历史汇总 目录 01:海洋专题进阶教学 02:海洋数据处理 03:海洋数据下载 04:海洋配色 05:海洋专题基础教学 06: 其他基础画图 07:python 画海图专题 08:模式相关文件制作 01…

    数据仓库ODS、DWD、DWS、ADS各层介绍

    数据仓库Data warehouse(可简写为DW或者DWH)建设的目的,是为前端查询和分析作为基础,主要应用于OLAP(on-line Analytical Processing),支持复杂的分析操作,侧重决策支持,…

    动态提示词(小模型)、RAG和提示词系统

    动态提示词(小模型)、RAG和提示词系统 目录 动态提示词(小模型)、RAG和提示词系统小模型方案:动态提示词基于规则的动态提示词生成基于模板的动态提示词生成基于小模型的动态提示词生成基于强化学习的动态提示词生成基于元学习的动态提示词生成动态提示词(小模型)RAG(检…

    并发设计模式实战系列(3):工作队列

    🌟 ​大家好,我是摘星!​ 🌟 今天为大家带来的是并发设计模式实战系列,第三章工作队列(Work Queue)​​,废话不多说直接开始~ 目录 一、核心原理深度拆解 1. 生产者-消费者架构 …

    云账号安全事件应急响应指南:应对来自中国IP的异常访问

    在当今数字化时代,云服务已成为企业IT基础设施的核心。然而,随之而来的安全挑战也日益突出。本文将详细介绍当发现云账号被来自中国的IP地址异常利用时,应如何快速有效地响应,以确保账户安全并最小化潜在风险。 1. 确认异常活动 首先,我们需要确认是否真的发生了安全事件…