INT(M)表示什么意思?

根据官方文档描述,int(M)中的M表示数据显示的宽度,与实际存储的长度无关。

1、也就是int(3)和int(11)能够存储的数据是一样的,都是从-21474836482147483647(或者0-4294967295)。

2、int(M)只有联合zerofill参数才能有意义,否则int(3)和int(11)没有任何区别。

下面用实例来证明上述两句话:

1、创建测试表,具有int(3)、int(11)、int三个字段

create table test_int(id int(3) unsigned not null,uid int(11) unsigned not null,uuid int unsigned not null );

下面插入int无符号能够存储的最大值:

insert into test_int values(4294967295,4294967295,4294967295);

(product)[email protected] [a]> select * from test_int;+------------+------------+------------+| id         | uid        | uuid       |+------------+------------+------------+| 4294967295 | 4294967295 | 4294967295 |+------------+------------+------------+1 row in set (0.00 sec)

【结论1】通过上述实验,对于没有加上zerofill参数的int、int(3)、int(11)无论在存储上还是在显示上都毫无区别。

2、创建测试表,具有int(3)、int(11)、int三个字段同时加上zerofill参数

(product)root@localhost [a]> create table test_int1(id int(3) unsigned zerofill not null,uid int(11) unsigned zerofill not null,uuid int unsigned zerofill not null );
Query OK, 0 rows affected (0.14 sec)

(product)root@localhost [a]> insert into test_int1 values(4294967295,4294967295,4294967295);
Query OK, 1 row affected (0.03 sec)

(product)root@localhost [a]> insert into test_int1 values(1,4294967295,110000);
Query OK, 1 row affected (0.00 sec)

(product)root@localhost [a]> select * from test_int1;
+------------+-------------+------------+
| id         | uid         | uuid       |
+------------+-------------+------------+
| 4294967295 | 04294967295 | 4294967295 |
|        001 | 04294967295 | 0000110000 |
+------------+-------------+------------+
2 rows in set (0.00 sec)

【结论2】通过上述实验,对于加上zerofill参数的int、int(3)、int(11),不足M宽度的,用0补充,否则不影响显示。

时间: 2024-07-29 16:58:28

INT(M)表示什么意思?的相关文章

numeric and int in sql server

类型映射 https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-data-type-mappings C#关键字 decimal https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/decimal The decimal keyword indicates a 128-bit data type. Compa

mysql中int、bigint、smallint和tinyint的区别与长度

对比发现 int bigint smallint 和 tinyint 类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是 : int             -------     int(11) bigint       -------     bigint(20) smallint   -------     smallint(6) tinyint     -------     tinyint(4) 下面是这几种类型的取值范围 参考:http://www.2cto.com/d

int、str、list、tuple、dict补充

一.int a = 123 b = a# a与b指向同一个地址值 c = 123 d = 123 e = 123 #d.c.e当在-5~257这个范围时,都指向一个地址值(Python优化的结果,当超出这个范围,id与之不同) 二.str a. name = "你猜" for i in name: print(i) bytes_name = bytes(i, encoding='utf-8')# 字符转换成字节 print(byte_name)# 16进制表示 for byte in

Java进阶(三十四)Integer与int的种种比较你知道多少?

Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱.所以我对它们进行了总结,希望对大家有帮助. 首先看代码: package

C# 与数据库中字段类型 Int16(short), Int32(int), Int64(long)的取值范围、区别 。string长度

一开始看到Int16, Int32, Int64这三种类型就觉得有点怪, 为什么要整个数字结尾的, 挺怪的. 昨天互相想到, ms这么干就是想让大家一眼就知道这个数据类型占多大空间吧. Int8, 等于byte, Int16, 等于short, 占2个字节. -32768 32767 Int32, 等于int, 占4个字节. -2147483648 2147483647 Int64, 等于long, 占8个字节. -9223372036854775808 9223372036854775807

C/C++中各种类型int、long、double、char表示范围(最大最小值)(转)

1 #include<iostream> 2 #include<string> 3 #include <limits> 4 using namespace std; 5 6 int main() 7 { 8 cout << "type: \t\t" << "************size**************"<< endl; 9 cout << "bool: \t

mysql中bigint、int、mediumint、smallint 和 tinyint的取值范

mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下:1.bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到 18446744073709551615.一位为 8 个字节. 2.int 一个正常大小整数.有符号

Reverse Integer - 反转一个int,溢出时返回0

Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 若反转的数溢出,直接返回0 可以用计算结果来判断溢出,也可以用因数来判断 Java代码实现: 1 public class ReverseInteger { 2 public static int reverseInt(int x){ 3 if (x == 0) { 4 return

Int.Parse与ConvertToInt的区别

最近在公司做一个项目的时候,在某次 跟组长讨论的时候.对一个简单的线发生了一些讨论.感觉挺有收获的.现在来总结一下. 在代码开发的时候,底层代码,不要写try-catch.因为写异常处理之后,代码的执行效率会大大的降低.底层的代码,不写异常,但是要经过严格的测试,确保正确.而对于界面层来说,必须接收异常.程序崩溃是非常不友好的.而且也降低了用户对你程序的信任. 对几个小问题的整理: 1.try-catch是否影响效率 自己简单测试了一下,感觉不到效率有什么变化. 然后查找一系列相关博客.发现了一

华为刀片,IBM刀片服务器将外部EXT端口流量复制给内部INT端口的实现方法不同

如何在刀片服务器中将外部端口EXT的流量复制给内部INT端口用于采集DNS流量 (1)对于IBM刀片服务器的北电Nortel_32R1860交换模块112.4.20.12DNS抓包的问题已经搞定 经过摸索和测试,感觉北电的交换机模块不是采用镜像命令来实现复制流量(虽然有相应的port-mirroring monitor-port...命令,但并不生效),而应该是在相同vlan就可以复制流量,如果要把ext3的流量复制给int14,只要把ext3和int14放在同一个vlan11下,都不打tagg