《MYSQL教程mysql字符集和校對規(guī)則(Mysql校對集)》要點:
本文介紹了MYSQL教程mysql字符集和校對規(guī)則(Mysql校對集),希望對您有用。如果有疑問,可以聯(lián)系我們。
簡要說明 字符集和校對規(guī)則
字符集是一套符號和編碼.校對規(guī)則是在字符集內(nèi)用于比較字符的一套規(guī)則.
MySql在collation提供較強的支持,oracel在這方面沒查到相應的資料.
不同字符集有不同的校對規(guī)則,命名約定:以其相關的字符集名開始,通常包括一個語言名,并且以_ci(大小寫不敏感)、_cs(大小寫敏感)或_bin(二元)結束
校對規(guī)則一般分為兩類:
binary collation,二元法,直接比較字符的編碼,可以認為是區(qū)分大小寫的,因為字符集中'A'和'a'的編碼顯然不同.
字符集_語言名,utf8默認校對規(guī)則是utf8_general_ci
mysql字符集和校對規(guī)則有4個級別的默認設置:服務器級、數(shù)據(jù)庫級、表級和連接級.
具體來說,我們系統(tǒng)使用的是utf8字符集,如果使用utf8_bin校對規(guī)則執(zhí)行sql查詢時區(qū)分大小寫,使用utf8_general_ci 不區(qū)分大小寫.不要使用utf8_unicode_ci.
如create database demo CHARACTER SET utf8; 默認校對規(guī)則是utf8_general_ci .
Unicode與UTF8
Unicode只是一個符號集,它只規(guī)定了符號的二進制代碼,卻沒有規(guī)定這個二進制代碼應該如何存儲.
UTF8字符集是存儲Unicode數(shù)據(jù)的一種可選方法.mysql同時支持另一種實現(xiàn)ucs2.
詳細說明 字符集(charset):是一套符號和編碼.
校對規(guī)則(collation):是在字符集內(nèi)用于比較字符的一套規(guī)則,比如定義'A'<'B'這樣的關系的規(guī)則.不同collation可以實現(xiàn)不同的比較規(guī)則,如'A'='a'在有的規(guī)則中成立,而有的不成立;進而說,就是有的規(guī)則區(qū)分大小寫,而有的無視.
每個字符集有一個或多個校對規(guī)則,并且每個校對規(guī)則只能屬于一個字符集.
binary collation,二元法,直接比較字符的編碼,可以認為是區(qū)分大小寫的,因為字符集中'A'和'a'的編碼顯然不同.除此以外,還有更加復雜的比較規(guī)則,這些規(guī)則在簡單的二元法之上增加一些額外的規(guī)定,比較就更加復雜了.
mysql5.1在字符集和校對規(guī)則的使用比其它大多數(shù)數(shù)據(jù)庫管理系統(tǒng)超前許多,可以在任何級別進行使用和設置,為了有效地使用這些功能,你需要了解哪些字符集和 校對規(guī)則是可用的,怎樣改變默認值,以及它們怎樣影響字符操作符和字符串函數(shù)的行為.
校對規(guī)則一般有這些特征: 兩個不同的字符集不能有相同的校對規(guī)則.
每個字符集有一個默認校對規(guī)則.例如,utf8默認校對規(guī)則是utf8_general_ci.
存在校對規(guī)則命名約定:它們以其相關的字符集名開始,通常包括一個語言名,并且以_ci(大小寫不敏感)、_cs(大小寫敏感)或_bin(二元)結束
確定默認字符集和校對
字符集和校對規(guī)則有4個級別的默認設置:服務器級、數(shù)據(jù)庫級、表級和連接級.
數(shù)據(jù)庫字符集和校對
每一個數(shù)據(jù)庫有一個數(shù)據(jù)庫字符集和一個數(shù)據(jù)庫校對規(guī)則,它不能夠為空.CREATE DATABASE和ALTER DATABASE語句有一個可選的子句來指定數(shù)據(jù)庫字符集和校對規(guī)則:
例如:
CREATE DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL這樣選擇數(shù)據(jù)庫字符集和數(shù)據(jù)庫校對規(guī)則:
? 如果指定了CHARACTER SET X和COLLATE Y,那么采用字符集X和校對規(guī)則Y.
? 如果指定了CHARACTER SET X而沒有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默認校對規(guī)則.
? 否則,采用服務器字符集和服務器校對規(guī)則.
在SQL語句中使用COLLATE
?使用COLLATE子句,能夠為一個比較覆蓋任何默認校對規(guī)則.COLLATE可以用于多種SQL語句中.
使用WHERE:
select * from pro_product where product_code='ABcdefg' collate utf8_general_ci
Unicode與UTF8
Unicode只是一個符號集,它只規(guī)定了符號的二進制代碼,卻沒有規(guī)定這個二進制代碼應該如何存儲.Unicode碼可以采用UCS-2格式直接存儲.mysql支持ucs2字符集.
UTF-8就是在互聯(lián)網(wǎng)上使用最廣的一種unicode的實現(xiàn)方式.其他實現(xiàn)方式還包括UTF-16和UTF-32,不過在互聯(lián)網(wǎng)上基本不用.
UTF8字符集(轉換Unicode表示)是存儲Unicode數(shù)據(jù)的一種可選方法.它根據(jù)RFC 3629執(zhí)行.UTF8字符集的思想是不同Unicode字符采用變長字節(jié)序列編碼:
? 基本拉丁字母、數(shù)字和標點符號使用一個字節(jié).
? 大多數(shù)的歐洲和中東手寫字母適合兩個字節(jié)序列:擴展的拉丁字母(包括發(fā)音符號、長音符號、重音符號、低音符號和其它音符)、西里爾字母、希臘語、亞美尼亞語、希伯來語、阿拉伯語、敘利亞語和其它語言.
? 韓語、中文和日本象形文字使用三個字節(jié)序列
摘自:用夢想丈量人生,用奔跑丈量激情
MYSQL實例校對集
MYSQL實例MySQL5.5.8中共有字符集39,校對集195個
MYSQL實例#顯示所有的校對集
MYSQL實例Show collation
MYSQL實例#顯示所有的字符集
MYSQL實例show character set
MYSQL實例所以一個字符集對應多個校對集,即同樣的一個字符集有多重排序規(guī)則
MYSQL實例比如一個utf8的字符集共有22中排序規(guī)則
MYSQL實例Utf8字符集默認的校對集為utf8_general_ci
MYSQL實例通過show collation like ‘utf8\_%'
MYSQL實例即可查看
MYSQL實例
MYSQL實例注意:
MYSQL實例utf8_general_ci? 依照普通的字母順序,而且不區(qū)分大小寫(比如:a B c D)
MYSQL實例utf8_bin?? 依照二進制排序(比如:A排在a前面,B D a c)
轉載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/6666.html