当前位置: 首页 > news >正文

【lesson11】表的约束(4)

文章目录

  • 表的约束的介绍
  • 唯一键约束
    • 测试
      • 建表
      • 插入测试
      • 建表
      • 插入测试
      • 建表
      • 插入测试
      • 修改表
      • 插入测试

表的约束的介绍

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。
表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,

唯一键约束

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

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

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

假设一个场景(当然,具体可能并不是这样,仅仅为了帮助大家理解)
比如在公司,我们需要一个员工管理系统,系统中有一个员工表,员工表中有两列信息,一个身份证号码,一个是员工工号,我们可以选择身份号码作为主键。

而我们设计员工工号的时候,需要一种约束:而所有的员工工号都不能重复。

具体指的是在公司的业务上不能重复,我们设计表的时候,需要这个约束,那么就可以将员工工号设计成为唯一键。

一般而言,我们建议将主键设计成为和当前业务无关的字段,这样,当业务调整的时候,我们可以尽量不会对主键做过大的调整。

测试

建表

在这里插入图片描述
在这里插入图片描述

插入测试

在这里插入图片描述
在这里插入图片描述
所以唯一键约束的列和主键约束的列一样是不能有重复数据的,但是唯一键可以是NULL。
那么唯一键有什么用呢?下面新建个表来解释

建表

在这里插入图片描述

插入测试

在这里插入图片描述
我们发现刘备和孙权的电话号码是一样的,假如警方发现了一个诈骗电话1345678911,而这个电话定位来源于旁边一所学校,这是警方要求学校尽快找出这个电话的拥有者,于是学校教务处立马行动。
在这里插入图片描述
可是发现竟然有两个学生拥有这个电话,这一定是教务处输入信息的时候输入错了。而因为已经有主键了,这时候唯一键就可以派上用场了

建表

在这里插入图片描述
在这里插入图片描述

插入测试

在这里插入图片描述
我们看到唯一键确实起到了作用。
唯一键可以为空。
在这里插入图片描述
删除唯一键为空的空数据
在这里插入图片描述
唯一键可以配合not null使用,使它插入数据的时候为空就报错。

修改表

在这里插入图片描述

插入测试

在这里插入图片描述

http://www.lryc.cn/news/258436.html

相关文章:

  • 将单体应用程序迁移到微服务
  • Python读取.dat格式数据并转为.png,.jpg,.bmp等可视化格式(附代码)
  • matplotlib 默认属性和绘图风格
  • ip地址怎么转化为十进制
  • 【Spring进阶系列丨第五篇】详解Spring中的依赖注入
  • DAP数据集成与算法模型如何结合使用
  • 大数据监控
  • 【C语言】数据结构——小堆实例探究
  • Vue中比较两个JSON对象的差异
  • 前端知识库Html5和CSS3
  • 智能优化算法应用:基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • Apollo配置发布原理解析
  • TrustGeo论文问题理解
  • 子查询在SQL中的应用和实践
  • C# Socket通信从入门到精通(14)——多个异步UDP客户端C#代码实现
  • 【教3妹学编程-算法题】需要添加的硬币的最小数量
  • 【异常解决】SpringBoot + Maven 在 idea 下启动报错 Unable to start embedded Tomcat(已解决)
  • 做题总结 707. 设计链表
  • django实现--视图的使用
  • 【dirty cred】fileManager [XXX]
  • 线程按顺序循环执行
  • C# 使用异步委托获取线程返回值
  • 生鲜蔬果展示预约小程序作用是什么
  • 【C++】类与对象(下)
  • 一文了解 Go 方法
  • 【Docker】vxlan的原理与实验
  • 广度(宽度)优先搜素——层层递进
  • 设计模式——建造者模式(创建型)
  • ​getopt --- C 风格的命令行选项解析器​
  • Mysql大数据量删除