mysql 整形的长度问题

tinyint 

有符号的范围是-128至127;

无符号的范围是0到255,2的8 次方-1;

存储大小为 1 字节。

smallint 

有符号的范围是-32768至32767;

无符号的范围是0到65535,2的16次方-1;

存储大小为 2 个字节。 

mediumint

有符号的范围是-8388608至8388607;

无符号的范围是0到16777215,2的24次方-1;

存储大小为 3 个字节。

int

有符号的范围是-2147483648至2147483647;

无符号的范围是0到4294967295,2的32次方-1;
存储大小为 4 个字节。

bigint

有符号的范围是-9223372036854775808至9223372036854775807;

无符号的范围是0到18446744073709551615,2的64次方-1;

存储大小为 8 个字节。

mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill时有用
例如:int(3),如果实际值是2,如果列指定了zerofill,查询结果就是002,左边用0来填充。

注意:手机号虽然一般为纯数字,但是位数较长,若用int类型,若字段设置无符号则会被存储成4294967295,int的最大值,所以如果想用整形可以使用bigint(1),不过一般网上资料显示手机号这个字段,为了避免各种问题,用varchar的更多一点。

时间: 2024-10-25 12:01:27

mysql 整形的长度问题的相关文章

[转]分析MySQL数据类型的长度【mysql数据字段 中length和decimals的作用!熟悉mysql必看】

你看到的这个文章来自于http://www.cnblogs.com/ayanmw 转载自:http://blog.csdn.net/daydreamingboy/article/details/6310907 分析MySQL数据类型的长度 MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length).VARCHAR(Length).TINYINT(Length).SMALLINT(Length).MEDIUMINT(Length).INT(Length).BIGINT(L

mysql修改字段长度及pymysql.err.DataError: (1406, "Data too long for column 'name' at row 1")错误

文章链接:修改字段:https://blog.csdn.net/xiejunna/article/details/78580682 错误分析:https://blog.csdn.net/qq_42142258/article/details/82782237 修改字段长度类型:https://www.cnblogs.com/freeweb/p/5210762.html 向mysql 插入数据并能显示一条数据再报错:pymysql.err.DataError: (1406, "Data too l

MySQL的varchar长度问题

From: http://blog.csdn.net/longyulu/article/details/7863737 http://dinglin.iteye.com/blog/914276 http://www.cnblogs.com/fakis/archive/2011/03/07/1976532.html 如果某一项中设置的是varchar(50) 那么对英文当然是50 那么对中文呢 utf-8的中文占3个字节 那么,这个varchar(50)是不是只能存16个汉字了? 不是这样的,my

【MySQL】行长度的一些限制

今天开发在导入数据的时候报一个错误: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs 原因:发现导入的数据单行长度较长. 官方文档的解决办法为: 1.垂直表字段拆分或者大字段合并(大字段最多不超过768,业务进行合并+拆分),divide your table

【MySQL】索引长度的一些限制

有同学问到InnoDB的索引长度问题,简单说几个tips. MySQL的每个单表中所创建的索引长度是有限制的,且对不同存储引擎下的表有不同的限制. myisam表,单列索引,最大长度不能超过 1000 bytes,否则会报警,但是创建成功,最终创建的是前缀索引(取前333个字符). myisam表,组合索引,索引长度和不能超过 1000 bytes,否则会报错,创建失败: innodb表,单列索引,超过 767 bytes的,给出warning,最终索引创建成功,取前缀索引(取前 255 字符)

关于mysql的字段长度含义问题。

int的长度可不是自己定义的,系统已经定义好了. 如果是varchar类型的 你定义一个1,绝对不能输入abc. int(m),integer(m) 32位整数(4字节....) 其实这个m跟INT能表示的范围没有关系,只要你选择了INT,INT是用4个字节表示,1个字节8位,若表示无符号数时可以表示的范围是 0 ------- 2^32-1次方 ,你可以存储任何在这个范围内的数字.但也不是说跟表示完全没关系,mysql中有个zerofll,当建表时选择了0 填充之后存储就会有很大的不同,这时如

mysql中 group_concat长度限制

//这个函数有长度限制,上了多次当.默认长度1024长度. select group_concat(id) from table; 要彻底修改,在MySQL配置文件(my.ini)中加上 group_concat_max_len = -1  # -1为最大值或填入你要的最大长度 #并重启mysql #在客户端执行语句: #show variables like "group_concat_max_len"; #如果为自己修改的值或4294967295(设置为-1时)则修改正确.

MySQL的字段长度和显示宽度

MySQL类型关键字后面的括号内指定整数值的显示宽度(例如,INT(11)).该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示. 所以INT(1)和INT(11)默认是没有任何区别的!!! 当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替.例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004. 请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成

mysql数据类型最大长度记录

MySQL中各数据类型的取值范围 转在这里,慢慢记下来. TINYINT -128 - 127 TINYINT UNSIGNED 0 - 255 SMALLINT -32768 - 32767 SMALLINT UNSIGNED 0 - 65535 MEDIUMINT -8388608 - 8388607 MEDIUMINT UNSIGNED 0 - 16777215 INT 或 INTEGER -2147483648 - 2147483647 INT UNSIGNED 或 INTEGER UN