關於MySql數據類型Number類型和String類型的某些概念區分

強烈建議大家閱讀官方英文文檔,寫的非常詳細
字符類型
在這裏插入圖片描述
M對於字符串類型的話指的是指的就是字符串的類型,對於二進制類型指的是字節長度,最大長度的決定因素有很多,可能是row size的限制,那麼這個M是一種約束麼
這麼看吧,官方文檔裏有L和M兩個參數,你會發現在Storage Required中,M並不影響,完全取決於實際的長度。對於爲什麼要有呢,我理解的是大概是爲了提前發現問題,比如在後面你會發現,會在創建表格的時候進行row size警告,在一定長度上做了一些預防措施
Varchar會無限大麼?不會的,其實M還是限制了的大小,L+1還是L+2應該取決於M*m(一個字符的字節長度),邊長就是預留一個配置好的空間,但是不需要開闢,用的時候再去分配。比如一個火車可以容納100個人,也就是row size就是100,但是我可以只放80個座位,坐滿了我在加唄
除了設置的長度,和size,還有沒有什麼可以限制:也就是在什麼都不配置的情況下其實只有row size去限制。跟text不同的是什麼呢,text超出了就會就會在表外空間在創建一個空間去專門存。
對於Number類型:
什麼是display width,對於Number的理解和字符串的M有區別,對於Numer型,m就是顯示的寬度,這裏需要解釋一下顯示寬度是什麼意思,我們這樣看,表示1有這麼幾種方式:
1,1.0,01,001,0001,1.00,1.0000
這上面都是都是1,但是他們從形式上看,不一樣。有的一位數,有的兩位數,有的三位數,用幾位數去表示一個數字就是顯示寬度。Int(11)表示就是用一個11位的數字去表示一個數字,其數字 的大小,完全由這個類型的字節數決定,1個字節8位,就是2^8,注意學過C語言的都知道,如果有符號,符號也要佔一位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章