Mysql建立數據庫時字符集與排序規則的選擇


一、概述  

在MySQL中,字符集和排序規則是區分開來的,你可以單獨設置字符集和排序規則。MySQL字符集和排序規則有關聯而且還不是必選項,如果字符集和排序規則都不填寫,Mysql會做默認處理;或者設置其一,比如設置字符集,會默認設置了與字符集相應的排序規則,我們建立數據庫是總要涉及到字符集和排序規則的選擇問題?怎么選擇呢,有什么區別呢?

二、字符集

1、字符

字符(Character)是各種文字和符號的總稱,包括各國家文字、標點符號、圖形符號、數字等。

2、字符集

字符集(Character set)是多個字符的集合,常見字符集名稱:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。計算機要准確的處理各種字符集文字,就需要進行字符編碼,以便計算機能夠識別和存儲各種文字。

3、字符編碼

字符編碼(Character encoding)也稱字集碼,是把字符集中的字符通過編碼成為指定集合中某一對象(例如:比特模式、自然數序列、8位組或者電脈沖),以便文本在計算機中存儲和通過通信網絡的傳遞。常見的例子包括將拉丁字母表編碼成摩斯電碼和ASCII。其中,ASCII將字母、數字和其它符號編號,並用7比特的二進制來表示這個整數。通常會額外使用一個擴充的比特,以便於以1個字節的方式存儲。

三、Mysql中的字符集

  

在MySQL中,常用的幾個字符集有UTF8、UTF8MB4、UTF16、UTF32等,那么Unicode與UTF8、UTF8MB4、UTF16、UTF32是什么關系?我們新建數據庫時選擇哪種字符集呢?

1、Unicode與UTF8、UTF8MB4、UTF16、UTF32關系

Unicode(統一碼、萬國碼、單一碼)是計算機科學領域里的一項業界標准,包括字符集、編碼方案等。Unicode 是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一並且唯一的二進制編碼,以滿足跨語言、跨平台進行文本轉換、處理的要求。UTF8、UTF16、UTF32是Unicode碼一種實現形式,都是屬於Unicode編碼。 

2、Mysql新建數據庫時選擇哪種字符集呢?

UTF8和UTF8MB4是常用的兩種字符集,至於這兩個選用哪個要根據自己業務情況而定。UTF8MB4兼容UTF8,比UTF8能表示更多的字符,Unicode編碼區從編碼區1-126屬於UTF8區,當然UTF8MB4也兼容這個區,126行以下就是UTF8MB4擴充區,所以你要根據自己的業務進行選擇,一般情況下UTF8就滿足需求,當然如果考慮到以后擴展,比如考慮到以后存儲emoji,就選擇UTF8MB4,否則只是浪費空間。我建議還是選擇UTF8MB4,畢竟對於大部分公司而言空間不是什么大問題。 

四、Mysql排序規則

 

UTF8MB4常用的排序規則:utf8mb4_unicode_ci、utf8mb4_general_ci、utf8mb4_bin,選用哪種方式呢?先來分析一下:

1、准確性

  • utf8mb4_unicode_ci 是基於標准的Unicode來排序和比較,能夠在各種語言之間精確排序,不區分大小寫
  • utf8mb4_general_ci 沒有實現Unicode排序規則,在遇到某些特殊語言或者字符集,排序結果可能不一致,不區分大小寫

2、性能

  • utf8mb4_general_ci 在比較和排序的時候更快
  • utf8mb4_unicode_ci 在特殊情況下,Unicode排序規則為了能夠處理特殊字符的情況,實現了略微復雜的排序算法。相比選擇哪一種collation,使用者更應該關心字符集與排序規則在db里需要統一。
  • utf8mb4_bin:將字符串每個字符用二進制數據編譯存儲,區分大小寫,而且可以存二進制的內容。
總而言之,utf8mb4_general_ci 和utf8mb4_unicode_ci 是我們最常使用的排序規則。utf8mb4_general_ci 校對速度快,但准確度稍差。utf8mb4_unicode_ci 准確度高,但校對速度稍慢,兩者都不區分大小寫。這兩個選哪個視自己情況而定,還是那句話盡可能保持db中的字符集和排序規則的統計。 

五、Mysql查詢字符集和排序規則常用的命令

序號 功能 命令
1  查看數據庫字符集 show create database 數據庫名
2 查看數據表全部字段排序規則 show full columns from 表名

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM