数据完整性-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)操作时,会对数据库性能产生一定影响。因此,通常不建议在数据库中使用外键约束。为了保证数据的有效性,可以在业务逻辑层进行控制。

相关推荐
一屉大大大花卷20 分钟前
初识Neo4j之入门介绍(一)
数据库·neo4j
周胡杰1 小时前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统
wkj0011 小时前
navicate如何设置数据库引擎
数据库·mysql
赵渝强老师1 小时前
【赵渝强老师】Oracle RMAN的目录数据库
数据库·oracle
暖暖木头1 小时前
Oracle注释详解
数据库·oracle
御控工业物联网1 小时前
御控网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换
数据库·sql·http
GJCTYU3 小时前
spring中@Transactional注解和事务的实战理解附代码
数据库·spring boot·后端·spring·oracle·mybatis
MicroTech20253 小时前
微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
数据库·科技·算法
Code季风3 小时前
SQL关键字快速入门:CASE 实现条件逻辑
javascript·数据库·sql
weixin_478689763 小时前
操作系统【2】【内存管理】【虚拟内存】【参考小林code】
数据库·nosql