【数据库表的约束】

文章目录

  • 一、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.hqwc.cn/news/675486.html

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

相关文章

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

目录 使用 String 类型的 get 和 set 方法 使用通用命令 exists ,del 使用通用命令 keys 使用通用命令 expire,ttl 使用通用命令 type 要想通过 Java 操作 redis,首先要连接上 redis 服务器,推荐看通过 Java 操作 redis -- 连接 redis 关…

VMware虚拟机提示内存不足

VMware虚拟机,k8s集群搭建内存不足的问题 疑问:我的电脑是8G8G双通道的内存,当我在搭建k8s集群时给master-2G内存,node1-3G内存,node2-3G内存; 当依次打开虚拟机到node2时VM提示“物理内存不足,…

【漏洞复现】CData API Server 路径遍历漏洞(CVE-2024-31849)

0x01 产品简介 CData API Server是CData公司的一个强大的数据连接平台,旨在帮助企业轻松地访问、整合和分析各种数据源。 0x02 漏洞概述 CData API Server 23.4.8846之前版本存在安全漏洞,该漏洞源于存在路径遍历漏洞。攻击者可利用该漏洞获得对应用程…

Unet简单结构概述

总体结构代码 class UNet(nn.Module):def __init__(self, n_channels, n_classes, bilinearFalse):super(UNet, self).__init__()self.n_channels n_channelsself.n_classes n_classesself.bilinear bilinearself.inc (DoubleConv(n_channels, 64))self.down1 (Down(64, …

根据最近拒包项目总结,详细讲解Google最新政策(上)

关于占比最多的移动垃圾软件拒审问题 移动垃圾软件(Mobile Unwanted Software)特征表现1> 具有欺骗性,承诺其无法实现的价值主张。2> 诱骗用户进行安装,或搭载在用户安装的其他程序上。3> 不向用户告知其所有主要功能和重要功能。4> 以非预期方式影响用户的系统…

牛客网刷题 | BC78 KiKi说祝福语

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 2020年来到了&#…

LeetCode刷题记(五):121~150题

121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从…

新火种AI|挑战谷歌,OpenAI要推出搜索引擎?

作者:一号 编辑:美美 在AI革新的浪潮下,谷歌搜索迎来了越来越多的“挑战者”。 最近,据多家外媒的消息,有知情人士透露,OpenAI正计划上线一款基于ChatGPT的大型产品,将提供一个新的搜索引擎&…

数据结构---动态数组

一、数据结构基本理论 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。强调数据元素之间的关系 算法五个特性: 输入、输出、有穷、确定、可行 数据结构分类: 逻辑结构:集合、线性结构、树形结构、图形结构 物理…

Elasticsearch:使用 MongoDB connector 同步数据到 Elasticsearch

MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。Elasticsearch 是一个高效强…

LTE的EARFCN和band之间的对应关系

一、通过EARFCN查询对应band 工作中经常遇到只知道EARFCN而需要计算band的情况,因此查了相关协议,找到了他们之间的对应关系,可以直接查表,非常方便。 具体见: 3GPP TS 36.101 5.7.3 Carrier frequency and EAR…

java+jsp+Oracle+Tomcat 记账管理系统论文(完整版)

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️ ➡️点击免费下载全套资料:源码、数据库、部署教程、论文、答辩ppt一条龙服务 ➡️有部署问题可私信联系 ⬆️⬆️⬆️​​​​​​​⬆️…