mysql int(11)

本文详细解析了MySQL INT类型中的zerofill功能及其应用,通过实例展示了如何在数据库插入操作中使用zerofill来实现数字的前置零填充,以及INT类型的存储与宽度设置之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总结,int(M)zerofill,加上zerofill后M才表现出有点点效果,比如int(3)zerofill,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果int(3)和int(10)不加zerofill,则它们没有什么区别.M不是用来限制int个数的.int(M)的最大值和最小值与undesigned有关,最下面那副图有说明.

mysql> createtable t (t int(3) zerofill);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t set t = 10;
Query OK, 1 row affected (0.00 sec)

mysql> select * from t;
+——+
| t |
+——+
| 010 |
+——+
1 row in set (0.11 sec)

Zerofill with default width, the same as int(10):

mysql> create table t (t int zerofill);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into t set t = 10;
Query OK, 1 row affected (0.02 sec)

mysql> select * from t;
+————+
| t |
+————+
| 0000000010 |
+————+
1 row in set (0.08 sec)

Without zerofill:

mysql> create table t (t int);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t set t = 10;
Query OK, 1 row affected (0.01 sec)

mysql> select * from t;
+——+
| t |
+——+
| 10 |
+——+

1 row in set(0.00 sec) 

mysql <wbr>int(3)与int(11)的区别

以上转载自http://hi.baidu.com/nancy0754/blog/item/2f3ea13a957a27d7d5622535.html

1 bytes =8 bit ,一个字节最多可以代表的数据长度是2的8次方 11111111 在计算机中也就是

-128到127

1.BIT[M]

位字段类型,M表示每个值的位数,范围从1到64,如果M被忽略,默认为1

2.TINYINT[(M)][UNSIGNED] [ZEROFILL]  M默认为4

很小的整数。带符号的范围是-128到127。无符号的范围是0到255。

3. BOOL,BOOLEAN

是TINYINT(1)的同义词。zero值被视为假。非zero值视为真。

4.SMALLINT[(M)] [UNSIGNED] [ZEROFILL]M默认为6

小的整数。带符号的范围是-32768到32767。无符号的范围是0到65535。

5.MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]M默认为9

中等大小的整数。带符号的范围是-8388608到8388607。无符号的范围是0到16777215。

6. INT[(M)] [UNSIGNED][ZEROFILL]  M默认为11

普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。

7.BIGINT[(M)] [UNSIGNED] [ZEROFILL]M默认为20

大整数。带符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。

注意:这里的M代表的并不是存储在数据库中的具体的长度,以前总是会误以为int(3)只能存储3个长度的数字,int(11)就会存储11个长度的数字,这是大错特错的。

其实当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度,在使用int(3)的时候如果你输入的是10,会默认给你存储位010,也就是说这个3代表的是默认的一个长度,当你不足3位时,会帮你不全,当你超过3位时,就没有任何的影响。

前天组管问我int(10)与int(11)有什么区别,当时觉得就是长度的区别吧,现在看,他们之间除了在存储的时候稍微有点区别外,在我们使用的时候是没有任何区别的。int(10)也可以代表2147483647这个值int(11)也可以代表。

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

我们通常在创建数据库的时候都不会加入这个选项,所以可以说他们之间是没有区别的。
<think>首先,用户的问题是关于MySQLINT(11)数据类型的取值范围,特别是最大值和最小值。用户引用了几个来源,我需要参考这些引用。回顾引用:-引用[2]:提到MySQL支持整数类型,包括INT,并给出范围。-引用[3]:解释INT(11)的显示宽度不影响实际取值范围。-引用[4]:详细列出了各种整数类型的字节大小和范围。-引用[5]:是关于分组查询的,不太相关。-引用[1]:是关于求最大值和最小值的甘特图,不直接相关。关键引用是[2]、[3]和[4]。引用[3]明确指出,INT(3)INT(11)的显示宽度不影响实际存储大小或取值范围。引用[4]给出了INT的范围是(-2147483648到2147483647)。所以,INT数据类型的实际范围是固定的,无论显示宽度如何。INT使用4个字节存储,因此有符号范围是-2147483648到2147483647,无符号范围是0到4294967295。用户指定了INT(11),这只是一个显示宽度,不影响实际范围。因此,最大值和最小值取决于是否有符号。在MySQL中,默认情况下,整数类型是有符号的。但可以指定UNSIGNED。从引用[4]:"int(m)4个字节范围(-2147483648~2147483647)",这是有符号的。引用[3]:"INT(3)会占用4个字节的存储空间,并且允许的最大值也不会是999,而是INT整型所允许的最大值。"所以,对于INT(11),最大值是2147483647,最小值是-2147483648(如果有符号)。我应该确认是否有无符号的可能性。用户没有指定,但一般默认是有符号的。在回答中,我需要结构化:-解释INT(11)的含义。-给出实际取值范围。-参考引用。系统指令要求:-行内数学表达式用$...$,例如$2^{31}-1$。-独立公式用$$...$$,但这里可能不需要。-使用中文。-生成相关问题。-在引用的段落末尾添加引用标识,如[^1]。回答结构:1.解释INT(11):显示宽度是11,不影响实际范围。2.给出范围:有符号时最小$-2147483648$,最大$2147483647$;无符号时最小$0$,最大$4294967295$。3.引用相关部分。生成相关问题:-基于主题,如其他整数类型的范围、如何指定无符号、显示宽度的作用等。相关问题示例:1.MySQL中TINYINT的取值范围是什么?2.如何创建无符号INT列?3.显示宽度在MySQL中有什么实际作用?最后,确保回答真实可靠。</think>### MySQLINT(11)数据类型的取值范围 在MySQL中,`INT(11)`是一种常用的整数数据类型。`INT(11)`中的数字"11"表示**显示宽度**(display width),它仅影响数据在客户端工具(如命令行或GUI工具)中的显示格式,**不影响实际存储大小和取值范围**。实际取值范围由数据类型`INT`本身决定,因为它固定占用4字节(32位)存储空间[^3][^4]。以下是详细解释: #### 1. **实际取值范围(与显示宽度无关)** - **有符号INT(默认情况)**: 由于是有符号整数(signed),最高位用于表示正负号,因此取值范围为: - 最小值:$-2^{31} = -2147483648$ - 最大值:$2^{31}-1 = 2147483647$ 数学表达式:$$ \text{范围} = [-2147483648, 2147483647] $$ - **无符号INT(需显式指定)**: 如果定义列为`INT(11) UNSIGNED`,则所有位用于表示非负数,取值范围扩大: - 最小值:$0$ - 最大值:$2^{32}-1 = 4294967295$ 数学表达式:$$ \text{范围} = [0, 4294967295] $$ 无论定义为`INT(11)`、`INT(5)`或其他显示宽度,实际存储范围均保持不变。例如,`INT(3)`仍能存储值`2147483647`(超出显示宽度时可能显示不全,但不影响存储和计算)[^3][^4]。 #### 2. **显示宽度的作用** - 显示宽度(如`INT(11)`中的"11")仅用于格式化输出。例如,在`ZEROFILL`选项中,数字不足11位时会用前导零填充(如`00000001234`),但对数据值无约束[^3]。 - 实际存储大小固定为4字节,与其他`INT`类型一致(如`INT(1)`或`INT(20)`)[^3][^4]。 #### 3. **参考依据** - 引用[^3]和[^4]明确说明:`INT`类型的取值范围由字节大小决定,显示宽度仅影响显示格式。引用[^2]补充了MySQL整数类型的通用范围标准[^2][^3][^4]。 #### 4. **实际示例** - 创建表时指定`INT(11)`: ```sql CREATE TABLE example ( id INT(11) NOT NULL AUTO_INCREMENT, -- 有符号,范围 [-2147483648, 2147483647] age INT(11) UNSIGNED -- 无符号,范围 [0, 4294967295] ); ``` - 查询极值(参考引用[^5]的方法): ```sql -- 查询表内id列的最大值和最小值 SELECT MAX(id) AS max_id, MIN(id) AS min_id FROM example; ``` ### 总结 - **`INT(11)`最小值**:$-2147483648$(有符号)或 $0$(无符号)。 - **`INT(11)`最大值**:$2147483647$(有符号)或 $4294967295$(无符号)。 - **关键点**:显示宽度不改变实际范围,仅用于输出格式化。建议在设计表时根据需求选择是否添加`UNSIGNED`属性[^2][^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值