欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中varchar類型的字段默認值設(shè)置方式

 更新時間:2023年10月18日 14:38:13   作者:Rsun04551  
這篇文章主要介紹了MySQL中varchar類型的字段默認值設(shè)置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

MySQL varchar字段默認值設(shè)置

最近開始給項目設(shè)計數(shù)據(jù)庫,遇到一個可能很多人都會遇到的問題,就是設(shè)定某一個字段的默認值的時候,是設(shè)定null,“”,還是empty string呢?

我們從mysql本身來看:

1:空值(‘’)是不占用空間的

2:MySQL中的NULL其實是占用空間的。

官方文檔說明:

NULL columns require additional space in the row to record whether their values are NULL.

For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.

所以 mysql設(shè)計表時 建議不要用default NULL

  • string類型的可以default ''或者emptystring
  • int類型的可以default 0

另外一點,從不同的項目開發(fā)去分析這個問題:

以前單純做web網(wǎng)頁端,對這個默認值設(shè)定問題選用null 還是empty string。

但是后來在另外一個團隊開發(fā)app的時候,這個null和empty string的問題就尤為突出,因為我是用php做接口開發(fā),如果一旦出現(xiàn)null的數(shù)據(jù)類型,沒有處理直接返回去前端,那么無論是ios還是Android端,如果沒有處理好這個空的判斷,要么就直接輸出null,要么程序直接報錯。

所有建議設(shè)計數(shù)據(jù)庫的時候默認值盡量少用null。

Mysql Varchar 類型為什么默認設(shè)置 255?

Mysql5.6.x

在 Mysql5.6 版本下,單列索引的長度不能超過 767bytes,聯(lián)合索引的長度不能超過 3072bytes

Mysql5.7.x

在 Mysql5.7 版本下,單列索引的長度不能超過 3072bytes,聯(lián)合索引的長度不能超過 3072bytes

utf8

上面說到單列索引長度為 767,在 utf8 編碼下,一個字符為 3bytes,那么 255*3=765,剛好為能夠建立索引長度的最大值,如果超出了這個值,如果使用的是 navicat 那么 mysql 會自動將這一列的索引變?yōu)榍熬Y索引,截取 255

utf8mb4

在 utf8mb4 下,一個字符為 4bytes, 那么 767÷4=191.75,取整為 191,所以在 utf8mb4 編碼下,如果你的 varchar 超出 191,如果使用的是 navicat 那么 mysql 會自動將這一列的索引變?yōu)榍熬Y索引,截取 191

為什么聯(lián)合索引長度是 3072

我們知道 InnoDB 一個 page 的默認大小是 16k。由于是 Btree 組織,要求葉子節(jié)點上一個 page 至少要包含兩條記錄(否則就退化鏈表了)。

所以一個記錄最多不能超過 8k。

又由于 InnoDB 的聚簇索引結(jié)構(gòu),一個二級索引要包含主鍵索引,因此每個單個索引不能超過 4k (極端情況,pk 和某個二級索引都達到這個限制)。

由于需要預(yù)留和輔助空間,扣掉后不能超過 3500,取個 整數(shù) 就是 1024*3=3072

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql 8.0.22 安裝配置方法圖文教程

    mysql 8.0.22 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.22 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • mysql 8.0.18各版本安裝及安裝中出現(xiàn)的問題(精華總結(jié))

    mysql 8.0.18各版本安裝及安裝中出現(xiàn)的問題(精華總結(jié))

    這篇文章主要介紹了mysql 8.0.18各版本安裝及安裝中出現(xiàn)的問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 詳解在MySQL中創(chuàng)建表的教程

    詳解在MySQL中創(chuàng)建表的教程

    這篇文章主要介紹了詳解在MySQL中創(chuàng)建表的教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • mysql中異常錯誤ERROR:2002的解決方法

    mysql中異常錯誤ERROR:2002的解決方法

    最近在啟動mysql的時候發(fā)現(xiàn)mysql報錯了,錯誤代碼是2002,通過查找相關(guān)的資料發(fā)現(xiàn)是var/lib/mysql 的訪問權(quán)限問題,所以這篇文章主要介紹了mysql中異常錯誤ERROR:2002的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Mysql中mvcc各場景理解應(yīng)用

    Mysql中mvcc各場景理解應(yīng)用

    這篇文章主要為大家介紹了Mysql中mvcc各場景理解應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 在win10系統(tǒng)下安裝Mysql 5.7.17圖文教程

    在win10系統(tǒng)下安裝Mysql 5.7.17圖文教程

    因為想要在公司電腦上安裝Mysql,于是到官網(wǎng)上下載了最新版本的Mysql-5.7.17,其實安裝方法也很簡單,下面小編把安裝過程分享到腳本之家平臺供大家參考
    2017-03-03
  • 虛擬機linux端mysql數(shù)據(jù)庫無法遠程訪問的解決辦法

    虛擬機linux端mysql數(shù)據(jù)庫無法遠程訪問的解決辦法

    最近在項目搭建過程中遇到一問題,有關(guān)虛擬機linux端mysql數(shù)據(jù)庫無法遠程訪問,通過查閱相關(guān)數(shù)據(jù)庫資料問題解決,下面把具體的解決辦法分享給大家,有需要的朋友可以參考下
    2015-08-08
  • MySQL時間戳與日期格式的相互轉(zhuǎn)換

    MySQL時間戳與日期格式的相互轉(zhuǎn)換

    在MySQL數(shù)據(jù)庫中,時間戳和日期格式是常用的數(shù)據(jù)類型,在MySQL中,我們可以使用函數(shù)還相互轉(zhuǎn)換時間戳和日期格式,下面我將詳細的給大家介紹如何進行轉(zhuǎn)換,并提供相應(yīng)的代碼示例,感興趣的小伙伴跟著小編一起來看看吧
    2024-01-01
  • 解析在MySQL里創(chuàng)建外鍵時ERROR 1005的解決辦法

    解析在MySQL里創(chuàng)建外鍵時ERROR 1005的解決辦法

    本篇文章是對在MySQL里創(chuàng)建外鍵時ERROR 1005的解決辦法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql 8.0.24 安裝配置方法圖文教程

    mysql 8.0.24 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.24 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05

最新評論