MySQL:表的约束

文章目录

  • 0.小知识,数据转化
  • 1.空属性(非空约束)
  • 2.默认值(default)
  • 3.comment(列描述)
  • 4.zerofill(显示约束)
  • 5.primary key(主键约束)
  • 6.auto_increment(自增长)
  • 7.unique(唯一键)
  • 8.foreign key (外键)
  • 9.综合表结构的设计


表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。 约束的本质是通过技术手段,倒逼程序员,插入正确的数据!

约束的最终目标:保证数据的完整性和可预期性!

0.小知识,数据转化

在这里插入图片描述

1.空属性(非空约束)

两个值:null(默认的)和not null(不为空)
注意:空字符串不是空(’ ')
数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办
法参与运算。
在这里插入图片描述

不做约束,MySQL会自己加default null

2.默认值(default)

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

3.comment(列描述)

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

4.zerofill(显示约束)

b的值由原来的2变成00000 00002,这就是zerofill属性的作用,如果宽度小于设定的宽度(这里默认是10),自动填充0。要注意的是,这只是最后显示的结果,在MySQL中实际存储的还是2。

在这里插入图片描述

5.primary key(主键约束)

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

但不意味着一个表中的主键,只能添加给一列!一个主键可以被添加到一列,或者多列上(复合主键)

在这里插入图片描述

6.auto_increment(自增长)

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

自增长的特点:
①任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
②自增长字段必须是整数
③一张表最多只能有一个自增长

在这里插入图片描述

在插入后获取上次插入的 AUTO_INCREMENT 的值(批量插入获取的是第一个值)
在这里插入图片描述

7.unique(唯一键)

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

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

我们可以简单理解成,主键更多的是标识唯一性的。而唯一键更多的是保证在业务上,不要和别的信息出现重复。乍一听好像没啥区别,我们举一个例子在这里插入图片描述

**唯一键可以为空!**唯一键可以有多个,其也可以设置为不为空!
在这里插入图片描述

8.foreign key (外键)

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

我们先来看看外键的一个背景条件:
在这里插入图片描述
在这里插入图片描述

9.综合表结构的设计

有一个商店的数据,记录客户及购物情况,有以下三个表组成:
①商品goods(商品编号goods_id,商品名goods_name,单价unitprice, 商品类别category, 供应商 provider)
②客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)
③购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)
要求:

每个表的主外键
客户的姓名不能为空值
邮箱不能重复
客户的性别(男,女)
在这里插入图片描述

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

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

相关文章

安装qianfan大模型库,报错:ERROR: Command errored out with exit status 1

安装qianfan大模型库(pip install qianfan),报错:ERROR: Command errored out with exit status 1 分析错误,是加载 pycryptodome库时导致的 解决: 1、命令行中重新安装:>pip install pycry…

lspci 显示当前设备的PCI总线信息

lspci 显示当前设备的PCI总线信息 lspci 显示当前设备的PCI总线信息显示当前主机的所有PCI总线信息:以数字方式显示PCI厂商和设备代码同时显示数字方式还有设备代码信息以树状结构显示PCI设备的层次关系:更多信息 lspci 显示当前设备的PCI总线信息 lspc…

XXE(XML外部实体注入)

1、XXE原理 XXE(XML外部实体注入,XML External Entity) ,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命…

01-Linux【准备篇】

一、学Linux的作用? 1.Linux下开发(部署)软件项目 2.Linux运维 二、Linux的强与弱 1.薄弱 个人桌面领域的应用 此领域是传统Linux应用薄弱的环节,近些年随着Ubuntu、fedora等优秀桌面环境的兴起,Linux在个人桌面领域的占有率在慢慢提高…

潮玩宇宙Dapp游戏:密室大逃杀的魅力探索

在潮玩宇宙这片充满创意与激情的虚拟世界中,一款名为“密室大逃杀”的Dapp游戏凭借其独特的玩法和紧张刺激的氛围,迅速成为了玩家们热衷的焦点。这款游戏不仅融合了传统的密室逃脱元素,还巧妙地结合了区块链技术,为玩家带来了全新…

docker不删除容器更改其挂载目录

场景:docker搭建的jenkins通常需要配置很多开发环境,当要更换挂载目录,每次都需要删除容器重新运行,不在挂载目录的环境通常不会保留。 先给一个参考博客docker不删除容器,修改容器挂载或其他_jenkins 修改容器挂载do…

linux中最常用的文件管理命令

linux中最常用的文件管理命令 linux中最常用的文件管理命令最常用的且没有之一的 ls命令格式不加任何参数使用-l显示更多细节使用-t按照时间排序使用-r按照时间逆序使用-S根据文件大小排序 查看庐山真面貌的cat实例 :简单显示内容实例 :显示行号 -n实例 …

React 其他 Hooks

其他 Hooks useRef 可用于获取 DOM 元素 const ScrollRef useRef(null)ScrollRef.current useContext (先回顾一下之前的 Context 知识,借用之前 ppt 和源码) Hooks 中使用 useContext 来获取 context 的值 // 父组件创建 contextexpor…

20232801 2023-2024-2 《网络攻防实践》实践十一报告

#20232801 2023-2024-2 《网络攻防实践》实践十一报告 1.实践内容 (1)web浏览器渗透攻击 使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。 (2)取证分析实践—网页木马…

抖音运营_抖音推荐算法的机制

目录 一 抖音流量推荐算法机制 二 4大关键指标 三 完播率 1 黄金3秒 2 内容严谨 3 期待感 4 用户痛点 5 通俗易懂 四 转发量 1 分享需求 2 分享快乐 3 共情表达 4 正义传播 五 评论量 1 话题性 2 争议性 3 参与感 4 评论回评 六 点赞量 1 情感共鸣 2 用户喜…

【Flutter】AppBar、TabBar和TabBarView

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Flutter学习 🌠 首发时间:2024年5月26日 🦋 欢迎关注🖱点赞👍收藏🌟留言🐾 目…

FTP协议——BFTPD基本操作(Ubuntu+Win)

1、描述 本机(Win10)与虚拟机(Ubuntu22.04.4)上的BFTPD服务器建立FTP连接,执行一些基本操作。BFTPD安装教程:FTP协议——BFTPD安装(Linux)-CSDN博客 2、 步骤 启动BFTPD。启动文件…

Python文件操作(Excel、PDF、XML、Word)

大家好,在现代数据驱动的世界中,对于数据的处理和管理是至关重要的。Python作为一种强大而灵活的编程语言,提供了丰富的工具和库来处理各种文件格式。本文将探讨Python中的文件操作,重点介绍如何使用Python处理Excel、PDF、XML和W…

RabbitMQ最全使用教程-小白也能看懂

1、队列: 点对点的通信(point - to - point): 消息发送者发送消息,消息代理将其放入到一个队列中,消息接收者从队列中获取消息内容,消息读取后被移除出队列。 2、主题: 发布publish/订阅subscribe 消息通信: 发布者发送消息到主题,多个接收者(订阅者)订阅…

装备制造项目管理软件:奥博思PowerProject项目管理系统

数字化正逐步改变着制造方式和企业组织模式。某制造企业领导层透露,在采用数字化项目管理模式后,企业的发展韧性更加强劲,构筑起了竞争新优势,企业产品研制周期缩短25%,生产效率提升18%。 随着全球经济的发展&#xf…

简单好用的文本识别方法--付费的好用,免费的更有性价比

文章目录 先说付费的进入真题,免费的来喏!PixPin微信 先说付费的 直达网址!!! 进入真题,免费的来喏! PixPin 商店里就有 使用示例: 可以看到:贴在桌面上的图片可以复制图片中的文字,真的很…

AI语音及其应用

文章目录 一、基本认识二、AI语音应用场景三、真人录音与AI配音的区别四、AI语音创作基本步骤 本文将简单了解下AI语音、应用场景及其优势和创作核心步骤。 一、基本认识 AI语音是指基于人工智能技术开发的语音识别和语音合成系统。语音识别是指计算机识别和理解人类语音的能力…

【机器智能】:AI机器学习在医疗服务的广泛应用与实践案例

目录 引言一,什么是机器学习二,AI在医学影像诊断中的应用三,AI在个性化治疗方案设计中的应用四,医疗图像识别技术五,医疗语言识别技术六,结语 引言 随着人工智能(AI)和机器学习技术…

SQL注入:原理及示例讲解,配置mysql环境变量,pikachu靶场搭建

SQL注入原理 SQL注入(SQL Injection)是一种代码注入技术,攻击者通过将恶意的SQL代码插入到应用程序的输入字段中,诱使后台数据库执行这些恶意代码,从而对数据库进行未授权的操作。常见的操作包括获取敏感数据、篡改数…

知能行——考研数学利器

知能行使用体验全记录 首先,我先介绍一下自己,我是2018级的,2022年6月毕业,本科沈阳工业大学(双非),今年二战,专业课自动控制原理,数二英二,目标是江南大学控…