MySQL Varchar的新認識

2021-07-10 03:16:30 字數 1103 閱讀 5334

mysql中的char,varvhar以及text型別一直是需要被搞清楚的一回事,他們之間的大致的區別在網上都有。

我查了以後發現對於varchar,網上說的是最大長度為65535個位元組(網上說mysql5.0.3之後才有,5.0.3之前varchar的最大值並沒有那麼大,這個說法我並沒有去求證),於是我試了下,結果發現直接把varchar的最大值調到65535是不行的,還需要考慮兩個規則:

1.65535個位元組指的是一行記錄的最大位元組數,並不是乙個欄位的最大位元組數。

2.mysql在儲存每個varchar型別的字段資料時有1-2個位元組用於記錄該欄位儲存的位元組數,以及當表字段允許有空值時,還需要乙個位元組由於記錄每一行資料的空值。

什麼意思呢?舉個栗子來說如果你想建立乙個單字段的表,字段資料型別為varchar,並且是非空的,那麼你最大可以把varchar值調到65533。因為每行記錄沒有空值,即不需要1個位元組來記錄空值分布,但是每行記錄有1個字段,該欄位需要2個位元組記錄資料儲存量(255位元組一下是1個位元組儲存,超過255需要2個位元組儲存)。所以這麼算下來,varchar最大可以65533,截圖如下:

這個栗子變一下:要是你想建立乙個單字段的表,字段資料型別為varchar,但是是允許為空的,那麼varchar最大值只能調到65532了,不多解釋,不信你try。好吧,我還是附上圖吧:

這個栗子再變一下:要是你想建立乙個3個字段的表,每個字段資料型別為varchar,並且都是非空的,其中兩個欄位的varchar值設為20,那麼第三個欄位的varchar最大可以設為多少?(因為65535-(20+1)-(20+1)=65493>255,所以最大值=65493-2=65491個位元組)

證明如下:

好吧,栗子就舉到這了。總的規則就是上面提到的兩條。

mysql varchar最大的長度

a 儲存限制 varchar 欄位是將實際內容單獨儲存在聚簇索引之外,內容開頭用1到2個位元組表示實際長度 長度超過255時需要2個位元組 因此最大長度不能超過65535 2的16次方 1 b 編碼長度限制 字元型別若為gbk,每個字元最多佔2個位元組,最大長度不能超過32766 字元型別若為utf...

Token Cookie Session的認識了解

token token的意思是 令牌 是使用者身份的驗證方式,最簡單的token組成 uid 使用者唯一的身份標識 time 當前時間的時間戳 sign 簽名,由token的前幾位 雜湊演算法壓縮成一定長的十六進製制字串,可以防止惡意第三方拼接token請求伺服器 還可以把不變的引數也放進token...

對min max width height的認識

在css世界中,提出了min max weight的應用場景 自適應布局或者是流式布局中才會出現,從最小和最大上面我們知道他們是具有邊界行為的屬性。在現在的pc端開發中,為了適應各種不同解析度的顯示屏,min max width就會起到很關鍵的作用。應用場景 下面列舉乙個自己遇到的小情況 電腦解析度...