int mysql_「MYSQL」MYSQL中的int(11)到底代表什么意思?

一、前言

在工作中经常要与mysql打交道,但是对mysql的各个字段类型一直都是一知半解,因此写本文总结记录一番。

二、简介

6918625adea77bebc2c28e50ab93a73b.png

对于int类型的一些基础知识其实上图已经说的很明白了,在这里想讨论下常用的int(11)代表什么意思,很长时间以来我都以为这代表着限制int的长度为11位,直到有天看到篇文章才明白,11代表的并不是长度,而是字符的显示宽度,在字段类型为int时,无论你显示宽度设置为多少,int类型能存储的最大值和最小值永远都是固定的,这里贴一些原文片段

The number in the parenthesis does not determines the max and min values that can be stored in the integer field. The max and min values that can be stored are always fixed.

The display width of the column does not affects the maximum value that can be stored in that column. A column with INT(5) or INT(11) can store the same maximum values. Also, if you have a column INT(20) that does not means that you will be able to store 20 digit values (BIGINT values). The column still will store only till the max values of INT.

那么照文中所说,所以无论怎么设置int类型的显示宽度,int所能存储的最大值和最小值是固定的,那么这个显示宽度到底有什么用呢?

当int字段类型设置为无符号且填充零(UNSIGNED ZEROFILL)时,当数值位数未达到设置的显示宽度时,会在数值前面补充零直到满足设定的显示宽度,为什么会有无符号的限制呢,是因为ZEROFILL属性会隐式地将数值转为无符号型,因此不能存储负的数值。

具体用以下代码解释。

首先创建一张表:

CREATE TABLE int_demo (

id INT(11) NOT NULL AUTO_INCREMENT,

a INT(11) NOT NULL,

b INT(11) UNSIGNED ZEROFILL NOT NULL,

c INT(5) DEFAULT NULL,

d INT(5) UNSIGNED ZEROFILL NOT NULL,

e INT(15) DEFAULT NULL,

PRIMARY KEY (`id`)

)

插入两条数据

INSERT INTO int_demo (a, b, c, d, e) VALUES (1, 1, 1, 1, 1);

INSERT INTO int_demo (a, b, c, d, e) VALUES (1234567890, 1234567890, 1234567890, 1234567890, 1234567890);

select * from int_demo;

id

a

b

c

d

e

1

1

00000000001

1

00001

1

2

1234567890

01234567890

1234567890

1234567890

1234567890

注释:如果用navicate软件查询出来并不会显示左边的0,但把数据导出时可看到真实的数据,猜测是软件对数据格式进行了处理?

三、结论

从上个例子我们可以得出以下几个结论:

如果一个字段设置了无符号和填充零属性,那么无论这个字段存储什么数值,数值的长度都会与设置的显示宽度一致,如上述例子中的字段b,插入数值1显示为00000000001,左边补了10个零直至长度达到11位;

设置字段的显示宽度并不限制字段存储值的范围,比如字段d设置为int(5),但是仍然可以存储1234567890这个10位数字;

设置的字符宽度只对数值长度不满足宽度时有效,如d字段int(5),插入1时,长度不足5,因此在左边补充4个零直到5位,但是插入1234567890时超过了5位,这时的显示宽度就起不了作用了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysqlfront连接MySQL错误_使用MySql-Front远程连接MySQL失败的解决办法

新安装的mysql默认是root用户,且密码为空,默认端口是3306。通过SSH可以连接并且登录,但是使用MySQL-Front等客户端连接失败。解决办法:1.确认Linux防火墙3306端口打开。在/etc/sysconfig/iptables文件中,添加一行&…

mysql数据库多少张表会影响性能_mysql数据库多少张表会影响性能

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

mysql初级数据库_MYSQL初级数据库操作

MYSQL是个好东西啊,只是比较会折腾人,所以我先记录一下MySQL 数据备份的基础知识,省得以后又去东找西找Windows文件名、目录名不区分大小写,Linux区分大小写查看MySQL中的数据库这里有一个shop的数据库,information_sc…

odp 加固 mysql_creator是一款为php框架odp的脚手架工具

creator项目介绍creator是一款为php框架odp的脚手架工具,主要用于生成dao层,dataService层,pageService层,controller层,action层,避免重复性劳动和提高工作效率软件架构软件架构说明使用说明(ps:配置已支持当前项目组文件路径,放置在app同级…

java中的mod运算_Java中的运算符与控制语句

运算符与控制语句是Java语言中运用最为基础也是最为广泛的,所以今天就详细的介绍下运算符与控制语句。一、运算符1.算数运算符1).单目运算符: 、- 、 、-- A: 表示 a.正号(一般省略);b.加法运算&#xff1b…

mysql如何查看表拥有的键_如何查看表或列的所有外键?

白板的微信表:SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAMEFROMINFORMATION_SCHEMA.KEY_COLUMN_USAGEWHEREREFERENCED_TABLE_SCHEMA ANDREFERENCED_TABLE_NAME TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFER…

laravel 自带的用户登录视图路径_Laravel实现找回密码及密码重置,详细操作

Laravel实现找回密码及密码重置功能在php实现与在这里实现会有什么区别呢,下面我们来看看Laravel中的例子,在php中就不介绍了大家都懂的。忘记密码是应用中常见的场景之一,Laravel5也提供了对密码重置的支持,我们只需稍微做一下配…

yii不能没有提示验证错误信息_安装Mac系统时提示”应用程序副本不能验证 它在下载过程...”的解决方法...

在安装旧版本macOS系统时,比如macOS Mojave 10.14、macOS Sierra、OS X El Capitan、OS X Yosemite、OS X Mavericks等系统,会出现错误无法安装:“应用程序副本不能验证 它在下载过程中可能已遭破坏或篡改”,“This copy of the I…

mysql hugepage_因未配置Hugepage会话数添增悲剧案例

今天一朋友反馈他们的一个数据库hang住了,通过ssh也不能登录系统,他们没有办法重启系统解决问题,现在想让我帮忙找出问题原因分析awr得出询问朋友,他们的库一般session保持在200个左右,这次突然飙升到750以上,属于异常情况分析监听日志看到在截图的时间内,整体访问较频繁,某个i…

ip地址自动切换器_网络IP切换器IPProviders下载_IPProviders官方版下载1.1.22

IPProviders官方版是非常强大的ip切换器助手,可以进行ip地址更换,网关和dns更改。使用方法很简单,用户只需要提前设置好ip地址,需要切换的时候就可以任意切换了,让你可以随意切换更改自己的IP地址,非常方便…

mysql心得体会一百字_MYSQL CPU 100%实例详解

MYSQL CPU 100%实例详解2011/7/2 11:19:19作者:xy我要评论(0)自己的一台主机(Windows 2003 IIS PHP MYSQL )近来 MySQL 服务进程 (mysqld-nt.exe) CPU 占用率总为 100% 高居不下。此主机有10个左右的 database, 分别给十个网站调用。据朋友测试,导致 …

mysql联合索引like_MySQL全文索引、联合索引、like查询、json查询速度大比拼

查询背景有一个表tmp_test_course大概有10万条记录,然后有个json字段叫outline,存了一对多关系(保存了多个编码,例如jy1577683381775)我们需要在这10万条数据中检索特定类型的数据,目标总数据量:2931条SELECTCOUNT(*) …

mysql 代替分号_除了使用分号(;)终止符之外,还有其他可执行MySQL查询的内置命令吗?...

借助以下内置命令,即使不使用分号(;)终止符,MySQL也可以执行查询。自我我们可以通过使用\ G选项来使用此命令。这意味着将当前语句发送到要执行的服务器,并以垂直格式显示结果。当我们使用\ G并在一条语句(单行或多行)中省略分号(;)时&#x…

python在线包安装mysql_python安装mysql的依赖包mysql-python操作

一般情况下,使用pip命令安装即可:[rootdthost27 ~]# pip install mysql-python但是在实际工作环境中,往往会安装失败,这是因为系统缺少mysql的相关依赖组件。所以必须先安装mysql-devel类的包,而且必须要对应好mysql客…

python数组切片赋值后不改变原数组_js数组操作---改变原数组和不改变原数组的方法整理...

一、改变原始数组的方法:1、pop()删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不 改变数组,并返回 undefined 值。arrayObject.pop() 。2、push()push() 方…

收藏列表放入MySQL还是redis_mysql导入redis

程序遍历MySQL然后插入Redis,效率极低。利用redis-cli命令行工具有一个批量插入模式,是专门为批量执行命令设计的。可以把Mysql查询的内容格式化成redis-cli可用数据格式。1, 根据表创建一个sql,将数据转换为redis可用的格式(1) 表…

java 虚拟机内存不足_JAVA虚拟机内存不够解决办法

软件152笪世海1. 查找matlab根路径.在matlab命令行中敲入:matlabroot显示根路径,如:C:\MATLAB72.查看当前Java虚拟机最大堆内存, 敲入:java.lang.Runtime.getRuntime.maxMemory3.查看Java虚拟机版本.敲入:version -java4.在 $MATLAB\bin\$ARCH 路径下新建java.opts文件.$MATLAB…

Java发送会议邮件 时区_【上海校区】基于JavaMail的日历(会议)邮件发送实现

[Java] 纯文本查看 复制代码/*** 发送会议邀请邮件** param toMailAddress 收件人(邀约人),支持多个* param mailSubject 邮件主题* param mailContent 邮件内容(建议传入velocity去构建生成的HTML内容)* param summary 摘要,即日历(日程)上显示的标题* …

java saxexception_SAXException

公布的WebService别人调用时出现org.xml.sax.SAXexception发布的WebService别人调用时出现org.xml.sax.SAXexception发布的webservice,返回的一个json,php调用的时候有一定几率出现org.xml.sax.SAXexception,不知道是什么原因3热度com.ibm.ws.jsp.JspCor…

fun函数python_Python函数

Python函数一般函数定义方式def sum(a, b): return ab##返回a与b的和123一些概念与特性嵌套Python的函数是可以嵌套定义的def Fun1(): print("Runing Fun1...") def Fun2(): print("Runing Fun2...") Fun2()12345但是要注意在内部定义就只能在内部使用&…