博客
关于我
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 5.0-触发器(参考)_mysql
查看>>
MySQL及navicat for mysql中文乱码
查看>>
MySqL双机热备份(二)--MysqL主-主复制实现
查看>>
mysql启动以后会自动关闭_驾照虽然是C1,一直是开自动挡的车,会不会以后就不会开手动了?...
查看>>
mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)
查看>>
Mysql启动失败解决过程
查看>>
MySQL启动失败:Can't start server: Bind on TCP/IP port
查看>>
mysql启动报错
查看>>
mysql启动报错The server quit without updating PID file几种解决办法
查看>>
mysql和oorcale日期区间查询【含左右区间问题】
查看>>
MySQL和SQL入门
查看>>
mysql在centos下用命令批量导入报错_Variable ‘character_set_client‘ can‘t be set to the value of ‘---linux工作笔记042
查看>>
Mysql在Linux运行时新增配置文件提示:World-wrirable config file ‘/etc/mysql/conf.d/my.cnf‘ is ignored 权限过高导致
查看>>
Mysql在Windows上离线安装与配置
查看>>
MySQL在渗透测试中的应用
查看>>
Mysql在离线安装时启动失败:mysql服务无法启动,服务没有报告任何错误
查看>>
Mysql在离线安装时提示:error: Found option without preceding group in config file
查看>>
MySQL基于SSL的主从复制
查看>>
MySQL基础day07_mysql集群实例-MySQL 5.6
查看>>
Mysql基础命令 —— 数据库、数据表操作
查看>>