数据完整性-03

news/2025/2/1 6:34:26 标签: 数据库

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

一、数据类型

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

常见的数据类型包括:

  • 整数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.niftyadmin.cn/n/5839080.html

    相关文章

    SQL NOW() 函数详解

    SQL NOW() 函数详解 引言 在SQL数据库中,NOW() 函数是一个常用的日期和时间函数,用于获取当前的时间戳。本文将详细介绍 NOW() 函数的用法、参数、返回值以及在实际应用中的注意事项。 函数概述 NOW() 函数返回当前的日期和时间,格式为 Y…

    DDD - 微服务架构模型_领域驱动设计(DDD)分层架构 vs 整洁架构(洋葱架构) vs 六边形架构(端口-适配器架构)

    文章目录 引言1. 概述2. 领域驱动设计(DDD)分层架构模型2.1 DDD的核心概念2.2 DDD架构分层解析 3. 整洁架构:洋葱架构与依赖倒置3.1 整洁架构的核心思想3.2 整洁架构的层次结构 4. 六边形架构:解耦核心业务与外部系统4.1 六边形架…

    如何在 ACP 中建模复合罐

    概括 本篇博文介绍了 ANSYS Composite PrepPost (ACP) 缠绕向导。此工具允许仅使用几个条目自动定义高压罐中常见的悬垂复合结构。 ACP 绕线向导 将必要的信息输入到绕组向导中。重要的是要注意“参考半径”,它代表圆柱截面的半径,以及“轴向”&#x…

    R 字符串:深入理解与高效应用

    R 字符串:深入理解与高效应用 引言 在R语言中,字符串是数据处理和编程中不可或缺的一部分。无论是数据清洗、数据转换还是数据分析,字符串的处理都是基础技能。本文将深入探讨R语言中的字符串概念,包括其基本操作、常见函数以及高效应用方法。 字符串基本概念 字符串定…

    机试题——连续出牌数量

    题目描述 有这么一款单人卡牌游戏,牌面由颜色和数字组成,颜色为红、黄、蓝、绿中的一种,数字为0-9中的一个。游戏开始时玩家从手牌中选取一张卡牌打出,接下来如果玩家手中有和他上一次打出的手牌颜色或者数字相同的手牌&#xff…

    Python之如何在Visual Studio Code 中写的python程序打包成可以在Windows系统下运行的.exe程序

    要将你在 Visual Studio Code 中编写的 Python 程序打包成可以在 Windows 系统下运行的 .exe 文件,可以使用 PyInstaller 工具。以下是详细的操作步骤: 1. 安装 PyInstaller 首先,你需要安装 PyInstaller。打开终端(可以在 VS C…

    LeetCode 349: 两个数组的交集

    LeetCode 349: 两个数组的交集 - C语言 问题描述 给定两个数组 ransomNote 和 magazine,你需要判断 ransomNote 是否可以由 magazine 里的字符构成。每个字符可以使用一次。 解题思路 通过统计 magazine 中每个字符的频次,并与 ransomNote 中字符的需…

    第24节课:前端性能优化—提升网页加载速度的关键策略

    目录 前端性能优化的重要性资源压缩与合并资源压缩HTML压缩CSS压缩JavaScript压缩 资源合并CSS文件合并JavaScript文件合并 懒加载与预加载懒加载图片懒加载 预加载预加载关键资源 实践:综合应用性能优化技术示例:优化一个电商网站 结语 在当今这个信息爆…