全球化和本地化

 摘要: 本篇博客僅做爲筆記,若有侵權,請聯繫,當即刪除(網上找博客學習,而後手記筆記,因紙質筆記不便保存,因此保存到網絡筆記)。數據庫

  本博介紹MySQL處理不一樣字符集和語言的基礎知識。服務器

  1、字符集和校對順序網絡

  數據庫表被用來存儲和檢索數據。不一樣的語言和字符集須要以不一樣的方式存儲和檢索。所以,MySQL須要適應不一樣的字符集(不一樣的字母和字符),適應不一樣的排序和檢索數據的方法。app

  在討論多種語言和字符集時,將會遇到如下重要術語:函數

  (1)字符集爲字母和符號的集合;學習

  (2)編碼爲某個字符集成員的內部表示;編碼

  (3)校對爲規定字符如何比較的指令。spa

注意:校對爲何重要  排序英文正文很容易,對嗎?或許不。考慮APE、apex和Apple。它們正處於正確的排序順序嗎?這有賴於你是否想區分大小寫。使用區分大小寫的校對順序,這些詞有一種排序方式,使用不區分大小寫的校對順序有另一種排序方式。這不只影響排序(如用ORDER BY排序數據),還影響搜索(例如,尋找apple的WHERE子句是否能找到APPLE)。在使用諸如法文或德文時,狀況更復雜,在使用不基於拉丁文的字符集(日文、希伯來文、俄文等)時,狀況更爲複雜。code

  在MySQL的正常數據庫活動(SELECT、INSERT等)中,不須要操心太多的東西。使用何種字符集和校對的決定在服務器、數據庫和表級進行。blog

  2、使用字符集和校對順序

  MySQL支持衆多的字符集。爲查看所支持的字符集完整列表,使用如下語句:

SHOW CHARACTER SET;

  分析:這條語句顯示全部可用的字符集以及每一個字符集的描述和默認校對。

  爲了查看所支持校對的完整列表,使用如下語句:

SHOW COLLATION;

  此語句顯示全部可用的校對,以及它們適用的字符集。能夠看到有的字符集具備不止一種校對。例如,latin1對不一樣的歐洲語言有幾種校對,而卻許多校對出現兩次,以此區分大小寫(由_cs表示),以此不區分大小寫(由_ci表示)。

  一般系統管理在安裝時定義一個默認的字符集和校對。此外,也能夠在建立數據庫時,指定默認的字符集和校對。爲了肯定所用的字符集和校對,可使用如下語句:

SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collarion%';

  實際上,字符集不多是服務器範圍(甚至數據庫範圍)的設置。不一樣的表,甚至不一樣的列均可能須要不一樣的字符集,並且二者均可以在建立表時指定。

  爲了給表指定字符集和校對,可以使用帶子句的CREATE TABLE:

CREATE TABLE mytable
(
    columnn1 INT,
    columnn2 VARCHAR(10)      
) DEFAULT CHARACTER SET hebrew
  COLLATE hebrew_general_ci;

  分析:此語句建立一個包含兩列的表,而且指定一個字符集和一個校對順序。

  這個例子中指定了CHARACTER SET和COLLATE二者。通常,MySQL以下肯定使用什麼樣的字符集和校對。

  (1)若是指定CHARACTER SET和COLLATE二者,則使用這些值。

  (2)若是隻指定CHARACTER SET,則使用此字符集及其默認的校對(如SHOW CHARACTER SET的結果中所示)。

  (3)若是既不指定CHARATER SET,也不指定COLLATE,則使用數據庫默認。

  除了能指定字符集和校對的表範圍外,MySQL還容許對每一個列設置它們,以下所示:

CREATE TABLE mytable
(
    columnn1 INT,
    columnn2 VARCHAR(10),
    column3  VARCHAR(10) CHARACTER SET latin1 COLLATE
    lantin1_general_ci
) DEFAULT CHARACTER SET hebrew
  COLLATE hebrew_general_ci;

  分析:這裏對整個表以及一個特定的列指定了CHARACTER SET和COLLATE。

  如前所述,校對在對用ORDER BY子句檢索出來的數據排序時起重要的做用。若是你須要用與建立表時不一樣的校對順序排序特定的SELECT語句,能夠在SELECT語句自身中進行:

SELECT * FROM customers
ORDER BY lastname,firstname COLLLATE lantin1_general_cs;

  分析:此SELECT使用COLLATE指定一個備用的校對順序(在這個例子中,爲區分大小寫的校對)。這顯然將會影響到結果排序的次序。

注意:臨時區分大小寫  上面的SELECT語句演示了再一般不區分大小寫的表上進行區分大小寫搜索的一種技術。固然,反過來也是能夠的。

      SELECT的其餘COLLATE子句  除了這裏看到的在ORDER BY子句中使用之外,COLLATE還能夠用於GROUP BY、HAVING、彙集函數、別名等。

  最後,值得注意的是,若是絕對須要,串能夠在字符集之間進行轉換。爲此,使用Cast()或Convert()函數。

  3、小結

  本博中,咱們學習了字符集和校對的基礎知識,還學習瞭如何對特定的表和列定義字符集和校對,如何在須要時使用備用的校對。

相關文章
相關標籤/搜索