最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

什么是字符集

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

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

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

而ac將無法轉(zhuǎn)換,因為超出了識別范圍。

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

什么是比較規(guī)則

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

常用字符集

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

ASCII字符集

這是一個最簡單的字符集包含128個字符包含大小寫字母,空格,數(shù)字,標(biāo)點符號,特殊字符等,因為總共只有128個字符,那么可以只采用一個字節(jié)編碼。

ISO8859-1

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

GB2312

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

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

這種情況編碼長度不確定的被稱為變長編碼。

GBK字符集

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

Unicode字符集

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

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

注意點

在mysql中有兩個特殊的字符集:

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

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

查詢字符集

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

##### mysql5.7.26版本中,包含41個字符集,下面列出常用的幾個
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)

查詢比較規(guī)則

每個字符集都會對應(yīng)一些比較規(guī)則,查詢所有字符集的比較規(guī)則顯然是太多了,所以這里以utf8字符集為例查詢比較規(guī)則。

#### mysql5.7.26版本中utf8字符集對應(yīng)27個比較規(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ī)律如下:

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

后綴規(guī)則如下:

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

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

相關(guān)文章

  • MySQL必備基礎(chǔ)之分組函數(shù) 聚合函數(shù) 分組查詢詳解

    MySQL必備基礎(chǔ)之分組函數(shù) 聚合函數(shù) 分組查詢詳解

    這篇文章主要介紹了MySQL分組函數(shù)、聚合函數(shù)、分組查詢,結(jié)合實例形式分析了MySQL查詢分組函數(shù)以及查詢聚合函數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2021-10-10
  • MySQL之InnoDB中的redo日志類型詳解

    MySQL之InnoDB中的redo日志類型詳解

    這篇文章主要介紹了MySQL之InnoDB中的redo日志類型,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • MySQL中between子句和limit子句的區(qū)別解析

    MySQL中between子句和limit子句的區(qū)別解析

    BETWEEN和LIMIT是SQL中用于過濾和結(jié)果裁剪的關(guān)鍵字,但解決的問題不同,不能互相替代,BETWEEN用于限定數(shù)據(jù)的取值范圍,而LIMIT用于限定返回的行數(shù),兩者的執(zhí)行順序和索引利用方式也有所不同,本文給大家介紹MySQL中between子句和limit子句的區(qū)別,感興趣的朋友一起看看吧
    2025-12-12
  • CentOS 6.5下yum安裝 MySQL-5.5全過程圖文教程

    CentOS 6.5下yum安裝 MySQL-5.5全過程圖文教程

    在linux安裝mysql是一個困難的事情,yum安裝一般是安裝的mysql5.1,現(xiàn)在經(jīng)過自己不懈努力終于能用yum安裝mysql5.5了。下面通過兩種方法給大家介紹CentOS 6.5下yum安裝 MySQL-5.5全過程,一起學(xué)習(xí)吧
    2016-05-05
  • MySql COALESCE函數(shù)使用方法代碼案例

    MySql COALESCE函數(shù)使用方法代碼案例

    這篇文章主要介紹了MySql COALESCE函數(shù)使用方法代碼案例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • MySQL中的?Binlog?深度解析及使用詳情

    MySQL中的?Binlog?深度解析及使用詳情

    這篇文章主要介紹了MySQL中的?Binlog?深度解析及使用詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • MySQL如何構(gòu)建數(shù)據(jù)表索引

    MySQL如何構(gòu)建數(shù)據(jù)表索引

    索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。如果想按特定職員的姓來查找他或她,則與在表中搜索所有的行相比,索引有助于更快地獲取信息。本文將通過一個案例帶領(lǐng)你理解索引的概念
    2021-05-05
  • mysql實現(xiàn)模糊查詢并按匹配程度排序

    mysql實現(xiàn)模糊查詢并按匹配程度排序

    這篇文章主要介紹了mysql實現(xiàn)模糊查詢并按匹配程度排序方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL報錯:The?server?quit?without?updating?PID?file的解決思路與方法

    MySQL報錯:The?server?quit?without?updating?PID?file的解決思路

    最近在學(xué)習(xí)mysql二進(jìn)制的時候遇到了個報錯,解決分享給大家,這篇文章主要給大家介紹了關(guān)于MySQL報錯:The?server?quit?without?updating?PID?file的解決思路與方法,需要的朋友可以參考下
    2023-02-02
  • MySQL正則表達(dá)式入門教程

    MySQL正則表達(dá)式入門教程

    這篇文章主要介紹了MySQL正則表達(dá)式,一個簡單的MySQL正則表達(dá)式入門教程,需要的朋友可以參考下
    2014-04-04

最新評論

延津县| 新宁县| 长顺县| 法库县| 青田县| 师宗县| 湖北省| 隆德县| 上蔡县| 义乌市| 乐陵市| 文水县| 舒兰市| 七台河市| 密山市| 麦盖提县| 岳池县| 同仁县| 襄垣县| 抚顺市| 巍山| 阜南县| 墨玉县| 屯门区| 临西县| 南通市| 周宁县| 抚顺县| 开阳县| 丽水市| 房山区| 乐昌市| 屏边| 株洲市| 时尚| 莱芜市| 沛县| 京山县| 武城县| 道真| 临沂市|