亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

計算機存儲數(shù)據(jù)的方式都是二進制數(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(十六進制 0x10304)

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

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

什么是比較規(guī)則

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

常用字符集

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

ASCII字符集

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

ISO8859-1

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

GB2312

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

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

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

GBK字符集

GBK對GB2312的字符范圍進行的擴充,兼容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ū)分大小寫、重音,二進制等

后綴規(guī)則如下:

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

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

相關(guān)文章

  • 怎樣安全地關(guān)閉MySQL實例

    怎樣安全地關(guān)閉MySQL實例

    這篇文章主要介紹了怎樣安全地關(guān)閉MySQL實例,文中講解非常細致,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-07-07
  • mysql中DATE_FORMAT()函數(shù)的具體使用

    mysql中DATE_FORMAT()函數(shù)的具體使用

    在MySQL中,DATE_FORMAT()函數(shù)用于將日期/時間類型的值按照指定的格式進行格式化輸出,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • mysql索引必須了解的幾個重要問題

    mysql索引必須了解的幾個重要問題

    這篇文章主要介紹了mysql索引必須了解的幾個重要問題,分析了MySQL數(shù)據(jù)庫索引的相關(guān)概念與使用技巧,需要的朋友可以參考下
    2016-04-04
  • Mysql binlog日志文件過大的解決

    Mysql binlog日志文件過大的解決

    本文主要介紹了Mysql binlog日志文件過大的解決,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • MySQL 自動清理binlog日志的方法

    MySQL 自動清理binlog日志的方法

    這篇文章主要介紹了MySQL 自動清理binlog日志的方法,需要的朋友可以參考下
    2016-10-10
  • Mysql命令大全(詳細篇)

    Mysql命令大全(詳細篇)

    這篇文章主要介紹了Mysql命令大全,這里整理的算是比較詳細的,需要的朋友可以參考下
    2015-11-11
  • mysql alter table修改表命令整理

    mysql alter table修改表命令整理

    這篇文章主要介紹了mysql alter table修改表命令整理的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • MySQL中外鍵的創(chuàng)建、約束以及刪除

    MySQL中外鍵的創(chuàng)建、約束以及刪除

    這篇文章主要給大家介紹了關(guān)于MySQL中外鍵的創(chuàng)建、約束以及刪除的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Linux下二進制方式安裝mysql5.7版本和系統(tǒng)優(yōu)化的步驟

    Linux下二進制方式安裝mysql5.7版本和系統(tǒng)優(yōu)化的步驟

    這篇文章主要介紹了Linux下二進制方式安裝mysql5.7版本和系統(tǒng)優(yōu)化的步驟,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • MySQL?數(shù)據(jù)庫的對庫的操作及其數(shù)據(jù)類型

    MySQL?數(shù)據(jù)庫的對庫的操作及其數(shù)據(jù)類型

    這篇文章主要介紹了MySQL?數(shù)據(jù)庫的對庫的操作及其數(shù)據(jù)類型,下面文字圍繞數(shù)據(jù)庫的對庫的操作及其數(shù)據(jù)類型的相關(guān)資料展開詳細介紹,需要的小伙伴可以參考一下,希望對你有所幫助
    2021-12-12

最新評論