mysql整型存储字节与最大长度设置
2017-11-29 13:53
507 查看
转载地址:https://www.cnblogs.com/ayanmw/p/3640845.html
分析MySQL数据类型的长度
MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length)、VARCHAR(Length)、TINYINT(Length)、SMALLINT(Length)、MEDIUMINT(Length)、INT(Length)、BIGINT(Length)、FLOAT(Length, Decimals)、DOUBLE(Length, Decimals)和DECIMAL(Length, Decimals)。
然而,这些数据类型的长度,并不是都指数据的大小。具体说就是:
(1)CHAR、VARCAHR的长度是指字符的长度,例如CHAR[3]则只能放字符串"123",如果插入数据"1234",则从高位截取,变为"123"。 VARCAHR同理。
(2)TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的长度,其实和数据的大小无关!Length指的是显示宽度,举个例子:
可以看出,id的显示宽度为3,不足的左边补0,数据长度超过的则原样输出。如果没有zerofill,则看不出显示宽度,没有前导零。
(3)FLOAT、DOUBLE和DECIMAL的长度指的是全部数位(包括小数点后面的),例如DECIMAL(4,1)指的是全部位数为4,小数点后1位,如果插入1234,则查询的数据是999.9。过程如下
附录 常见MySQL数据类型(留作备忘)
分析MySQL数据类型的长度
MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length)、VARCHAR(Length)、TINYINT(Length)、SMALLINT(Length)、MEDIUMINT(Length)、INT(Length)、BIGINT(Length)、FLOAT(Length, Decimals)、DOUBLE(Length, Decimals)和DECIMAL(Length, Decimals)。
然而,这些数据类型的长度,并不是都指数据的大小。具体说就是:
(1)CHAR、VARCAHR的长度是指字符的长度,例如CHAR[3]则只能放字符串"123",如果插入数据"1234",则从高位截取,变为"123"。 VARCAHR同理。
(2)TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的长度,其实和数据的大小无关!Length指的是显示宽度,举个例子:
mysql> create table test(id int(3) zerofill); Query OK, 0 rows affected (0.09 sec) mysql> insert into test(id) values(1),(1234); Query OK, 2 rows affected (0.06 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from test; +------+ | id | +------+ | 001 | | 1234 | +------+ 2 rows in set (0.00 sec)
可以看出,id的显示宽度为3,不足的左边补0,数据长度超过的则原样输出。如果没有zerofill,则看不出显示宽度,没有前导零。
(3)FLOAT、DOUBLE和DECIMAL的长度指的是全部数位(包括小数点后面的),例如DECIMAL(4,1)指的是全部位数为4,小数点后1位,如果插入1234,则查询的数据是999.9。过程如下
mysql> alter table test add realnum decimal(4,1); Query OK, 2 rows affected (0.03 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> insert into test(id,realnum) values(2,1234); Query OK, 1 row affected, 1 warning (0.05 sec) mysql> select * from test; +------+---------+ | id | realnum | +------+---------+ | 001 | NULL | | 1234 | NULL | | 002 | 999.9 | +------+---------+ 3 rows in set (0.02 sec)
附录 常见MySQL数据类型(留作备忘)
类 型 | 大 小 | 描 述 |
CAHR(Length) | Length字节 | 定长字段,长度为0~255个字符 |
VARCHAR(Length) | String长度+1字节或String长度+2字节 | 变长字段,长度为0~65 535个字符 |
TINYTEXT | String长度+1字节 | 字符串,最大长度为255个字符 |
TEXT | String长度+2字节 | 字符串,最大长度为65 535个字符 |
MEDIUMINT | String长度+3字节 | 字符串,最大长度为16 777 215个字符 |
LONGTEXT | String长度+4字节 | 字符串,最大长度为4 294 967 295个字符 |
TINYINT(Length) | 1字节 | 范围:-128~127,或者0~255(无符号) |
SMALLINT(Length) | 2字节 | 范围:-32 768~32 767,或者0~65 535(无符号) |
MEDIUMINT(Length) | 3字节 | 范围:-8 388 608~8 388 607,或者0~16 777 215(无符号) |
INT(Length) | 4字节 | 范围:-2 147 483 648~2 147 483 647,或者0~4 294 967 295(无符号) |
BIGINT(Length) | 8字节 | 范围:-9 223 372 036 854 775 808~9 223 372 036 854 775 807,或者0~18 446 744 073 709 551 615(无符号) |
FLOAT(Length, Decimals) | 4字节 | 具有浮动小数点的较小的数 |
DOUBLE(Length, Decimals) | 8字节 | 具有浮动小数点的较大的数 |
DECIMAL(Length, Decimals) | Length+1字节或Length+2字节 | 存储为字符串的DOUBLE,允许固定的小数点 |
DATE | 3字节 | 采用YYYY-MM-DD格式 |
DATETIME | 8字节 | 采用YYYY-MM-DD HH:MM:SS格式 |
TIMESTAMP | 4字节 | 采用YYYYMMDDHHMMSS格式;可接受的范围终止于2037年 |
TIME | 3字节 | 采用HH:MM:SS格式 |
ENUM | 1或2字节 | Enumeration(枚举)的简写,这意味着每一列都可以具有多个可能的值之一 |
SET | 1、2、3、4或8字节 | 与ENUM一样,只不过每一列都可以具有多个可能的值 |
相关文章推荐
- mysql整型存储字节与最大长度设置
- mysql存储最大字段数,长度含义
- 设置powerDesigner生成mysql的表注释字符最大长度
- 修改mysql配置文件,group_concat设置为最大.默认1024个字节字符串.多条json会超出
- mysql 里面 group_concat函数设置最大字符长度
- Mysql中Sql语句最大长度设置方法
- 【MySQL运维】实例讲解MySQL中正确计算 Varchar 可存储的最大长度
- MySQL5.6 varchar在UTF8下存储汉字的长度
- 关于mysql varchar 类型的最大长度限制
- Summary_MySQL设置最大连接数
- MySQL 数据类型与存储长度
- 设置MySQL的最大连接数-普通只有100个
- MySQL最大连接数设置
- 可以得到某一列的最大记录,就可以设置长度了
- mysql varchar单行最大字节数65535和字段长度的正确理解
- Mysql数据数据[字节、长度、数据范围]一览表
- MySQL服务器最大连接数的合理设置
- docker上部署的mysql设置在网络传输中一次消息传输量的最大值max_allowed_packet
- Mysql 里CHAR和VARCHAR的最大长度及一些注意事项
- MYSQL 更改数据库data存储目录 创建用户 创建权限 设置远程访问的权限.