MySQL常见字段大小

MySQL数据库常见字段的大小

数字型

类型 大小 范围(有符号) 范围(无符号UNSIGNED) 用途
TINYINT 1字节 -128-127 0-255 小整数值
SMALLINT 2字节 -215-215-1 0-216-1 大整数值
MEDIUMINT 3字节 -223-223-1 0-224-1 大整数值
INT或INTEGER 4字节 -231-231-1 0-232-1 大整数值
BIGINT 8字节 -263-263-1 0-264-1 极大整数值
FLOAT 4字节 单精度浮点数值
DOUBLE 8字节 双精度浮点数值
DECIMAL(M,D) 对DECIMAL(M,D)
,如果M>D,为
M+2否则为D+2
依赖于M和D的值 依赖于M和D的值 小数值

字符类型

类型 存储量 用途
CHAR(M) 0-255字节 定长字符串
VARCHAR(M) 0-255字节 变长字符串
TINYTEXT 0-255字节 短文本字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LOGNGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据

时间类型

类型 大小(字节) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/‘838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DDHH:MM:SS 混合日期和时间值
TIMESTAMP 8 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

枚举类型

类型 大小(字节) 最多成员数
ENUM 64 65535
SET 64 64

MySQL字段选择

1.当数据存储的是字符:且长度是一个固定区间定值的话就可以考虑使用char来进行存储,如果字符长度是未知的且长度变化特别明显的话,这个时候最好使用varchar来存储。但是不管使用的是哪种字段来进行存储,都不要把字段的初始长度设置为最大化,应该是根据业务需求来存储最合适的长度字段。

2.数据库设计过程中尽量使用int来作为字段类型,因为在所有的数据类型中int不管是存储空间还是执行速度方面都是最好的。例如:如果业务中存储的都是数据的话而且长度不是特别长的话,就可以考虑使用int来进行存储,或者业务中要对数据进行排序的时候需要使用某一标识权重之类的,也可以使用int来进行存储。但是不要因为int高效,而有意识的把所有字段都设计成int来处理,最终还是要根据业务的具体需求来设计相应的字段。

3.在涉及到金额的时候:如果对精度要求不高的情况下可以优先使用float,其次是使用double来进存储。如果对精度要求比较高的情况下最好使用decimal来存储,但是相应的它 的效率没有float和double那么高效。具体使用哪种还是要根据业务的具体需求来选择。

4.关于date和datetime的用法:就要看你想要存储时间的精确值了,如果仅仅是想要精确到天的话使用date就可以了,如要要精确到秒一级别的就要使用datetime了。有时候大家使用datetime的使用却只是存储到天的日期单位时,这个时候就会自动添加00:00:00在数据的后面,作为秒一级别的数据。

5.int括号后的取值:int(5)和int(10)的区别是什么?想必大家也很好奇吧,其实5和10其实只是显示长度的却别而已,也就是不管int(x)x的值是什么值,存储数字的取值范围还是int本身数据类型的取值范围,x只是数据显示的长度而已。

6.varchar(10)和char(10)的差别是什么:存储超过时候会发生什么问题呢?这个问题其实也相对经典,我也是整了很久才搞清楚的。在MYSQL5,5以后,varchar(x)x中范其实是存储字段的长度范围,就是一个字符代表一个长度,不管这个字符是汉子还是字符都算是一个长度单位。varchar虽然设置长度值,可是因为varchar是可变的长度类型,也就是当存储的长度小于x时候,其实实际的存储空间不是x而是实际存储的字符长度+一些标示空间。当然如果超过x的长度的话还是会报错的。而char(y)中y的值就是存储空间实际的存储长度,超过这个长度的话就会报错。

7.BLOB与TEXT:TEXT与BLOB的主要差别就是BLOB保存二进制数据,TEXT保存字符数据。目前几乎所有博客内容里的图片都不是以二进制存储在数据库的,而是把图片上传到服务器然后正文里使用<img>标签引用,这样的博客就可以使用TEXT类型。而BLOB就可以把图片换算成二进制保存到数据库中。blob无字符集,text有字符集,存储中文时建议使用text存储。

数据库字段与JAVA数据类型的对应关系

MySQL字段大小与选择

相关文章:

  • 2021-07-28
  • 2021-10-18
  • 2022-12-23
  • 2022-01-13
  • 2021-11-05
  • 2022-12-23
  • 2022-12-23
  • 2021-11-20
猜你喜欢
  • 2021-10-10
  • 2022-12-23
  • 2021-12-10
  • 2022-01-17
  • 2022-12-23
  • 2022-02-09
相关资源
相似解决方案