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

Mysql字符集utf8和utf8mb4詳解

 更新時間:2024年12月23日 09:37:49   作者:碎月如割  
文章介紹了MySQL中utf8和utf8mb4兩種字符集的區(qū)別,包括編碼方式、存儲空間、索引長度以及支持的Unicode字符范圍,同時,通過創(chuàng)建兩個表并插入數(shù)據(jù)進行存儲長度的比較,驗證了上述理論

背景

1、MySQL在5.5.3版本之后增加了utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來兼容四字節(jié)的unicode;

2、utf8mb4是utf8的超集,除了將編碼改為utf8mb4外不需要做其他轉(zhuǎn)換。當然,為了節(jié)省空間,一般情況下使用utf8也就夠了;

名詞解釋

  • 字符集(character set/charset):字符的二進制編碼方式;
  • UTF-8:是unicode的實現(xiàn)方式之一,其他實現(xiàn)方式還有utf-16,utf-32,它是一種變長的編碼,一個符號使用1~4個字節(jié)表示;
  • utf8:mysql中實現(xiàn)了utf-8編碼的unicode字符集,是utf8mb3的別稱,utf8編碼中一個符號使用1~3個字節(jié)表示;
  • utf8mb4:mysql中實現(xiàn)了

關(guān)系

  • 1、都實現(xiàn)了utf-8編碼中的的unicode字符集;
  • 2、utf8僅支持基本多語言平面Basic Multilingual Plane (BMP);
  • 3、utf8mb4支持BMP之外的補充字符,如一些生僻的漢字,emoji字符,以及任何新增的unicode字符。
  • 4、utf8一個字符最多使用3個字節(jié)存儲,utf8mb4一個字符最多使用4個字節(jié)存儲;
  • 5、對于BPM字符,utf8和utf8mb4都使用三個字節(jié)存儲;對于非BMP字符,utf8mb4使用4個字節(jié)存儲,utf8不能存儲非BMP字符;
  • 6、InnoDB中默認最大可對767個字節(jié)建立索引;使用utf8的列最多可對255個字符建立索引;使用utf8mb4的最多可對191個字符建立索引;

實踐

為了驗證上面的理論,創(chuàng)建如下兩個表:它們的字符集分別為utf8和utf8mb4

CREATE TABLE `test_utf8` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `name` varchar(5) NOT NULL COMMENT '名稱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='測試utf8';

CREATE TABLE `test_utf8mb4` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `name` varchar(5) NOT NULL COMMENT '名稱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='測試utf8mb4';

向兩個表中分別插入如下數(shù)據(jù):

insert into test_utf8(name) values ('我是一顆小'), ('我是reo'), ('12345'), ('ggvdc');
insert into test_utf8mb4(name) values ('我是一顆小'), ('我是reo'), ('12345'), ('ggvdc');
insert into test_utf8mb4(name) values ('?????');

查看在兩種字符集下的存儲長度:

該圖驗證了上面3、4、5點理論;

總結(jié)

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

相關(guān)文章

  • 詳解如何通過Mysql的二進制日志恢復(fù)數(shù)據(jù)庫數(shù)據(jù)

    詳解如何通過Mysql的二進制日志恢復(fù)數(shù)據(jù)庫數(shù)據(jù)

    本篇文章主要介紹了詳解如何通過Mysql的二進制日志恢復(fù)數(shù)據(jù)庫數(shù)據(jù),具有一定的參考價值,有興趣的可以了解一下。
    2017-04-04
  • MySQL變量原理及應(yīng)用實例

    MySQL變量原理及應(yīng)用實例

    這篇文章主要介紹了MySQL變量原理及應(yīng)用實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • MySQL?SQL性能分析之慢查詢?nèi)罩?、explain使用詳解

    MySQL?SQL性能分析之慢查詢?nèi)罩?、explain使用詳解

    這篇文章主要介紹了MySQL?SQL性能分析?慢查詢?nèi)罩尽xplain使用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 解決Mysql磁盤IO占用過高的問題

    解決Mysql磁盤IO占用過高的問題

    這篇文章主要介紹了解決Mysql磁盤IO占用過高的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • mysql把一段數(shù)據(jù)變成一個臨時表

    mysql把一段數(shù)據(jù)變成一個臨時表

    這篇文章主要介紹了mysql把一段數(shù)據(jù)變成一個臨時表,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • MySQL中的SUM函數(shù)使用教程

    MySQL中的SUM函數(shù)使用教程

    這篇文章主要介紹了MySQL中的SUM函數(shù)使用教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • 你可能有所不知的MySQL正則表達式總結(jié)

    你可能有所不知的MySQL正則表達式總結(jié)

    使用正則表達式可以檢索或替換符合某個模式的文本內(nèi)容,根據(jù)指定的匹配模式匹配文本中符合要求的特殊字符串,下面這篇文章主要給大家介紹了關(guān)于MySQL正則表達式的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • mysql中取系統(tǒng)當前時間,當前日期方便查詢判定的代碼

    mysql中取系統(tǒng)當前時間,當前日期方便查詢判定的代碼

    今天在寫一段查詢語句的時候,需要判定結(jié)束日期是不是大于當前日期,一般情況下都是通過php判定日期,然后查詢。
    2011-12-12
  • 一次神奇的MySQL死鎖排查記錄

    一次神奇的MySQL死鎖排查記錄

    這篇文章主要給大家介紹了一次神奇的MySQL死鎖排查的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 基于MySQL的存儲引擎與日志說明(全面講解)

    基于MySQL的存儲引擎與日志說明(全面講解)

    下面小編就為大家分享一篇基于MySQL的存儲引擎與日志說明(全面講解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評論