在MySQL里新建表自然會涉及設置字段長度,但有時會發現長度限制在一些字段類型中不起作用?字段長度是按字節算還是字符算?
如圖中:int看起來只要還在本身類型取值范圍內就行,字段長度沒有起到作用;而char確實被限制在了5個字符中,甚至不是字節。
背后玄機在於不同數據類型的規則不同。
1、整數類型
這里的寬度和數據類型的取值是沒有關系的,顯示寬度只指明Mysql最大可能顯示的數字個數,數值的位數小於指定的寬度時會由空格填充;如果插入了大於顯示寬度的值,只要該值不超過該類型的取值范圍,數值依然可以插入,而且能夠顯示出來。
例如int整型只要數值在-2147483648~2147483647之間,不會出問題,連警告都沒有
若不設置字段長度,系統會默認tinyint(4),smallint(6),mediumint(9),int(11),bigint(20),也就是他們的取值范圍。
2、字符型
寬度就有用了,確確實實限制了無論是char或者varchar,超出字段長度的內容將會丟失。當然,對於varchar設置255也不會浪費,畢竟是變長存儲
3、浮點
浮點就沒什么疑問了,按照他自己的規則來。這里是3個數,小數后2位,輸入超范圍就輸出最大的就完事了