MySQL数据库中几种数据类型的长度

摘要:
在MySQL中创建新表自然需要设置字段长度,但有时会发现长度限制在某些字段类型中不起作用?字段长度是字节还是字符?int似乎只在其自身类型的值范围内,而char实际上仅限于五个字符。1.整数类型的宽度与数据类型的值无关。显示宽度仅表示MySQL可以显示的最大位数。如果值的位数小于指定的宽度,则将用空格填充;如果插入的值大于显示宽度。

在MySQL里新建表自然会涉及设置字段长度,但有时会发现长度限制在一些字段类型中不起作用?字段长度是按字节算还是字符算?

如图中:int看起来只要还在本身类型取值范围内就行,字段长度没有起到作用;而char确实被限制在了5个字符中,甚至不是字节。

背后玄机在于不同数据类型的规则不同。

MySQL数据库中几种数据类型的长度第1张

1、整数类型

这里的宽度和数据类型的取值是没有关系的,显示宽度只指明Mysql最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充;如果插入了大于显示宽度的值,只要该值不超过该类型的取值范围,数值依然可以插入,而且能够显示出来。

例如int整型只要数值在-2147483648~2147483647之间,不会出问题,连警告都没有

若不设置字段长度,系统会默认tinyint(4),smallint(6),mediumint(9),int(11),bigint(20),也就是他们的取值范围。

2、字符型

宽度就有用了,确确实实限制了无论是char或者varchar,超出字段长度的内容将会丢失。当然,对于varchar设置255也不会浪费,毕竟是变长存储

3、浮点

浮点就没什么疑问了,按照他自己的规则来。这里是3个数,小数后2位,输入超范围就输出最大的就完事了

MySQL数据库中几种数据类型的长度第2张

免责声明:文章转载自《MySQL数据库中几种数据类型的长度》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇百度地图更改标记为自定义图片,QT下使用bootstrap-table中时间戳转换为日期格式。下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

redis学习(一)

一.redis简介 Redis是基于内存、可持久化的日志型、key-value高性能存储系统。关键字(Keys)是用来标识数据块。值(Values)是关联于关键字的实际值,可以是任何东西。有时候你会存储字符串,有时候是整数,还有时候你会存储序列化对象(使用JSON、XML等)。在大多数情况下,Redis会把值看做是一个字节序列,而不会关注它们实质上是什么。...

Mysql 日期时间类型详解

MySQL 中有多种数据类型可以用于日期和时间的表示,不同的版本可能有所差异,表3-2 中列出了MySQL 5.0 中所支持的日期和时间类型。 这些数据类型的主要区别如下: * 如果要用来表示年月日,通常用DATE 来表示。 * 如果要用来表示年月日时分秒,通常用DATETIME 表示。 * 如果只用来表示时分秒,通常用TIME 来表示。 * 如...

使用bcrypt对数据加密

使用bcrypt对数据加密 ​ 这是一篇随笔,用于记录在项目中用到一个比较的你npm包。这个包之所以这个货因为他的安全系数比以前用到的类似于md5,sha1要高,因为bcrypt加密,同样一个值,你每次加密出来的值是不一样的。原来的md5加密就做不到这一点。好了废话不多说,如果对bcrypt的算法感兴趣的话,大佬们可以去研究一下。下面我们来讲讲他的使用方法...

sass揭秘之变量

全局变量和局部变量 要了解sass或less的变量,有必要先了解下js的变量定义,先来一段js的代码: var a = 1; (function(){ a = 5; })(); console.log(a);//5 上面这段代码,匿名函数里面的a因为没有使用var关键字来定义,所以当我们在函数外打印a的时候,得到的是5,改变了一开始定义的1 var...

Elasticsearch SQL特性研究

Elasticsearch SQL特性研究 简介 从Elasticsearch 发布以来,一直有自己的查询语言(DSL),从6.3版本开始,Elasticsearch 开始支持SQL查询语言。即6.3、6.4、6.5、6.6、6.7、7.0均支持SQL查询。但是6.7之前SQL功能是实验性质的,6.6进入beta特性列表,6.7后成为官方正式支持的特性。其...

使用memset()要注意

原型如下: ptr是要写入的内存块的指针,value是要写入的值,num是从ptr指向的首地址开始一共要写入的字节数。 要注意num传入的参数 错误示范:    实际上sizeof(InDegree)是4,等于sizeof(int)。也就是说这里的num参数只是一个指针的大小,没有完成初始化工作,除了第一个数组元素外,剩下的都是随机值。 应该改成:...