概述
说一下常用的几种数据类型
1、整数
整数类型 | 存储空间 | 范围(有符号) | 范围(无符号) |
---|---|---|---|
TINYINT | 8bit(1 字节) | (-128,127) | (0,255) |
SMALLINT | 16bit(2 字节) | (-32 768,32 767) | (0,65 535) |
MEDIUMINT | 24bit(3 字节) | (-8 388 608,8 388 607) | (0,16 777 215) |
INT或INTEGER | 32bit(4 字节) | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) |
BIGINT | 64bit(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、实数
实数类型 | 存储空间 | 用途 |
---|---|---|
FLOAT | 4 字节 | 单精度浮点数 |
DOUBLE | 8 字节 | 双精度浮点数值,精度比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、日期类型
类型 | 存储空间 | 说明 | 最大长度 |
---|---|---|---|
DATETIME | 8个字节 | 与时区无关 | '1000-01-01 00:00:00'到'9999-12-31 23:59:59' |
TIMESTAMP | 4个字节 | 时区转化 | ‘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数据库设计表时数据类型的选择总结:原则:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复