字符集是指一種從二進位制編碼到某類字元符號的對映,校對是指一組用於某個字符集的排序規則。而且每一類編碼字元都有其對應的字元集合校對規則。mysql
基本資訊
mysql支援多種字符集,咱們能夠經過use the information_schema character_sets table or the show character set statement來檢視字符集web
給定的字符集至少會有乙個指定的規則,可是不一樣的字符集不能有相同的校驗規則,咱們能夠經過use the information_schema collations table or the show collation 來檢視某個字符集對應的規則sql
字符集和排序規則的級別
伺服器、資料庫、表和列資料庫
伺服器字符集設定
能夠經過在伺服器啟動時進行設定或者經過修改my.ini、my.cnf等配置檔案進行設定伺服器
mysqld
mysqld --character-set-server=latin1
mysqld --character-set-server=latin1 \
--collation-server=latin1_swedish_ci
若不指定字符集的前提,前兩種命令列意義是相同的,預設的字符集是latin1,若不指定校驗規則的話,這三種表達的意義是相同的
從新編譯更改字符集和校驗規則svg
cmake . -ddefault_charset=latin1
orui
cmake . -ddefault_charset=latin1 \
-ddefault_collation=latin1_german1_ci
修改配置檔案更改字符集和校驗規則編碼
[mysqld]
skip-character-set-client-handshake
collation-server=utf8_unicode_ci
character-set-server=utf8
資料庫字符集和校驗規則設定spa
create database db_name
[[default] character set charset_name]
[[default] collate collation_name]
alter database db_name
[[default] character set charset_name]
[[default] collate collation_name]
create database db_name character set latin1 collate latin1_swedish_ci;
檢視資料庫的字符集和校驗規則
use db_name;
select @@character_set_database, @@collation_database;
orselect default_character_set_name, default_collation_name
from information_schema.schemata where schema_name = 'db_name';
注:若是指定了字符集和校驗規則,則使用指定的校驗規則和字符集
若是只指定了字符集沒有指定校驗規則,則使用預設的校驗規則
若是指定了校驗規則沒有指定字符集,則使用和校驗規則關聯的字符集
若是字符集和校驗規則都沒有指定的話則使用服務的字符集和排序規則
表字符集和校驗規則設定
create table tbl_name (column_list)
[[default] character set charset_name]
[collate collation_name]]
alter table tbl_name
[[default] character set charset_name]
[collate collation_name]
例子create table t1 ( ... )
character set latin1 collate latin1_danish_ci;
若是指定了字符集和校驗規則,則使用指定的校驗規則和字符集
若是只指定了字符集沒有指定校驗規則,則使用預設的校驗規則
若是指定了校驗規則沒有指定字符集,則使用和校驗規則關聯的字符集
不然則使用資料庫字符集和排序規則
列定義字符集和校驗規則
col_name (col_length)
[character set charset_name]
[collate collation_name]
col_name (val_list)
[character set charset_name]
[collate collation_name]
例子create table t1
col1 varchar(5)
character set latin1
collate latin1_german1_ci
alter table t1 modify
col1 varchar(5)
character set latin1
collate latin1_swedish_ci;
注:若是指定了字符集和校驗規則,則使用指定的校驗規則和字符集
若是只指定了字符集沒有指定校驗規則,則使用預設的校驗規則
若是指定了校驗規則沒有指定字符集,則使用和校驗規則關聯的字符集
不然則使用表的字符集和排序規則
比較好的文章
mysql字符集和校對規則 Mysql校對集
簡要說明 字符集和校對規則 字符集是一套符號和編碼。校對規則是在字符集內用於比較字元的一套規則。mysql在collation提供較強的支援,oracel在這方面沒查到相應的資料。校對規則一般分為兩類 binary collation,二元法,直接比較字元的編碼,可以認為是區分大小寫的,因為字符集中...
mysql字符集和校對規則 Mysql校對集
字符集的概念大家都清楚,校對規則很多人不了解,一般資料庫開發中也用不到這個概念,mysql在這方便貌似很先進,大概介紹一下 簡要說明 字符集和校對規則 字符集是一套符號和編碼。校對規則是在字符集內用於比較字元的一套規則。mysql在collation提供較強的支援,oracel在這方面沒查到相應的資...
MySQL 字符集和校對
字符集是指一種從二進位制編碼到某類字元符號的對映,校對是一組用於某個字符集的排序規則。每一類編碼字元都有其對應的字符集和校對規則 每種字符集都可能有多種校對規則,並且都有乙個預設的校對規則。每個校對規則都是針對某個特定的字符集的,和其他的字符集都沒有關係。校對規則和字符集總是一起使用的,我們也將這樣...