高效能的MySQL(7)字元集和校對概述

來源:互聯網
上載者:User

字元集是指一種從二進位編碼到某類字元符號的映射,可以參考如何使用一個位元組來表示英文。

校對是指一組用於某個字元集的定序。
每一類編碼字元都有其對應的字元集和校對規則。

一、MySQL如何使用字元集

每種字元集都可能有多種校對規則,並且都有一個預設的校對規則,並且每個校對規則只是針對某個字元集,和其他的字元集麼有關係。

一定要記住一點:只有基於字元集的值才真正的有字元集的概念。

MySQL的設定可以分為兩類:

1、建立對象時的預設值

伺服器有預設的字元集和校對規則,資料也有自己的預設值,每個表也有自己的預設值,這個是一個繼承的預設設定,最終靠底層的預設設定來影響你建立的對象。

預設情況下:

建立資料庫的時候,將根據伺服器上的character_set_server設定來設定該資料庫的預設字元集。

建立表的時候,根據資料庫的設定指定表的字元設定。

建立列的時候,根據表的設定指定列的字元集設定。

只有建立列沒有為列指定字元集的時候,表的預設才有用。

2、伺服器和用戶端通訊時的設定。

用戶端和服務端通訊的時候,可能使用不同的字元集,這時伺服器端將必須進行必要的轉化。

如果使用latin1開啟了一個串連,並使用set names utf8來告訴伺服器用戶端使用utf-8來傳輸資料,可能會導致一些錯誤。應該先設定用戶端字元集,在PHP中使用mysql_set_charset()來修改用戶端的字元集。

二、MySQL如何比較2個字串的大小

如果比較2個字串的字元集不同,MySQL會先將其轉成同一個字元集再進行比較,如果2個字元集不相容,則會出錯。

Mysql5.0以後的版本會做隱式轉換。還可以使用首碼和collate子句來指定字串的字元集和校對字元集。

這裡有一個通用原則可以供我們使用:

先為伺服器或者資料庫選擇一個合理的字元集,然後根據不同的實際情況,讓某個列選擇自己的字元集。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.