mysql中int(5)的長度是多少

王林
發布: 2023-06-03 23:24:14
轉載
1896 人瀏覽過

int(5)到底有是多長

在設計 mysql 表欄位時,int(5) 表示是該欄位長度為 5 嗎?

如果你覺得是,那請你繼續往下看,相信你會有新的收穫的。

先來看一個實際例子

我們建立一個新表,表中只有一個主鍵 id 和一個 length 字段,其中 length 字段設置為 int(5) 。

#新建test表
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `length` int(5) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
登入後複製

是不是 length 欄位只能儲存長度不超過 5 的數字呢,我們來插入一條資料試試。

我們插入一條較大的資料 123456789 ,這個資料一共有 9 位,看能否正常插入。

#插入一条大数据
insert into test (length) values (123456789);
登入後複製

結果證明 int(5) 能插入長度大於 5 的數據,所以現在可以肯定的是 int(5) 並不是代表數據的寬度。

#查看插入数据
mysql> select * from test;
+------------+-----------+
| id         | length    |
+------------+-----------+
|  1         | 123456789 |
+------------+-----------+
登入後複製

在 mysql 中 int 欄位長度其實是固定的,就是 4 個位元組,不管你 int(11)  還是 int(5) 欄位長度就是固定的 4 個位元組。

int(5) 其實是和另一個屬性zerofill 搭配使用的,表示如果該欄位值的寬度小於5 時,會自動在前面補0 ,如果寬度大於等於5 ,那就不需要補0 。

#int(5) length 字段添加了 zerofill 属性
mysql> select * from test;
+----+--------+
| id | length |
+----+--------+
|  1 |  00888 |
|  2 |  00012 |
|  3 |  12345 |
|  4 | 123456 |
+----+--------+
登入後複製

注意前提是給該欄位新增了 zerofill 屬性,不然 int(5) 不起作用。

#int(5) length 字段没有 zerofill 属性
mysql> select * from test;
+----+--------+
| id | length |
+----+--------+
|  1 |    888 |
|  2 |     12 |
|  3 |  12345 |
|  4 | 123456 |
+----+--------+
登入後複製

要想對整形字段設置長度,應該是選擇tinyint、smallint、mediumint、int、bigint 這幾個類型,這幾個整數類型才代表了固定的長度,具體長度請看下面這個表格。

mysql中int(5)的長度是多少

注意如果要儲存帶符號的整形數,是不支援 zerofill 屬性的,會自動轉換為 0,在一些涉及遞減的業務中需要注意考慮一下。

以上是mysql中int(5)的長度是多少的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板