在mysql中新建數據表的時候會有長度一說,其實用建表語句建數據表的時候也有涉及
例如:
CREATE TABLE user(
uid int(4),
name varchar(255),
passward varchar(20)
birthday data
)
不知道你有沒有注意這個數據類型后面的括號有什么玄機,今天看了《Mysql 5.6 從零開始學》這本書,算是把這個地方搞清楚了。
括號里的數字叫數據的寬度,我們不能一概而論,因為不同的數據類型對寬度的處理也不一樣:
1、整數類型,這里顯示的寬度和數據類型的取值范圍是沒有任何關系的,顯示寬度只是指明Mysql最大可能顯示的數字個數,數值的位數小於指定的寬度時會由空格填充;如果插入了大於顯示寬度的值,只要該值不超過該類型的取值范圍,數值依然可以插入,而且能夠顯示出來。
例如上面的udi,顯示的寬度是4,但是我向uid中插入100001,也是可以的,保存和顯示的都會是100001
如果你不設置寬度,系統將添加默認的寬度 tinyint(4),smallint(6),mediumint(9),int(11),bigint(20),這些默認的寬度是跟該類型的取值范圍長度相關。
2、字符串類型,字符串類型這個寬度才真的用上了。不管是char還是varchar,寬度都定義了字符串的最大長度
例如上面的 password varchar(20),如果你輸入了一個21個字符的密碼,那么保存和顯示的只會是前20個字符,你將丟失一個字符信息,char同理。由於varchar是變長存儲的,所以實際開發中我們一般都把varchar的寬度設為最長255,反正你沒用完它也不會浪費空間。
3、浮點和日期等數據類型對數據的寬度沒有要求,一般也不設置,默認是0