mysql中数据类型附近的数字

mysql中数据类型附近的数字,mysql,Mysql,我读了那么多的帖子,但我还是没有领会要点 我创建了一个临时表来测试我的怀疑 create table ids(id int(1)); 我曾经认为,如果我指定int(1),那么我只能存储0-9。所以我尝试了以下方法 insert into ids(id) values(100000); 它起作用了!!然后我开始搜索以了解号码。在所有的帖子中,我都读到了数据类型表示宽度的数字。在mysql中,我仍然没有得到术语宽度。是指尺寸吗?如果是,以字节为单位的大小 如果我想实现我的想法,我应该在查询中更改

我读了那么多的帖子,但我还是没有领会要点

我创建了一个临时表来测试我的怀疑

create table ids(id int(1));
我曾经认为,如果我指定
int(1)
,那么我只能存储
0-9
。所以我尝试了以下方法

insert into ids(id) values(100000);
它起作用了!!然后我开始搜索以了解号码。在所有的帖子中,我都读到了数据类型表示宽度的数字。在mysql中,我仍然没有得到术语
宽度。是指尺寸吗?如果是,以字节为单位的大小

如果我想实现我的想法,我应该在查询中更改什么?还是应该从php代码中限制这一点


这个宽度对所有数据类型都是相同的吗?

手册已经明确了这一点

手册:

显示宽度仅存在于元数据中,用于应用程序

下面是一个演示(id的长度为1(
int(1)
);id2的长度为11(
int


您可以在char/varchar中指定数据/字节长度,但不能指定int-type,因为int-type在mysql中保留其默认长度/容量

假设int始终为
int(11)
,即使您指定了
int(2)
,并保留其默认值
4字节
,或
在有符号的情况下为-2147483648到+2147483647,在无符号的情况下为
0到4294967295

如果您只想存储最大127个整数值,则可以保留tinyint,如果保留到255,则tinyint为无符号


或者你想超越它,然后是smallint、mediumint、int和bigint。

好的。插入时如何确定它是否表示长度?INT(11)意味着无论怎样,您都希望整数最多显示11位数字。因此,如果您存储的整数大于11位,它将仅显示为11位,但其实际值将被存储。@1000111谢谢。你消除了我的第一个基本疑问。请让我知道我可以在插入时限制长度吗?否。在插入整数值时,如果该值在
integer
范围内,则实际值将存储在数据库中。正如我在上一篇评论中所说,选择时,长度属性起作用@GopsABLook看看这个。这肯定会澄清你的概念。
mysql> create table ids(id int(1), id2 int);
insert into ids(id) values(100000);
seQuery OK, 0 rows affected (0.00 sec)

mysql> insert into ids(id) values(100000);
lect iQuery OK, 1 row affected (0.00 sec)

mysql> select id, id2 from ids;
Field   1:  `id`
Catalog:    `def`
Database:   `test`
Table:      `ids`
Org_table:  `ids`
Type:       LONG
Collation:  binary (63)
Length:     1
Max_length: 6
Decimals:   0
Flags:      NUM

Field   2:  `id2`
Catalog:    `def`
Database:   `test`
Table:      `ids`
Org_table:  `ids`
Type:       LONG
Collation:  binary (63)
Length:     11
Max_length: 0
Decimals:   0
Flags:      NUM

+--------+------+
| id     | id2  |
+--------+------+
| 100000 | NULL |
+--------+------+
1 row in set (0.00 sec)