主要是
首先饥努,讓我們來看一下 int 數(shù)據(jù)類型的定義。在 MySQL 中酷愧,int 數(shù)據(jù)類型是一種整數(shù)類型,可以存儲有符號的整數(shù)值乍迄,其取值范圍為 -2147483648 到 2147483647士败。也就是說闯两,int 數(shù)據(jù)類型在 MySQL 中所占用的存儲空間是 4 個字節(jié)谅将。
那么饥臂,int(11) 中的括號里的11代表什么意思呢逊躁?實際上隅熙,這個括號中的數(shù)字并不代表 int 數(shù)據(jù)類型所占用的存儲空間核芽,而是表示該字段的顯示寬度念脯。換句話說,int(11) 中的 11 表示該字段的最大顯示寬度為 11 個字符绿店。但是,需要注意的是借嗽,這個數(shù)字并不影響該字段的存儲空間或取值范圍。
為了更好地理解 int(11) 的意義恶导,我們可以通過以下實例進(jìn)行說明浸须。假設(shè)我們有一個表格,其中有一個字段定義為 int(11)删窒,名為 id。如果我們向該字段插入一個值為 1234567890 的整數(shù)肌索,那么該值會被完整地存儲在該字段中,并不會受到顯示寬度的限制晕换。但是站宗,如果我們使用類似于 SELECT id FROM table 的 SQL 查詢語句來查詢該表格中的數(shù)據(jù)闸准,該字段的值會以寬度為 11 個字符的形式顯示出來份乒,不足 11 個字符的值會在前面填充空格。
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);
結(jié)果如下:
不同點(diǎn)來了:所以字段有ZEROFILL關(guān)鍵字修飾的時候,才有在展示的時候不足11位的前面補(bǔ)0.
需要注意的是颂暇,int 字段的顯示寬度并不是必需的但惶。如果不指定顯示寬度耳鸯,MySQL 會默認(rèn)為 int 字段分配最大的存儲空間,也就是 4 個字節(jié)阳啥。因此财喳,int(11) 和 int(4) 在存儲空間上是完全相同的察迟。
除了 int 類型之外耳高,MySQL 還支持其他的整數(shù)類型,包括 tinyint概荷、smallint、mediumint 和 bigint误证。這些整數(shù)類型也可以通過類似于 int(11) 的方式進(jìn)行定義修壕,并且也可以指定顯示寬度。