查詢mysql校對集語句 MySQL 字符集和校對

2021-10-19 06:33:33 字數 1682 閱讀 8459

字符集是指一種從二進位制編碼到某類字元符號的對映,校對是一組用於某個字符集的排序規則。每一類編碼字元都有其對應的字符集和校對規則

mysql 如何使用字符集

每種字符集都可能有多種校對規則,並且都有乙個預設的校對規則。每個校對規則都是針對某個特定的字符集的,和其他的字符集都沒有關係。校對規則和字符集總是一起使用的,我們也將這樣的組合統稱為乙個字符集。

mysql的設定可以分為兩類:建立物件時的預設值、在伺服器和客戶端通訊時的設定。

建立物件時的預設值

mysql伺服器有預設的字符集和校對規則,每個資料庫、資料表也有自己的預設值。這是乙個逐層繼承的預設設定,最終最靠底層的預設設定將影響我們建立的物件。這些預設值,從上而下地告訴mysql應該使用什麼字符集來儲存某個列。

在這個階梯的每一層,你都可以指定乙個特定的字符集或者讓伺服器使用它的預設值:

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

建立表的時候,將根據資料庫的字符集設定指定這個表的字符集設定

建立列的時候,將根據表的設定指定列的字符集設定

需要注意的是: 真正存放資料的是列,所以更高「階梯」的設定只是指定預設值。乙個表的預設字符集設定無法影響儲存在這個表中某個列的值。只有當建立列而沒有列指定字符集的時候,如果沒有指定字符集,表的預設字符集才有作用。

伺服器和客戶端通訊時的設定

當伺服器和客戶端通訊的時候,他們可能使用不同的字符集。這時,伺服器端將進行必要的翻譯轉換工作,如圖所示:

根據需要,可以使用 set names 或者 set character set 語句來改變上面的設定。不過在伺服器上使用這個命令只會改變伺服器端的設定。客戶端程式和客戶端的api也需要使用正確的字符集才能避免在通訊時出現問題。

選擇字符集和校對規則

在乙個資料庫中使用多個不同的字符集是一件很讓人頭疼的事情,字符集之間不相容問題會很難纏。有時候一切看起來很正常,但是當某個特殊字元出現的時候,所有型別的操作可能都無法進行。

正確的方法是,最好先為伺服器(或者資料庫) 選擇乙個合理的字符集。然後根據不同的實際情況,讓某些列選擇合適的字符集。

下面展示了在建立資料庫、表、列的時候如何顯式地指定字符集和校對規則:

create database d charset latin1;

create table d.t(

col1 char(1),

col2 char(1) charset utf8,

col3 char(1) collate latin1_bin

)default charset=cp1251;

這個表最後的字符集和校對規則如下:

field

type

collation

col1

char(1)

cp1251_general_ci

col2

char(!)

utf8_general_ci

col3

char(!)

latin1_bin

字符集和校對規則如何影響查詢

某些字符集和校對規則可能會需要更多的cpu操作,可能會消耗更多的記憶體和儲存空間,甚至還會影響索引的正常操作。

只有在排序查詢要求的字符集和伺服器資料的字符集相同的時候,才能使用索引進行排序。索引根據資料列的校對規則進行排序。如果希望使用別的校對規則進行排序,那麼mysql就需要使用檔案排序。

mysql校對集 MySQL校對集問題

mysql校對集問題 校對集問題 校對集,其實就是資料的比較方式。校對集,共有三種,分別為 bin binary,二進位制比較,區分大小寫 cs case sensitive,大小寫敏感,區分大小寫 ci case insensitive,大小寫不敏感,不區分大小寫。檢視 全部 校對集 基本語法 s...

mysql 檢視校對集 MySQL教程之校對集問題

本篇文章主要給大家介紹mysql中的校對集問題,希望對需要的朋友有所幫助!校對集問題 校對集,其實就是資料的比較方式。校對集,共有三種,分別為 bin binary,二進位制比較,區分大小寫 cs case sensitive,大小寫敏感,區分大小寫 ci case insensitive,大小寫不...

MySQL校對集問題

校對集 資料比較的方式 校對集有三種格式 bin binary,二進位制比較,取出二進位制位,一位一位的比較,區分大小寫 cs case sensitive 大小寫敏感,區分大小寫 ci case insensitice,大小寫不敏感,不區分大小寫 檢視資料庫所支援的校對集 檢視所有校對集 校對集應...