博客
关于我
mysql数据库设计
阅读量:791 次
发布时间:2023-02-12

本文共 2084 字,大约阅读时间需要 6 分钟。

数据类型

数据类型是数据库设计中最重要的组成部分之一。不同的数据类型在存储、处理和处理数据时有不同的特性和限制。以下是常见的数据库数据类型及其详细信息:

1.1 类型对比

类型 存储字节 备注 最小值(带符号) 最大值(带符号) 最小值(无符号) 最大值(无符号)
tinyint(length) 1 无符号范围:0-255
带符号范围:-128 到 127
0 255 0 255
smallint(length) 2 无符号范围:0-65535
带符号范围:-32768 到 32767
0 65535 0 65535
mediumint(length) 3 无符号范围:0-16777215
带符号范围:-8388608 到 8388607
0 16777215 0 16777215
int(length) 4 无符号范围:0-4294967295
带符号范围:-2147483648 到 2147483647
0 4294967295 0 4294967295
bigint(length) 8 无符号范围:0-18446744073709551615
带符号范围:-9223372036854775808 到 9223372036854775807
0 18446744073709551615 0 18446744073709551615
float(length, decimals) 4 具有浮动小数点的较小的数,支持小数点
默认小数位数:4
- + - +
double(length, decimals) 8 具有浮动小数点的较大的数,支持更多小数位数 - + - +
decimal(length, decimals) 1-2字节 存储为字符串,允许固定小数点 - + - +
date 3 YYYY-MM-DD 格式,日期范围:1000-01-01 到 9999-12-31 - + - +
time 3 HH:MM:SS 格式,时间范围:00:00:00 到 23:59:59 - + - +
timestamp 4 YYYYMMDDHHMMSS 格式,范围终止于2037年 - + - +
datetime 8 YYYY-MM-DD HH:MM:SS 格式,范围终止于9999-12-31 23:59:59 - + - +
char(length) length字节 定长字段,长度范围:0-255 - + - +
varchar(length) length+1-2字节 变长字段,长度范围:0-65535 - + - +
tinytext length+1字节 字符串字段,最大长度为255 - + - +
text length+2字节 字符串字段,最大长度为65535 - + - +
mediumint(length) length+3字节 字符串字段,最大长度为16 777 215 - + - +
longtext length+4字节 字符串字段,最大长度为4 294 967 295 - + - +

1.2 数据类型选择建议

  • 整数类型:优先选择 tinyintsmallint,适用于占用字节最少的整数字段。
  • 浮点数和双精度数:根据需要选择 floatdouble,注意 double 的精度更高。
  • 字符串类型:根据字段长度选择 charvarcharvarchar 更适合变长字段。
  • 日期时间类型:根据具体需求选择 datetimetimestampdatetime
  • 大整数类型:对于大范围的整数值,优先选择 bigintlongint

表和库设计推荐

2.1 数据库设计原则

  • 非 NULL 属性:所有字段应设置为 NOT NULL,业务需求如需默认值可自定义。
  • 默认值:通过设置默认值替代 NULL,避免三值逻辑运算。
  • 时间戳:在活跃数据表中添加 create_timeupdate_time 字段。

2.2字段类型建议

  • 状态字段(statustype:使用 tinyintsmallint,占用字节最少。
  • 自增列:推荐使用 bigint 类型,命名为 id

2.3 数据库性能优化

  • 选择合适的数据类型:避免使用过大的数据类型,减少存储开销。
  • 索引优化:根据查询需求合理索引,提升查询性能。
  • ** Partitioning**:对于大表,考虑分区存储,提升查询效率。

比较

3.1 字符类型对比

  • char:长度固定,存储效率高,适合定长字符串。
  • varchar:长度可变,存储效率稍低,适合变长字段。

3.2 整数类型对比

  • tinyint(1)tinyint(3):相同,占用1字节。
  • int(1) vs tinyint(1):优先选择 tinyint(1),节省空间。
  • tinyint:1字节,smallint:2字节,mediumint:3字节,int:4字节,bigint:8字节。

通过合理选择数据类型,可以显著提升数据库的性能和可维护性。

转载地址:http://njdfk.baihongyu.com/

你可能感兴趣的文章
MySQL处理千万级数据分页查询的优化方案
查看>>
mysql备份
查看>>
mysql备份与恢复
查看>>
mysql备份工具xtrabackup
查看>>
mysql备份恢复出错_尝试备份/恢复mysql数据库时出错
查看>>
mysql复制内容到一张新表
查看>>
mysql复制表结构和数据
查看>>
mysql复杂查询,优质题目
查看>>
MySQL外键约束
查看>>
MySQL多表关联on和where速度对比实测谁更快
查看>>
MySQL多表左右连接查询
查看>>
mysql大批量删除(修改)The total number of locks exceeds the lock table size 错误的解决办法
查看>>
mysql如何做到存在就更新不存就插入_MySQL 索引及优化实战(二)
查看>>
mysql如何删除数据表,被关联的数据表如何删除呢
查看>>
MySQL如何实现ACID ?
查看>>
mysql如何记录数据库响应时间
查看>>
MySQL子查询
查看>>
Mysql字段、索引操作
查看>>
mysql字段的细节(查询自定义的字段[意义-行列转置];UNION ALL;case-when)
查看>>
mysql字段类型不一致导致的索引失效
查看>>