国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL常用排序規(guī)則utf8mb4_general_ci、utf8mb4_unicode_ci、utf8mb4_bin、utf8mb4_0900_ai_ci和存儲字符集 utf8 和 utf8mb4

這篇具有很好參考價值的文章主要介紹了MySQL常用排序規(guī)則utf8mb4_general_ci、utf8mb4_unicode_ci、utf8mb4_bin、utf8mb4_0900_ai_ci和存儲字符集 utf8 和 utf8mb4。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在創(chuàng)建數(shù)據(jù)庫時,我們經(jīng)常會需要填寫數(shù)據(jù)庫名、字符集、排序規(guī)則;
而本文主要講述常用的存儲字符集 utf8 和 utf8mb4;排序字符集 utf8mb4_unicode_ci 和 utf8mb4_general_ci、utf8mb4_bin、utf8mb4_0900_ai_ci
utf8mb4_general_ci,筆記,sql筆記,項目開發(fā),mysql,ci,數(shù)據(jù)庫

一般我本人創(chuàng)建創(chuàng)建數(shù)據(jù)庫通常排序規(guī)則都使用utf8mb4_general_ci,因為對特殊字符的順序并不需要那么精確


1、存儲字符集 utf8 和 utf8mb4

  • utf8 是 Mysql 中的一種字符集,只支持最長三個字節(jié)的 UTF-8 字符,也就是 Unicode 中的基本多文本平面。
  • 要在 Mysql 中保存 4 字節(jié)長度的 UTF-8 字符,需要使用 utf8mb4 字符集,但只有 5.5.3 版本以后的才支持。我覺得,為了獲取更好的兼容性,應(yīng)該總是使用 utf8mb4 而非 utf8. 對于 CHAR 類型數(shù)據(jù),utf8mb4 會多消耗一些空間,根據(jù) Mysql 官方建議,使用 VARCHAR 替代 CHAR。

總結(jié)
UTF-8是使用1~4個字節(jié),一種變長的編碼格式,字符編碼。mb4即 most bytes 4,使用4個字節(jié)來表示完整的UTF-8。

mysql的 utf8 編碼最大字符長度為 3 字節(jié),如果遇到 4 字節(jié)的寬字符就會插入異常了。三個字節(jié)的 UTF-8 最大能編碼的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文種平面(BMP)。也就是說,任何不在基本多文本平面的 Unicode字符,都無法使用 Mysql 的 utf8 字符集存儲。包括 Emoji 表情(Emoji 是一種特殊的 Unicode 編碼,常見于 ios 和 android 手機上),和很多不常用的漢字,以及任何新增的 Unicode 字符等等。

MySQL的utf8是utfmb3,只有三個字節(jié),節(jié)省空間但不能表達全部的UTF-8。所以推薦使用utf8mb4(是utf8的超集并完全兼容它,能夠用四個字節(jié)存儲更多的字符,這幾乎包含了世界上所有能看到見的語言。)。


2、排序字符集 utf8mb4_unicode_ci 和 utf8mb4_general_ci、utf8mb4_bin、utf8mb4_0900_ai_ci

MySQL常用排序規(guī)則utf8mb4_general_ci、utf8mb4_unicode_ci、utf8mb4_bin
ci即case insensitive,不區(qū)分大小寫。
utf8mb4_unicode_ci
是基于標準的Unicode來排序和比較,能夠在各種語言之間精確排序,Unicode排序規(guī)則為了能夠處理特殊字符的情況,實現(xiàn)了略微復(fù)雜的排序算法。
utf8mb4_general_ci
是一個遺留的 校對規(guī)則,不支持擴展,它僅能夠在字符之間進行逐個比較。utf8_general_ci校對規(guī)則進行的比較速度很快,但是與使用 utf8mb4_unicode_ci的校對規(guī)則相比,比較正確性較差。
utf8mb4_bin
將字符串每個字符用二進制數(shù)據(jù)編譯存儲,區(qū)分大小寫,而且可以存二進制的內(nèi)容。
utf8mb4_0900_ai_ci
MySQL 8.0 默認的是 utf8mb4_0900_ai_ci,屬于 utf8mb4_unicode_ci 中的一種,具體含義如下:
uft8mb4 表示用 UTF-8 編碼方案,每個字符最多占 4 個字節(jié)。
0900 指的是 Unicode 校對算法版本。(Unicode 歸類算法是用于比較符合 Unicode 標準要求的兩個 Unicode 字符串的方法)。
ai 指的是口音不敏感。也就是說,排序時 e,è,é,ê 和 ? 之間沒有區(qū)別。
ci 表示不區(qū)分大小寫。也就是說,排序時 p 和 P 之間沒有區(qū)別。
utf8mb4 已成為默認字符集,在 MySQL 8.0.1 及更高版本中將 utf8mb4_0900_ai_ci 作為默認排序規(guī)則。以前,utf8mb4_general_ci 是默認排序規(guī)則。由于 utf8mb4_0900_ai_ci 排序規(guī)則現(xiàn)在是默認排序規(guī)則,因此默認情況下新表格可以存儲基本多語言平面之外的字符?,F(xiàn)在可以默認存儲表情符號。如果需要重音靈敏度和區(qū)分大小寫,則可以使用 utf8mb4_0900_as_cs 代替。

2.1、經(jīng)常使用的 utf8mb4_unicode_ci 和 utf8mb4_general_ci 的區(qū)別

1、準確性

utf8mb4_unicode_ci 是基于標準的 Unicode 來排序和比較,能夠在各種語言之間精確排序

utf8mb4_general_ci 沒有實現(xiàn) Unicode 排序規(guī)則,在遇到某些特殊語言或者字符集,排序結(jié)果可能不一致。

但是絕大多數(shù)情況下,這些特殊字符的順序并不需要那么精確

2、性能

utf8mb4_general_ci 在比較和排序的時候更快

utf8mb4_unicode_ci 在特殊情況下,Unicode 排序規(guī)則為了能夠處理特殊字符的情況,實現(xiàn)了略微復(fù)雜的排序算法。

但是在絕大多數(shù)情況下,不會發(fā)生此類復(fù)雜比較。相比選擇哪一種 collation,使用者更應(yīng)該關(guān)心字符集與排序規(guī)則在 db 里需要統(tǒng)一。

推薦用 utf8mb4_unicode_ci,但是用 utf8mb4_general_ci 也沒啥問題.文章來源地址http://www.zghlxwxcb.cn/news/detail-799206.html

到了這里,關(guān)于MySQL常用排序規(guī)則utf8mb4_general_ci、utf8mb4_unicode_ci、utf8mb4_bin、utf8mb4_0900_ai_ci和存儲字符集 utf8 和 utf8mb4的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • MySQL排序規(guī)則之utf8mb4_0900_ai_ci

    是什么? utf8mb4_0900_ai_ci 是mysql8.0之后的數(shù)據(jù)庫的一種排序規(guī)則(collation)。 如何理解? utf8mb4,這個名字許多人大概熟悉。如今?????emoji表情已經(jīng)大量使用,但MySQL之前的的字符集(character set)是utf8(更準確的名字是utf8mb3,一個字符最多使用3個字節(jié)來存儲),只能存儲編碼

    2024年02月03日
    瀏覽(44)
  • mysql設(shè)置了utf8mb4,為什么還有utf8mb4_general_ci和utf8mb4_0900_ai_ci?

    mysql設(shè)置了utf8mb4,為什么還有utf8mb4_general_ci和utf8mb4_0900_ai_ci?

    前段時間,遇到一個mysql的問題,我仔細看看報錯信息,應(yīng)該是MySQL數(shù)據(jù)庫報出來的,大意是說:collation不兼容,一個是?utf8mb4_0900_ai_ci,另一個是utf8mb4_general_ci。 utf8mb4_general_ci這玩意兒我見過,是針對utf8mb4編碼的collation,但是utf8mb4_0900_ai_ci是啥,我也沒見過。 于是我問他,

    2024年02月10日
    瀏覽(28)
  • 【MySQL】報錯1267 - Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPL

    記錄一次sql語句執(zhí)行錯誤: left join表會出現(xiàn) Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_croatian_ci,IMPLICIT) for operation \\\'=\\\'錯誤. 這是由于表的編碼格式不一致 例如 某個表的字符編碼為utf8_general_ci而關(guān)聯(lián)表的字符編碼為utf8_croatian_ci導(dǎo)致當前錯誤! 解決方案: 讓關(guān)聯(lián)表的字符編

    2024年02月11日
    瀏覽(24)
  • MySQL執(zhí)行異常: Illegal mix of collations (utf8mb4_0900_ai_ci IMPLICIT) and (utf8mb4_general_ci...

    MySQL執(zhí)行異常: Illegal mix of collations (utf8mb4_0900_ai_ci IMPLICIT) and (utf8mb4_general_ci...

    Mysql生產(chǎn)庫存儲過程升級后執(zhí)行報錯:SQL錯誤( 1267 ) : Illegal mix of collations (utf8mb4_0900_ai _ci IMPLICIT) and (utf8mb4_general_ci IMPLICIT) for operation ‘=’。根據(jù)錯誤提示,報錯原因應(yīng)該是=號兩側(cè)內(nèi)容的排序規(guī)則(collation)不一致導(dǎo)致的報錯。 產(chǎn)生這個問題一種情況是兩個字段的排序規(guī)則不

    2024年02月16日
    瀏覽(23)
  • MySQL提示Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT)

    MySQL提示Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT)

    根據(jù)錯誤提示,報錯原因應(yīng)該是=號兩側(cè)內(nèi)容的排序規(guī)則(collation)不一致導(dǎo)致的報錯。 原sql中出現(xiàn)了: status?!=\\\'取消\\\' 原因是:表字段的排序規(guī)則為utf8mb4_0900_ai _ci,而字面常量是排序規(guī)則是utf8mb4_general_ci ?collation_connection用于字面常量比較,如果字段比較會使用字段或表聲明

    2024年01月18日
    瀏覽(25)
  • utf8mb4的utf8mb4_0900_ai_ci如何理解?mysql新建庫如何選擇字符集?

    MySQL字符集詳解_永遠是少年啊的博客-CSDN博客_mysql 字符集 今天繼續(xù)給大家介紹MySQL相關(guān)知識,本文主要內(nèi)容是MySQL字符集。一、MySQL字符集簡介二、查看和設(shè)置MySQL字符集(一)查看當前字符集設(shè)置(二)更改默認字符集(三)在創(chuàng)建表時指定字符集三、更改MySQL字符集 https:

    2024年02月09日
    瀏覽(28)
  • MySQL報錯 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘

    MySQL報錯 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘

    MySQL報錯如下 原因 : 我這里SQL文件對應(yīng)的MySQL版本是8.0版本,我本地是5.7版本,高級往低級導(dǎo)入時 版本不兼容 ,引發(fā)了1273錯誤。 解決方法 : 將文件中的所有 utf8mb4_0900_ai_ci 替換為 utf8_general_ci ,同時將 utf8mb4 替換為 utf8 。

    2024年02月11日
    瀏覽(16)
  • mysql出現(xiàn)錯誤 ‘utf8mb4_0900_ai_ci‘ 或 ‘utf8_0900_ai_ci‘

    mysql出現(xiàn)錯誤 ‘utf8mb4_0900_ai_ci‘ 或 ‘utf8_0900_ai_ci‘

    1:在我們使用mysql數(shù)據(jù)庫,進行日常開發(fā)的過程中,會經(jīng)常進行導(dǎo)入導(dǎo)出的操作 2:在使用mysql工具或者使用第三方數(shù)據(jù)庫管理工具,進行數(shù)據(jù)庫導(dǎo)入運行SQL腳本的時候,出現(xiàn)這種錯誤。 或者 \\\"utf8_0900_ai_ci\\\" 錯誤?,均是數(shù)據(jù)庫版本從高版本導(dǎo)入到低版本導(dǎo)致的。 解決方案有兩

    2024年02月13日
    瀏覽(25)
  • Docker拉取mysql及utf8mb4_0900_ai_ci字符集解說

    Docker拉取mysql及utf8mb4_0900_ai_ci字符集解說

    概要 主旨是為了研究mysql里的字符集,在實踐中發(fā)現(xiàn)中文的排序順序有點問題,為了能讓中文排序正常,嘗試更改各種字符集做測試。 Mysql官方版本8.0以前默認的應(yīng)該是latin1,8.0后默認為utf8mb4了 Docker安裝Mysql docker拉取Mysql官方鏡像站地址:https://hub.docker.com/_/mysql docker可以一鍵

    2024年01月22日
    瀏覽(40)
  • 【MySQL異常解決】MySQL執(zhí)行SQL文件出現(xiàn)【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解決方案

    【MySQL異常解決】MySQL執(zhí)行SQL文件出現(xiàn)【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解決方案

    從服務(wù)器MySQL中導(dǎo)出數(shù)據(jù)為SQL執(zhí)行腳本后,在本地電腦執(zhí)行導(dǎo)出的SQL腳本, 報錯: Unknown collation ‘utf8mb4_0900_ai_ci‘ 打開SQL腳本,查看 utf8mb4_0900_ai_ci ,這是字段的字符集。 1、MySQL 版本不一樣; 2、utf8mb4_0900_ai_ci 在 MySQL 8 以下是不被支持的,檢查發(fā)現(xiàn)本地數(shù)據(jù)庫為5.7,

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包