int设置长度保存后就变成0了 mysql 数据库int指定长度 您所在的位置:网站首页 数据库中int类型长度 int设置长度保存后就变成0了 mysql 数据库int指定长度

int设置长度保存后就变成0了 mysql 数据库int指定长度

2024-07-10 00:07| 来源: 网络整理| 查看: 265

文章目录前言总结实例

前言

平时开发中经常在Navicat中设计表,字段类型中会使用int类型(包括tinyint、smallint、mediumint、int、bigint等),在Navicat中有“长度”这一列,对数据库不熟悉的同事,就可能对这个长度有疑问。本篇博客主要用来介绍下相关知识点。

首先,大家先了解下int类型基本知识,可以看Mysql官网链接:https://dev.mysql.com/doc/refman/5.6/en/integer-types.html

总结

navicat设置MySQL字段类型的长度解释说明

1.varchar类型的长度是指这个字段的字符(字母或汉字)个数。

2.数字类型的长度就不是这个意思,更为复杂。

int类型:长度的设定值范围1-255(设置0时自动转为11,不设置时自动转为默认的11)(显示宽度),在此范围内任意长度值的字段值范围都是-2147483648-2147483647(即-2³¹-1~2³¹-1)

tinyint类型:长度设定值范围1-255(设置0时自动转为4,不设置时自动转为默认的4)(显示宽度),在此范围内任意长度值的字段值范围都是-128-127(-2⁷-1~2⁷-1)

如:

指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。

总结:显示宽度与存储大小或类型包含的值的范围无关。可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。当 mysql 为某些复杂的联结(join)生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度。

这个可选的宽度规格说明是用于在数值显示时,对某些值的宽度短于该列宽度的值进行左填补显示的,而不是为了限制在该列中存储值的宽度,也 不是为了限制那些超过该列指定宽度的值的可被显示的数字位 数。

要查看出不同效果记得在创建类型的时候加 zerofill这个值,表示用0填充,否则看不出效果的。

我们通常在创建数据库的时候都不会加入这个选项,所以可以说他们之间是没有区别的。

int(M) 在 integer 数据类型中,M 表示最大显示宽度。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。和数字位数也无关系 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。

没有zerofill,对int(等整数类型,如smallint)的显示,指定长度与否是没有任何影响的。 “长度”的设置对int型(包括和int型相关的类型如smallint等)数据的显示和大小没有任何影响,所以不用设置。对char型数据,长度的设置影响输入字符串的大小(即长度,char(4)意味着只能在表中输入最多四个字符)。

实例

1.varchar varchar(5):字段只允许最多5个字符或者5个汉字

2.int INT(1):字段值范围在-21474836482147483647(即-2³¹-12³¹-1)内的数值都可以insert、select、update,此处宽度指示器的数值1不起作用。可手动在navicat中改此字段的值,也可通过sql修改。

int(1)、int(4)、int(11)和int(110)表示意思是一样的。

INT(M) ZEROFILL,加上ZEROFILL后M才表现出不同。比如 INT(3) ZEROFILL,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果INT(3)和INT(10)不加ZEROFILL,则它们没有什么区别.M不是用来限制INT列内保存值的范围的.int(M)的最大值和最小值与UNSIGNED有关。

MySQL类型关键字后面的括号内指定整数值的显示宽度(例如,INT(11))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。

所以INT(1)和INT(11)默认是没有任何区别的!!!

MySql 5.0 以上的版本:

1、一个汉字占多少长度与编码有关:

utf8/utf8mb4:一个汉字 = 3个字节,英文是一个字节 gbk: 一个汉字 = 2个字节,英文是一个字节

2、varchar(n) 表示n个字符,无论汉字和英文,MySql都能存入 n 个字符,仅实际字节长度有所区别。

3、MySQL检查长度,可用SQL语言 SELECT LENGTH(fieldname) FROM tablename 这个命令可以看到各行使用的字节数。

3.float

float(7,3):字段总允许宽度为7,其中整数部分为4位(数值范围可在0-9999),小数部分为3位(数值范围可在0-999)

第一次设置此字段成功后,不可再次手动在navicat中此字段所在数据行的所有字段值也不可手动删除这条记录,但可通过sql修改。

4.tinyint

tinyint(1):(类似int)字段值范围在-128127(-2⁷-12⁷-1)内的数值都可以insert、select、update,此处宽度指示器的数值1不起作用。可手动在navicat中改此字段的值,也可通过sql修改。

5.double

double(7,3):字段总允许宽度为7,其中整数部分为4位(数值范围可在0-9999),小数部分为3位(数值范围可在0-999)

可手动在navicat中改此字段及同数据行其他字段的值,也可通过sql修改。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有