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

数据完整性-03

一个数据库通常代表一个完整的业务单元,内部包含多张表,每张表用于存储相关的数据。为了确保数据的准确性和有效性,在创建表时,可以通过设置字段的类型和约束条件,来强制验证和限制数据的存储方式,从而保证数据的一致性和完整性。

一、数据类型

可以通过查看数据库的帮助文档,了解所有支持的数据类型。使用数据类型时的原则是:满足需求即可,尽量选择取值范围较小的类型,这样可以节省存储空间。

常见的数据类型包括:

  • 整数intbit
  • 小数decimal
  • 字符串varcharchar
  • 日期时间datetimedatetime
  • 枚举类型enum

特别说明

  • decimal:用于表示浮动小数,如 decimal(5,2) 表示总长度为5位,其中小数部分占2位。
  • char:固定长度的字符串,如 char(3),如果存入 'ab',则会补充空格变为 'ab '
  • varchar:可变长度的字符串,如 varchar(3),存入 'ab' 时只存储 'ab'
  • text:用于存储大文本数据,当字符长度超过4000时推荐使用。
  • 对于图片、音频、视频等二进制文件,通常不建议直接存储在数据库中,而是将其上传至文件服务器,数据库中则存储文件的路径。

    数值类型(常用)

    类型字节大小有符号范围(Signed)无符号范围(Unsigned)
    TINYINT1-128 ~ 1270 ~ 255
    SMALLINT2-32768 ~ 327670 ~ 65535
    MEDIUMINT3-8388608 ~ 83886070 ~ 16777215
    INT/INTEGER4-2147483648 ~21474836470 ~ 4294967295
    BIGINT8-9223372036854775808 ~ 92233720368547758070 ~ 18446744073709551615

    字符串

    类型字节大小示例
    CHAR0-255类型:char(3) 输入 'ab', 实际存储为'ab ', 输入'abcd' 实际存储为 'abc'
    VARCHAR0-255类型:varchar(3) 输 'ab',实际存储为'ab', 输入'abcd',实际存储为'abc'
    TEXT0-65535大文本

    日期时间类型

    类型字节大小示例
    DATE4'2020-01-01'
    TIME3'12:29:59'
    DATETIME8'2020-01-01 12:29:59'
    YEAR1'2017'
    TIMESTAMP4'1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC

    二、约束说明

    1. 主键(Primary Key):保证记录的唯一性,并定义物理存储顺序。
    2. 非空(Not Null):该字段必须填写值,不能为空。
    3. 唯一(Unique):该字段的值必须唯一,不能重复。
    4. 默认值(Default):当字段值为空时,会使用预设的默认值;如果填写了该字段,则以填写的值为准。
    5. 外键(Foreign Key):用于约束关联表的字段,确保该字段值存在于关联表中。如果关联表中没有相应的值,将抛出异常并阻止数据插入。

    注意事项:虽然外键约束能够确保数据的完整性,但在进行增删改查(CRUD)操作时,会对数据库性能产生一定影响。因此,通常不建议在数据库中使用外键约束。为了保证数据的有效性,可以在业务逻辑层进行控制。


    http://www.kler.cn/a/525597.html

    相关文章:

  • 基于Flask的旅游系统的设计与实现
  • http3网站的设置(AI不会配,得人工配)
  • zyNo.19
  • 春晚舞台上的人形机器人:科技与文化的奇妙融合
  • Spring MVC 综合案例
  • 算法基础学习——二分查找(附带Java模板)
  • 为AI聊天工具添加一个知识系统 之79 详细设计之20 正则表达式 之7
  • (undone) MIT6.S081 2023 学习笔记 (Day7: LAB6 Multithreading)
  • Writing an Efficient Vulkan Renderer
  • 引入@Inject的依赖包
  • 雪花算法认知(Twitter_Snowflake)
  • Android车机DIY开发之软件篇(九) NXP AutomotiveOS编译
  • 基于MinIO的对象存储增删改查
  • 中国291个地级市的人均GDP数据(2022年)-社科数据
  • MR-GDINO: Efficient Open-World Continual Object Detection—— 高效开放世界持续目标检测
  • 大模型知识蒸馏技术(1)——蒸馏技术概述
  • 讯飞智作 AI 配音技术浅析(二):深度学习与神经网络
  • 嵌入式知识点总结 Linux驱动 (五)-linux内核
  • Linux Samba 低版本漏洞(远程控制)复现与剖析
  • d3.js: Relation Graph
  • 「AI学习笔记」深度学习进化史:从神经网络到“黑箱技术”(三)
  • 使用Python将Excel文件转换为PDF格式
  • Spring WebFlux揭秘:下一代响应式编程框架,与Spring MVC有何不同?
  • ROS_noetic-打印hello(√)
  • 你了解哪些Java限流算法?
  • 深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据(基础语法版)