我是靠谱客的博主 坚定期待,最近开发中收集的这篇文章主要介绍mysql数据库设计表时数据类型的选择总结:原则:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

说一下常用的几种数据类型

1、整数

整数类型存储空间范围(有符号)范围(无符号)
TINYINT8bit(1 字节)(-128,127)(0,255)
SMALLINT16bit(2 字节)(-32 768,32 767)(0,65 535)
MEDIUMINT24bit(3 字节)(-8 388 608,8 388 607)(0,16 777 215)
INT或INTEGER32bit(4 字节)(-2 147 483 648,2 147 483 647)(0,4 294 967 295)
BIGINT64bit(8 字节)(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)
  • 一般情况下,如果选择int,推荐用有符号数,使用无符号数只是比原来多一倍得取值,数量级上没有改变。如果需要取值范围很大,直接选择用BIGINT
  • Mysql可以为整数类型指定宽度,比如INT(11),但是这是没有意义的,对于存储和计算来说,INT(1)和INT(20)是相同的,只是会限制可以表示的值范围。当存储时使用的存储空间依然是4字节。

2、实数

实数类型存储空间用途
FLOAT4 字节单精度浮点数
DOUBLE8 字节双精度浮点数值,精度比float高
DECIMAL

对DECIMAL(M,D) ,max(M,D)+2

小数值[精度十分高]
  • 如果要使用小数的话,直接用DECIMAL就好

3、字符串

类型说明最大长度
CHAR(N)定长字符255
VARCHAR(N)变长字符16384
BLOB(N)二进制大对象16K
TEXT(N)大对象16K
  • 什么时候用char:存储很短的字符串,或者所有值都接近一个长度;经常变更的数据:不容易产生碎片;非常短的列;
  • 什么时候使用varchar:列的更新很少:不容易产生碎片;大部分场景

4、日期类型

类型存储空间说明最大长度
DATETIME8个字节与时区无关'1000-01-01 00:00:00'到'9999-12-31 23:59:59'
TIMESTAMP4个字节时区转化‘1970-01-01 00:00:01” UTC ~ “2038-01-19 03:14:07’

选择datetime.

5、集合类型

  • ENUM类型最多允许65536个值;
  • SET类型最多允许64个值;
  • enum和set适合存储固定信息,比如人的性别,产品状态

 

总结:

  • 自增主键:int/bigint      推荐使用 int unsigned 上限为42亿;
  • 有限而且固定值列:如  enum('男','女') not null ,  status enum('开启','关闭') not null
  • 订单状态字段:int(1)/varchar(2) ; 然后去字典表中定义其各种值对应的含义;
  • 日期:datetime;
  • 货币/小数:decimal(11,2);

 

原则:

  • 能用数字类型的地方不要用字符串类型;
  • 除了特定需要精确数字类型的情况,浮点型比DECIMAL类型存储空间更小,计算也更加高效;
  • 能使用TIMESTAMP的场景尽量使用TIMESTAMP;
  • 整型类型指定长度信息不影响空间,字符串类型指定长度信息则影响存储空间

最后

以上就是坚定期待为你收集整理的mysql数据库设计表时数据类型的选择总结:原则:的全部内容,希望文章能够帮你解决mysql数据库设计表时数据类型的选择总结:原则:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部