博客
关于我
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创建数据库指定字符集
查看>>
MySql创建数据表
查看>>
MySQL创建新用户以及ERROR 1396 (HY000)问题解决
查看>>
MySQL创建用户报错:ERROR 1396 (HY000): Operation CREATE USER failed for 'slave'@'%'
查看>>
mysql加强(3)~分组(统计)查询
查看>>
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
查看>>
mysql加强(5)~DML 增删改操作和 DQL 查询操作
查看>>
mysql加强(6)~子查询简单介绍、子查询分类
查看>>
mysql加强(7)~事务、事务并发、解决事务并发的方法
查看>>
mysql千万级大数据SQL查询优化
查看>>
MySQL千万级大表优化策略
查看>>
MySQL单实例或多实例启动脚本
查看>>
MySQL压缩包方式安装,傻瓜式教学
查看>>
MySQL原理、设计与应用全面解析
查看>>
MySQL原理简介—1.SQL的执行流程
查看>>
mysql参考触发条件_MySQL 5.0-触发器(参考)_mysql
查看>>
MySQL及navicat for mysql中文乱码
查看>>
MySqL双机热备份(二)--MysqL主-主复制实现
查看>>