【数据库表的约束】

文章目录

  • 一、NULL vs ''(空字符串)
  • 二、not null 和default
  • 三、列描述字段comment
  • 四、zerofill
  • 五、primary key 主键
  • 总结


一、NULL vs ‘’(空字符串)

NULL和空字符串’’

NULL代表什么都没有。
空字符串’'代表有,但串是空的。

就比如:我问你有钱包吗?
NULL说:我什么都没有。
空字符串说:我有钱包,但是钱包是空的。

二、not null 和default

当想设置一个类型的约束为not null时,
1.如果用户表明插入的值为NULL,就会报错。
报错原因是不能为NULL。
2.如果用户直接忽略了该项,没有插入,也会报错。
报错原因是该项没有默认值default。

所以两个报错原因是不一样的。

当设置一个性别类型的约束为not null default ‘男’。
意味着该类型插入时不能为空,且默认性别是男。
1.如果用户表明插入的值为NULL,就会报错。
报错原因是不能为NULL。
2.如果用户直接忽略了该项,没有插入,不会报错,因为设置了默认值是男。

总结:not null 和default 是不冲突的,相互补充。

如果没有设置not null 约束和default约束。
MySQL会自动优化,将该类型优化成default null。

在这里插入图片描述

三、列描述字段comment

这个字段可以理解成注释。

在这里插入图片描述

四、zerofill

首先创建一个表,表的数据如下:

mysql> create table t12(
-> a int(10) unsigned not null,
-> b int(10) unsigned zerofill);

随后向表中插入一些数据,如下:

mysql> insert into t12 values(1,2);
mysql> insert into t12 values(1,20);
mysql> insert into t12 values(1,200);

结果如下:
在这里插入图片描述

有了zerofill的约束后,int(10)这个字段意味着有10个字符占位,而插入的值中如果不够10位,zerofill约束会自动填充,也就是在前面补0。

注意一个细节:
在这里插入图片描述

再次建表时,不给int类型设置大小,默认为什么会是11,且给10这个地方加了 unsigned zerofill后,默认是10.

int类型大小4字节,能表示的范围是-2^31 ~ 2^31 - 1 ,也就是最大21亿多。
占10位,给11位的原因是还有一位表示符号位。
unsigned int 类型也是4字节,表示的范围是 0~2^32-1,最大42亿多,所以给10位。

总的来说,zerofill就是用来统一宽度的。
不影响存储,只影响格式化地显示。

五、primary key 主键

primary key主键的作用就是不允许表中出现重复的数据。

创建表

mysql> create test_key(
-> id int unsigned primary key comment ‘学号’ not null,
-> name varchar(20) not null comment ‘姓名’);

创建表后,插入数据:
在这里插入图片描述
第一次插入学号为1的张飞,是可以的,但是第二次就error了。
原因是重复的id。

这是因为id号被primay key约束了,不能插入相同的id号。

但是,只要我的id不同,姓名相同,也是可以插入的。
因为姓名这个数据字段,没有被primary key 修饰。
在这里插入图片描述

primary key存在的意义是强制限制程序员不能插入相同的数据。
也就意味着插入表中的数据一定是不相同的。

同时:
当表创建好以后但是没有主键的时候,可以再次追加主键。

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

删除主键

alter table 表名 drop primary key;

注意:一张表中最多只能有一个主键。
但是,一个主键可以被添加到多列上,叫做复合主键。

创建一个含有复合主键的表格,如下:

在这里插入图片描述
插入几个数据后,再次插入(234,‘张三’)。
发现就报错了,就是复合主键约束了插入的数据不能相同。

而这个相同,是复合主键约束的数据都要相同,才形成约束。
假如只有一个或一部分数据相同,也一样能插入。

在这里插入图片描述


总结

还有后续,下篇文章发布。

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

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

相关文章

纯干货分享|源代码泄露的有效方法

企业的源代码怎么加密? 源代码防泄密的重点和方法到底是怎样的? 源代码开发环境复杂,涉及的开发软件、文件类型庞杂多变,究竟有什么源代码加密软件能够适应众多开发软件而不影响原有的工作效率? 相信这是很多IT管理…

如何用TONGYILingma进行AI辅助编程?

通义灵码,是阿里云出品的一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云的云服务使用场景调优&#xff0c…

面试笔记——工厂模式(简单工厂、工厂方法模式、抽象工厂模式)

场景需求:设计一个咖啡店点餐系统。 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore&#xff09…

软件设计师-应用技术-UML建模题3

基础知识及技巧: 1. 用例图: 1.1 考点: 题干里面有关项目的详细描述,完整用例图中的某些参与者和某些用来扣掉,根据题干内容和已有用例图补充。根据题干,分析用例图之间的关系。 1.2 基础知识&#xff…

Linux进程通信-信号

信号概念 信号是 Linux 进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号 可以导致一个正在运行的进程被另一个正在运行的异…

通过 Java 操作 redis -- String 基本命令

关于 redis String 类型的相关命令推荐看 Redis - String 字符串 要想通过 Java 操作 redis,首先要连接上 redis 服务器,推荐看通过 Java 操作 redis -- 连接 redis 本博客只介绍了一小部分常用的命令,其他的命令根据上面推荐的博客也能很简单…

Day 63:单调栈 LeedCode 84.柱状图中最大的矩形

84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出:10 解释&a…

论文精读-基于FPGA的卷积神经网络和视觉Transformer通用加速器

文章目录 论文精读-基于FPGA的卷积神经网络和视觉Transformer通用加速器概述研究背景卷积和注意力机制概述计算方式差异非线性与归一化操作差异 问题小结 加速器设计乘法单元探索非线性与归一化加速单元加速器架构 实验结果QA 论文精读-基于FPGA的卷积神经网络和视觉Transforme…

交易复盘-20240507

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 蔚蓝生物 (5)|[9:25]|[36187万]|4.86 百合花…

从0到1提审苹果商店(appstore)上线一款新APP

本篇主要复盘和介绍一款APP如何从0到1上线到苹果商店,将我自己项目遇到的坑跟大家分享,希望能为同样做开发或者运营的你提供经验,少走弯路。 如果你是24年1月1日之后开始首次提审APP,还需要先将自己的APP在工信部备案,苹果后台增加了工信部备案号的填写,备案方法和经验如…

SAP PP学习笔记12 - 评估MRP的运行结果

上一章讲了MRP的概念,参数,配置等内容。 SAP PP学习笔记11 - PP中的MRP相关概念,参数,配置-CSDN博客 本章来讲 MRP跑完之后呢,要怎么评估这个MRP的运行结果。 1,Stock/Requirements List and MRP List 在…

T型槽地轨承载力是如何连接整个制造过程的强力桥梁(北重公司设计)

T型槽地轨承载力的定义和计算 T型槽地轨是一种用于工业设备运输和装配的关键组件。它由世界上各行各业的生产商广泛采用,其有效的承载力使其成为连接整个制造过程的强力桥梁。本文将介绍T型槽地轨的承载力以及相关的设计要点和应用。 承载力的定义和计算 承载力是…

某制造公司屋顶分布式光伏发电案例分享--分布式光伏电力监控系统解决方案

安科瑞薛瑶瑶18701709087/17343930412 ★分布式光伏监控系统 分布式光伏监控电力系统遵循安全可靠、经济合理原则,满足电力系统自动化总体规划要求,且充分考虑光伏发电的因素,对分布式光伏发电、用电进行集中监控、统一调度、统一运维、满足…

vivado Zynq UltraScale+ MPSoC 比特流设置

Zynq UltraScale MPSoC 比特流设置 下表所示 Zynq UltraScale MPSoC 器件的器件配置设置可搭配 set_property <Setting> <Value> [current_design] Vivado 工具 Tcl 命令一起使用。

本地运行AI大模型简单示例

一、引言 大模型LLM英文全称是Large Language Model&#xff0c;是指包含超大规模参数&#xff08;通常在十亿个以上&#xff09;的神经网络模型。2022年11月底&#xff0c;人工智能对话聊天机器人ChatGPT一经推出&#xff0c;人们利用ChatGPT这样的大模型帮助解决很多事情&am…

【Qt 学习笔记】Qt常用控件 | 输入类控件 | Date/Time Edit的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 输入类控件 | Spin Box的使用及说明 文章编号&#xff1…

YOLOv5 V7.0 - rknn模型的验证 输出精度(P)、召回率(R)、mAP50、mAP50-95

1.简介 RKNN官方没有提供YOLOv5模型的验证工具&#xff0c;而YOLOv5自带的验证工具只能验证pytorch、ONNX等常见格式的模型性能&#xff0c;无法运行rknn格式。考虑到YOLOv5模型转换为rknn会有一定的精度损失&#xff0c;但是需要具体数值才能进行评估&#xff0c;所以需要一个…

通过三角形相似原理实现单目测距

根据三角形相似原理计算相机焦距&#xff0c;公式为&#xff1a;F (P * D) / W 其中&#xff1a; F: 待求的相机的焦距 P: 图像中目标的宽度&#xff0c;单位像素 D: 真实目标与相机的距离&#xff0c;单位厘米 W: 真实目标的宽度&#xff0c;单位厘米 计算焦距前&#xff0c;…

太原理工大学Python数据分析原理与应用(课外考题:8~11章)

这部分大概只考10分&#xff0c;且大部分出在选择题&#xff0c;填空最多一两个 (仅供参考) 第十章 (理解概念为主&#xff0c;无需看推导过程) 第十一章

QGraphicsView实现简易地图10『自适应窗口大小』

前文链接&#xff1a;QGraphicsView实现简易地图9『层级缩放显示底图』 自适应窗口大小 当地图窗口放大或缩小的时候&#xff0c;需要地图能够动态覆盖整个视口。 1、动态演示效果 2、核心代码 注&#xff1a;WHMapView继承自MapViewvoid WHMapView::resize() {if (m_curLev…