数据完整性-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)
TINYINT 1 -128 ~ 127 0 ~ 255
SMALLINT 2 -32768 ~ 32767 0 ~ 65535
MEDIUMINT 3 -8388608 ~ 8388607 0 ~ 16777215
INT/INTEGER 4 -2147483648 ~2147483647 0 ~ 4294967295
BIGINT 8 -9223372036854775808 ~ 9223372036854775807 0 ~ 18446744073709551615

字符串

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

日期时间类型

类型 字节大小 示例
DATE 4 '2020-01-01'
TIME 3 '12:29:59'
DATETIME 8 '2020-01-01 12:29:59'
YEAR 1 '2017'
TIMESTAMP 4 '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)操作时,会对数据库性能产生一定影响。因此,通常不建议在数据库中使用外键约束。为了保证数据的有效性,可以在业务逻辑层进行控制。

相关推荐
码熔burning3 分钟前
【MongoDB篇】MongoDB的集合操作!
数据库·mongodb·nosql
SuperW1 小时前
Qt C++数据库实验
数据库
Json_181790144801 小时前
Alibaba国际站商品详情AP接口概述,json数据示例返回参考
大数据·数据库
♡喜欢做梦1 小时前
【MySQL】聚合查询 和 分组查询
数据库·mysql
TDengine (老段)2 小时前
TDengine 订阅不到数据问题排查
java·数据库·tdengine
为美好的生活献上中指2 小时前
java每日精进 4.29【框架之自动记录日志并插入如数据库流程分析】
java·linux·数据库
极小狐3 小时前
如何创建极狐GitLab 私密议题?
数据库·ci/cd·gitlab·devops·mcp
像风一样自由20203 小时前
PySide与PyQt对比:为何PySide是更优选择
数据库·系统架构·pyqt
HashData酷克数据4 小时前
回顾|Apache Cloudberry™ (Incubating) Meetup·2025 杭州站
数据库