在建立資料庫教程欄位的時候,遇到數字類型的時候,如int(4),我曾經一度認為是長度,後來測試的時候發現無論我設定多少,都不影響插入資料的長度,在網上搜了相關的解釋如下:
mysql教程 int(x) 中 x 的含義
這個可選的寬度規格說明是用於在數值顯示時,對某些值的寬度短於該列寬度的值進行左填補顯示的,而不是為了限制在該列中儲存值的寬度,也 不是為了限制那些超過該列指定寬度的值的可被顯示的數字位元。注意,如果在一個整型列中儲存一個超過顯示寬度的更大值時,當 mysql 為某些複雜的連接(join)產生暫存資料表時,你可能會遇到問題,因為在這種情況下,mysql 信任地認為所有的值均適合原始的列寬度。
而int本身就是4個位元組 bigint是8個位元組 所以說int(x)的含義就是 int決定資料存放區的位元組 x表示期望資料的列寬度
在sql語句中int代表你要建立欄位的類型,int代表整型,11代表欄位的長度。
這個代表顯示寬度
整數列的顯示寬度與mysql需要用多少個字元來顯示該列數值,與該整數需要的儲存空間的大小都沒有關係,比如,不管設定了顯示寬度是多少個字元,bigint都要佔用8個位元組。
作為對 ansi/iso sql92 標準的一個擴充,mysql 也支援整數型別 tinyint、mediumint 和 bigint。另外一個擴充是 mysql 支援隨意指定一個整型數值的顯示格式,這通過在類型的基本關鍵詞後跟一個括弧來實現(例如 int(4))。這個可選的寬度規格說明是用於在數值顯示時,對某些值的寬度短於該列寬度的值進行左填補顯示的,而不是為了限制在該列中儲存值的寬度,也不是為了限制那些超過該列指定寬度的值的可被顯示的數字位元。當與可選的擴充屬性 zerofill 一起使用時,預設填補用的空格被零代替。舉例來說,一個列被定義為 int(5) zerofill,插入的值 4 被檢索出來時為 00004。注意,如果在一個整型列中儲存一個超過顯示寬度的更大值時,當 mysql 為某些複雜的連接(join)產生暫存資料表時,你可能會遇到問題,因為在這種情況下,mysql 信任地認為所有的值均適合原始的列寬度。
不過我在mysql(windows下)中,還從來沒有試出過zerofill的功能
int(m),integer(m) 32位整數(4位元組....)
其實這個m跟int能表示的範圍沒有關係,只要你選擇了int,int是用4個位元組表示,1個位元組8位,若表示無符號數時可以表示的範圍是 0 ------- 232-1 ,你可以儲存任何在這個範圍內的數字。
但也不是說跟表示完全沒關係,mysql中有個zerofll,當建表時選擇了0 填充之後儲存就會有很大的不同,這時如果你選擇的是int(4) 你儲存12則資料庫中儲存的是0012,如果填寫12345,此時超過了他的指定寬度則按原樣儲存。