1. 程式人生 > 其它 >字符集_MySQL字符集和排序規則

字符集_MySQL字符集和排序規則

技術標籤:字符集

1、字符集概述

大家都知道,計算機只能識別二進位制碼,為了讓計算機能處理文字,人們給每個文字進行編碼,這個編碼就是計算機字符集的由來。

字符集是多個字元的集合,而字元是各種文字、符號和編碼的總稱。MySQL提供了字符集支援,可以使用各種字符集儲存資料。可以在伺服器,資料庫,表和列級別指定字符集。

eac5bb45faedec69ac943d0a6a0188bf.png

MySQL常用字符集

8f3b344ab1065f4704e92a38e3b4aecd.png

MySQL排序規則字尾

2、MySQL的字符集和排序規則

字符集:用來定義MySQL儲存字串的方式

排序規則:用來定義比較字串的方式。

字符集和排序規則是一對多的關係。

在同一伺服器,同一資料庫甚至同一表中混合使用具有不同字符集或排序規則的字串

3、MySQL字符集的設定

伺服器字符集和排序規則

伺服器字符集和排序規則,可以在MySQL的配置檔案匯中設定。

在my.cnf中設定

[mysql]character_set_server=utf8

查詢當前伺服器的字符集和排序規則

show variables like 'character_set_server';show variables like 'collation_server';

資料庫字符集和排序規則

資料庫字符集和排序規則可以在建立資料庫的時候指定,也可以在建立完資料庫後通過‘alter database’命令進行修改。如果資料庫裡已經存在資料,則以前的資料還是按照久的字符集進行儲存,新資料按照新的字符集存放。

設定資料庫字符集和排序規則

ed90f29ddd86449b761ac47756098ffe.png

設定資料庫字符集和排序規則

查詢當前資料庫的字符集和排序規則

show variables like 'character_set_database';show variables like 'collation_ database';

MySQL設定資料庫字符集和排序規則的規則如下:

  • 如果指定了字符集和排序規則,則使用指定的字符集和排序規則
  • 如果指定了字符集未指定排序規則,則使用指定字符集其預設排序規則
  • 如果指定了排序規則但未指定字符集,則使用與排序規則相關的字符集
  • 如果未指定字符集和排序規則,則使用伺服器字符集和伺服器排序規則。

表字符集和排序規則

表的字符集和排序規則在建立表的時候指定,也可以通過alter table命令進行修改,如果表中已有資料,修改字符集對原有資料沒有影響。

設定表字符集和排序規則

b413db4e5d63cb71381cbeb325149788.png

設定表字符集和排序規則

查詢當前表的字符集和排序規則

show create table

MySQL設定表字符集和排序規則的規則如下:

  • 如果指定了字符集和排序規則,則使用指定的字符集和排序規則
  • 如果指定了字符集未指定排序規則,則使用指定字符集其預設排序規則
  • 如果指定了排序規則但未指定字符集,則使用與排序規則相關的字符集
  • 如果未指定字符集和排序規則,則使用資料庫字符集和伺服器排序規則。

列字符集和排序規則

每個“ 字元 ”列(即,型別列 CHAR, VARCHAR中, TEXT型別)都有字符集和列排序規則。列定義語法,CREATE TABLE並 ALTER TABLE具有用於指定列字符集和排序規則的可選子句:

ec2d0b4d2cf9433d11efbe921b717b94.png

設定列字符集和排序規則

查詢當前列的字符集和排序規則

show create table

MySQL設定列字符集和排序規則的規則如下:

  • 如果指定了字符集和排序規則,則使用指定的字符集和排序規則
  • 如果指定了字符集未指定排序規則,則使用指定字符集其預設排序規則
  • 如果指定了排序規則但未指定字符集,則使用與排序規則相關的字符集
  • 如果未指定字符集和排序規則,則使用表字符集和伺服器排序規則。

4、MySQL字符集修改

修改帶有歷史資料的資料庫的字符集,步驟如下:

  1. 匯出表結構
  2. 手工修改匯出檔案的字符集為新的字符集
  3. 匯出所有記錄
  4. 修改資料檔案的字符集
  5. 建立新的資料庫
  6. 利用匯出的檔案建表
  7. 利用匯出的檔案匯入資料