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

Mysql字符集和排序規(guī)則詳解

 更新時(shí)間:2022年09月27日 11:25:31   作者:Java面試365???????  
這篇文章主要介紹了Mysql字符集和排序規(guī)則詳解,在mysql中存儲(chǔ)的是字符串?dāng)?shù)據(jù),那么這些數(shù)據(jù)到底在Mysql中如何存儲(chǔ)呢?這就涉及到字符集的概念,接下來(lái)我們一起進(jìn)入文章學(xué)習(xí)詳細(xì)內(nèi)容介紹吧

前言

計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)的方式都是二進(jìn)制數(shù)據(jù),但是我們?cè)趍ysql中存儲(chǔ)的是字符串?dāng)?shù)據(jù),那么這些數(shù)據(jù)到底在Mysql中如何存儲(chǔ)呢?這就涉及到字符集的概念。

什么是字符集

舉例如下,假設(shè)存在編碼集test,只能識(shí)別a,b,A,B這幾項(xiàng),同時(shí)編碼規(guī)則如下:

a---->00000001(0x01)
b---->00000010(0x02)
A---->00000011(0x03)
B---->00000100(0x04)

那么字符串'aAB'可以映射為 000000010000001100000100(十六進(jìn)制 0x10304)

而ac將無(wú)法轉(zhuǎn)換,因?yàn)槌隽俗R(shí)別范圍。

上面提到的將字符串根據(jù)字符集映射為二進(jìn)制的過(guò)程稱(chēng)之為編碼,反之就為解碼。

什么是比較規(guī)則

那什么是比較規(guī)則呢?其實(shí)就是字符串的比較規(guī)則,如上舉例而言,可以考慮比較二進(jìn)制編碼的大小,如字符'a'編碼值的十六進(jìn)制為0x01,字符'b'編碼值的十六進(jìn)制為0x02,那么可以確定a<b,這就是二進(jìn)制比較規(guī)則,但是顯然這種規(guī)則適用范圍有限,如果遇到需要忽略大小寫(xiě)的場(chǎng)景,顯然二進(jìn)制編碼比較規(guī)則并不適用,一個(gè)字符集可能對(duì)應(yīng)多種比較規(guī)則。

常用字符集

根據(jù)上面的舉例我們知道了test字符集描述的就是一個(gè)字符范圍的界定,我們常用的字符集還有很多如下所示

ASCII字符集

這是一個(gè)最簡(jiǎn)單的字符集包含128個(gè)字符包含大小寫(xiě)字母,空格,數(shù)字,標(biāo)點(diǎn)符號(hào),特殊字符等,因?yàn)榭偣仓挥?28個(gè)字符,那么可以只采用一個(gè)字節(jié)編碼。

ISO8859-1

在ASCII字符集上擴(kuò)充了128個(gè)西歐常用字符,總共包含256個(gè)字符,這個(gè)字符集又被稱(chēng)為latin1。

GB2312

收錄漢字以及拉丁字母,希臘字母等,這種字符集兼容ASCII字符,在編碼規(guī)則如下:

  • 如果是ASCII編碼范圍的字符,采用一個(gè)字節(jié)編碼
  • 否則采用兩個(gè)字節(jié)編碼

這種情況編碼長(zhǎng)度不確定的被稱(chēng)為變長(zhǎng)編碼。

GBK字符集

GBK對(duì)GB2312的字符范圍進(jìn)行的擴(kuò)充,兼容GB2312。

Unicode字符集

UniCode收錄了地球上的所有字符,是所有國(guó)家通用的字符集,由此又被稱(chēng)為萬(wàn)國(guó)碼,UniCode的編碼規(guī)則包含UTF8、UTF16、UTF32這幾種編碼方案,其中UTF8采用1~4個(gè)字節(jié)編碼一個(gè)字符,UTF16使用了2個(gè)字節(jié)或者4個(gè)字節(jié)編碼一個(gè)字符,UTF32采用4個(gè)字節(jié)編碼一個(gè)字符。

不過(guò)需要注意的是Mysql中沒(méi)有區(qū)分編碼方案和字符集,所以后續(xù)的uft8可以看作字符集。

注意點(diǎn)

在mysql中有兩個(gè)特殊的字符集:

  • utf8mb3:是UniCode字符集編碼方案中utf8的閹割版本,采用的是1~3個(gè)字節(jié)編碼一個(gè)字符,它的另外一個(gè)名字就是utf8也就是說(shuō)mysql中使用的就是閹割版本的utf8字符集。
  • **utf8mb4:**采用4個(gè)字節(jié)編碼一個(gè)字符,最常見(jiàn)的就是存儲(chǔ)emoji表情。

Mysql中查詢(xún)字符集和比較規(guī)則

查詢(xún)字符集

查詢(xún)字符集命令可以采用show character set;或者show charset;都可以實(shí)現(xiàn)字符集查看,可以支持字符集模糊查詢(xún)?nèi)?code>show character set like '%utf8%';

##### mysql5.7.26版本中,包含41個(gè)字符集,下面列出常用的幾個(gè)
mysql> show character set;
+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
| latin1   | cp1252 West European            | latin1_swedish_ci   |      1 |
| ascii    | US ASCII                        | ascii_general_ci    |      1 |
| gb2312   | GB2312 Simplified Chinese       | gb2312_chinese_ci   |      2 |
| gbk      | GBK Simplified Chinese          | gbk_chinese_ci      |      2 |
| utf8     | UTF-8 Unicode                   | utf8_general_ci     |      3 |
| utf8mb4  | UTF-8 Unicode                   | utf8mb4_general_ci  |      4 |
........
+----------+---------------------------------+---------------------+--------+
41 rows in set (0.00 sec)

查詢(xún)比較規(guī)則

每個(gè)字符集都會(huì)對(duì)應(yīng)一些比較規(guī)則,查詢(xún)所有字符集的比較規(guī)則顯然是太多了,所以這里以u(píng)tf8字符集為例查詢(xún)比較規(guī)則。

#### mysql5.7.26版本中utf8字符集對(duì)應(yīng)27個(gè)比較規(guī)則,其余省略
mysql> show collation like '%utf8\_%';
+--------------------------+---------+-----+---------+----------+---------+
| Collation                | Charset | Id  | Default | Compiled | Sortlen |
+--------------------------+---------+-----+---------+----------+---------+
| utf8_general_ci          | utf8    |  33 | Yes     | Yes      |       1 |
| utf8_bin                 | utf8    |  83 |         | Yes      |       1 |
| utf8_unicode_ci          | utf8    | 192 |         | Yes      |       8 |
| utf8_spanish_ci          | utf8    | 199 |         | Yes      |       8 |
.........
+--------------------------+---------+-----+---------+----------+---------+
27 rows in set (0.00 sec)

Default列為YES表明該比較規(guī)則是默認(rèn)的,一般比較規(guī)則中包含general代表通用比較規(guī)則。

比較規(guī)則一般命名如規(guī)律如下:

  • 以字符集命名開(kāi)頭,如上面提到utf8。
  • 中間一般是指作用于哪種語(yǔ)言,如utf8_spanish_ci,就是以西班牙語(yǔ)的規(guī)則比較。
  • 后綴用于區(qū)分比較規(guī)則如是否區(qū)分大小寫(xiě)、重音,二進(jìn)制等

后綴規(guī)則如下:

后綴描述
_ci不區(qū)分大小寫(xiě)
_cs區(qū)分大小寫(xiě)
_bin以二進(jìn)制的形式比較
_ai不區(qū)分重音
_as區(qū)分重音

到此這篇關(guān)于Mysql字符集和排序規(guī)則詳解的文章就介紹到這了,更多相關(guān)Mysql字符集內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql數(shù)據(jù)庫(kù)的主從復(fù)制與讀寫(xiě)分離精講教程

    Mysql數(shù)據(jù)庫(kù)的主從復(fù)制與讀寫(xiě)分離精講教程

    這篇文章主要為大家詳細(xì)介紹了Mysql數(shù)據(jù)庫(kù)的主從復(fù)制與讀寫(xiě)分離的示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • MySQL優(yōu)化之大字段longtext、text所生產(chǎn)的問(wèn)題

    MySQL優(yōu)化之大字段longtext、text所生產(chǎn)的問(wèn)題

    本文主要介紹了MySQL優(yōu)化之大字段longtext、text所生產(chǎn)的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 詳解mysql8.018在linux上安裝與配置過(guò)程

    詳解mysql8.018在linux上安裝與配置過(guò)程

    這篇文章主要介紹了mysql8.018在linux上安裝與配置過(guò)程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Navicat for SQLite導(dǎo)入csv中文數(shù)據(jù)的方法

    Navicat for SQLite導(dǎo)入csv中文數(shù)據(jù)的方法

    這篇文章主要為大家詳細(xì)介紹了Navicat for MySql導(dǎo)入.CSV文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • MySQL索引中的頁(yè)及索引的分類(lèi)及使用

    MySQL索引中的頁(yè)及索引的分類(lèi)及使用

    文章介紹了InnoDB存儲(chǔ)引擎的頁(yè)結(jié)構(gòu)(16KB邏輯單位,含頁(yè)頭、頁(yè)尾、用戶(hù)記錄等)及索引分類(lèi),包括普通索引(MUL)、唯一索引(UNI)、主鍵索引(PRI)等,強(qiáng)調(diào)主鍵索引作為聚簇索引的特性,以及索引覆蓋優(yōu)化查詢(xún)效率的原理,感興趣的朋友跟隨小編一起看看吧
    2025-07-07
  • 淺談MySQL安裝starting the server失敗的解決辦法

    淺談MySQL安裝starting the server失敗的解決辦法

    如果電腦是不是第一次安裝MySQL,一般會(huì)出現(xiàn)報(bào)錯(cuò)情況,starting the server失敗,通常是因?yàn)樯洗伟惭b的該軟件未清除干凈,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解一下
    2021-09-09
  • MySQL5.7并行復(fù)制原理及實(shí)現(xiàn)

    MySQL5.7并行復(fù)制原理及實(shí)現(xiàn)

    MySQL 5.7并行復(fù)制的思想簡(jiǎn)單易懂,本文就詳細(xì)的介紹了MySQL5.7并行復(fù)制原理及實(shí)現(xiàn),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • 在MySQL中創(chuàng)建實(shí)現(xiàn)自增的序列(Sequence)的教程

    在MySQL中創(chuàng)建實(shí)現(xiàn)自增的序列(Sequence)的教程

    這篇文章主要介紹了在MySQL中創(chuàng)建實(shí)現(xiàn)自增的序列(Sequence)的教程,分別列舉了兩個(gè)實(shí)例并簡(jiǎn)單討論了一些限制因素,需要的朋友可以參考下
    2015-12-12
  • SQL語(yǔ)句之如何用JOIN連接多個(gè)表

    SQL語(yǔ)句之如何用JOIN連接多個(gè)表

    這篇文章主要介紹了SQL語(yǔ)句之如何用JOIN連接多個(gè)表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • mysql_connect(): Connection using old (pre-4.1.1) authentication protocol refused

    mysql_connect(): Connection using old (pre-4.1.1) authentica

    MySQL錯(cuò)誤提示:Connection using old (pre-4.1.1) authentication protocol refused (client option ‘secure_auth’ enabled)解決辦法,需要的朋友可以參考下
    2014-04-04

最新評(píng)論