av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

MySQL字符集和校對規(guī)則詳解

在講解字符集和校對規(guī)則之前,我們先來簡單了解一下字符、字符集和字符編碼。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,振興企業(yè)網(wǎng)站建設,振興品牌網(wǎng)站建設,網(wǎng)站定制,振興網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,振興網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

字符(Character)是計算機中字母、數(shù)字、符號的統(tǒng)稱,一個字符可以是一個中文漢字、一個英文字母、一個阿拉伯數(shù)字、一個標點符號等。

計算機是以二進制的形式來存儲數(shù)據(jù)的。平時我們在顯示器上看到的數(shù)字、英文、標點符號、漢字等字符都是二進制數(shù)轉(zhuǎn)換之后的結(jié)果。

字符集(Character set)定義了字符和二進制的對應關系,為字符分配了唯一的編號。常見的字符集有 ASCII、GBK、IOS-8859-1 等。

字符編碼(Character encoding)也可以稱為字集碼,規(guī)定了如何將字符的編號存儲到計算機中。


校對規(guī)則(Collation)也可以稱為排序規(guī)則,是指在同一個字符集內(nèi)字符之間的比較規(guī)則。字符集和校對規(guī)則是一對多的關系,每個字符集都有一個默認的校對規(guī)則。字符集和校對規(guī)則相輔相成,相互依賴關聯(lián)。

簡單來說,字符集用來定義 MySQL 存儲字符串的方式,校對規(guī)則用來定義 MySQL 比較字符串的方式。

有些數(shù)據(jù)庫并沒有清晰的區(qū)分開字符集和校對規(guī)則。例如,在 SQL Server 中創(chuàng)建數(shù)據(jù)庫時,選擇字符集就相當于選定了字符集和校對規(guī)則。

而在 MySQL 中,字符集和校對規(guī)則是區(qū)分開的,必須設置字符集和校對規(guī)則。一般情況下,沒有特殊需求,只設置其一即可。只設置字符集時,MySQL 會將校對規(guī)則設置為字符集中對應的默認校對規(guī)則。

可以通過
SHOW VARIABLES LIKE 'character%';命令查看當前 MySQL 使用的字符集,命令和運行結(jié)果如下:

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | gbk                                                     |
| character_set_connection | gbk                                                     |
| character_set_database   | latin1                                                  |
| character_set_filesystem | binary                                                  |
| character_set_results    | gbk                                                     |
| character_set_server     | latin1                                                  |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.01 sec)

上述運行結(jié)果說明如下表所示:

名稱 說明
character_set_client MySQL 客戶端使用的字符集
character_set_connection 連接數(shù)據(jù)庫時使用的字符集
character_set_database 創(chuàng)建數(shù)據(jù)庫使用的字符集
character_set_filesystem MySQL 服務器文件系統(tǒng)使用的字符集,默認值為 binary,不做任何轉(zhuǎn)換
character_set_results 數(shù)據(jù)庫給客戶端返回數(shù)據(jù)時使用的字符集
character_set_server MySQL 服務器使用的字符集,建議由系統(tǒng)自己管理,不要人為定義
character_set_system 數(shù)據(jù)庫系統(tǒng)使用的字符集,默認值為 utf8,不需要設置
character_sets_dir 字符集的安裝目錄

可以通過
SHOW VARIABLES LIKE 'collation\_%';命令查看當前 MySQL 使用的校對規(guī)則,命令和運行結(jié)果如下:

mysql> SHOW VARIABLES LIKE 'collation\_%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | gbk_chinese_ci    |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set, 1 warning (0.01 sec)

對上述運行結(jié)果說明如下:

  • collation_connection:連接數(shù)據(jù)庫時使用的校對規(guī)則
  • collation_database:創(chuàng)建數(shù)據(jù)庫時使用的校對規(guī)則
  • collation_server:MySQL 服務器使用的校對規(guī)則

校對規(guī)則命令約定如下:

  • 以校對規(guī)則所對應的字符集名開頭
  • 以國家名居中(或以 general 居中)
  • 以 ci、cs 或 bin 結(jié)尾,ci 表示大小寫不敏感,cs 表示大小寫敏感,bin 表示按二進制編碼值比較。

MySQL字符集的轉(zhuǎn)換過程

MySQL 中字符集的轉(zhuǎn)換過程如下:

1)在命令提示符窗口(cmd 命令行)中執(zhí)行 MySQL 命令或 sql 語句時,這些命令或語句從“命令提示符窗口字符集”轉(zhuǎn)換為“character_set_client”定義的字符集。

2)使用命令提示符窗口成功連接 MySQL 服務器后,就建立了一條“數(shù)據(jù)通信鏈路”,MySQL 命令或 sql 語句沿著“數(shù)據(jù)鏈路”傳向 MySQL 服務器,由 character_set_client 定義的字符集轉(zhuǎn)換為 character_set_connection 定義的字符集。

3)MySQL 服務實例收到數(shù)據(jù)通信鏈路中的 MySQL 命令或 sql 語句后,將 MySQL 命令或 sql 語句從 character_set_connection 定義的字符集轉(zhuǎn)換為 character_set_server 定義的字符集。

4)若 MySQL 命令或 sql 語句針對于某個數(shù)據(jù)庫進行操作,此時將 MySQL 命令或 sql 語句從 character_set_server 定義的字符集轉(zhuǎn)換為 character_set_database 定義的字符集。

5)MySQL 命令或 sql 語句執(zhí)行結(jié)束后,將執(zhí)行結(jié)果設置為 character_set_results 定義的字符集。

6)執(zhí)行結(jié)果沿著打開的數(shù)據(jù)通信鏈路原路返回,將執(zhí)行結(jié)果從 character_set_results 定義的字符集轉(zhuǎn)換為 character_set_client 定義的字符集,最終轉(zhuǎn)換為命令提示符窗口字符集,顯示到命令提示符窗口中。


分享文章:MySQL字符集和校對規(guī)則詳解
標題來源:http://uogjgqi.cn/article/dhipcjg.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流