1.在創建數據庫的時候int(10),varchar(255)中括號后面的數字代表什么意思?
括號里的數字叫數據的寬度,單數不同的數據類型對寬度的處理也不一樣:
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
2.char 和 varchar的區別
char:定長,不足的補位
varchar:變長
3.大小怎么計算的
4個字節 32位
2.31-1
int類型的范圍跟帶不帶符號有關:
帶符號:(-2 147 483 648,2 147 483 647)
不帶符號:(0,4 294 967 295)
3.varchar能存多少漢字
一個漢字占多少長度與編碼有關:
UTF-8:一個漢字=3個字節
GBK:一個漢字=2個字節