亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

我們從mysql本身來(lái)看:

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

2:MySQL中的NULL其實(shí)是占用空間的。

官方文檔說(shuō)明:

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è)計(jì)表時(shí) 建議不要用default NULL

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

另外一點(diǎn),從不同的項(xiàng)目開(kāi)發(fā)去分析這個(gè)問(wèn)題:

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

但是后來(lái)在另外一個(gè)團(tuán)隊(duì)開(kāi)發(fā)app的時(shí)候,這個(gè)null和empty string的問(wèn)題就尤為突出,因?yàn)槲沂怯胮hp做接口開(kāi)發(fā),如果一旦出現(xiàn)null的數(shù)據(jù)類型,沒(méi)有處理直接返回去前端,那么無(wú)論是ios還是Android端,如果沒(méi)有處理好這個(gè)空的判斷,要么就直接輸出null,要么程序直接報(bào)錯(cuò)。

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

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

Mysql5.6.x

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

Mysql5.7.x

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

utf8

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

utf8mb4

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

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

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

所以一個(gè)記錄最多不能超過(guò) 8k。

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

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

    mysql中異常錯(cuò)誤ERROR:2002的解決方法

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

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

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

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

    因?yàn)橄胍诠倦娔X上安裝Mysql,于是到官網(wǎng)上下載了最新版本的Mysql-5.7.17,其實(shí)安裝方法也很簡(jiǎn)單,下面小編把安裝過(guò)程分享到腳本之家平臺(tái)供大家參考
    2017-03-03
  • 虛擬機(jī)linux端mysql數(shù)據(jù)庫(kù)無(wú)法遠(yuǎn)程訪問(wèn)的解決辦法

    虛擬機(jī)linux端mysql數(shù)據(jù)庫(kù)無(wú)法遠(yuǎn)程訪問(wèn)的解決辦法

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

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

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

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

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

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

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

最新評(píng)論