mysql数据库设计
发布日期:2025-04-17 23:23:43
浏览次数:33
分类:精选文章
本文共 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 数据类型选择建议
- 整数类型:优先选择
tinyint或smallint,适用于占用字节最少的整数字段。 - 浮点数和双精度数:根据需要选择
float或double,注意double的精度更高。 - 字符串类型:根据字段长度选择
char或varchar,varchar更适合变长字段。 - 日期时间类型:根据具体需求选择
date、time、timestamp或datetime。 - 大整数类型:对于大范围的整数值,优先选择
bigint或longint。
表和库设计推荐
2.1 数据库设计原则
- 非 NULL 属性:所有字段应设置为
NOT NULL,业务需求如需默认值可自定义。 - 默认值:通过设置默认值替代
NULL,避免三值逻辑运算。 - 时间戳:在活跃数据表中添加
create_time和update_time字段。
2.2字段类型建议
- 状态字段(
status或type):使用tinyint或smallint,占用字节最少。 - 自增列:推荐使用
bigint类型,命名为id。
2.3 数据库性能优化
- 选择合适的数据类型:避免使用过大的数据类型,减少存储开销。
- 索引优化:根据查询需求合理索引,提升查询性能。
- ** Partitioning**:对于大表,考虑分区存储,提升查询效率。
比较
3.1 字符类型对比
char:长度固定,存储效率高,适合定长字符串。varchar:长度可变,存储效率稍低,适合变长字段。
3.2 整数类型对比
tinyint(1)和tinyint(3):相同,占用1字节。int(1)vstinyint(1):优先选择tinyint(1),节省空间。tinyint:1字节,smallint:2字节,mediumint:3字节,int:4字节,bigint:8字节。
通过合理选择数据类型,可以显著提升数据库的性能和可维护性。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2026年05月25日 15时36分37秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP学习总结(7)——PHP入门篇之PHP注释
2023-03-01
rabbitmq重启失败
2023-03-01
PHP学习总结(9)——PHP入门篇之WAMPServer服务控制面板介绍
2023-03-01
php学习笔记---php调试和开发工具整理
2023-03-01
PHP学习笔记一:谁动了你的mail(),PHP?
2023-03-01
PHP安全实战
2023-03-01
php安装扩展
2023-03-01
rabbitmq重启
2023-03-01
php实现上传(多个)文件函数封装
2023-03-01
php实现下载文件方法
2023-03-01
php实现单链表
2023-03-01
php实现图片背景换色功能
2023-03-01
php实现多个一维数组对应合并成二维数组
2023-03-01
php实现多关键字查找方法
2023-03-01
PHP实现微信公众号H5支付
2023-03-01
PHP实现微信公众号网页授权
2023-03-01
PHP实现微信小程序推送消息至公众号
2023-03-01
rabbitmq逻辑与开发
2023-03-01
php实现根据身份证获取年龄
2023-03-01
PHP实现的MongoDB数据增删改查
2023-03-01