10.1. 常規字符集和校對
10.2. mysql中的字符集和校對
10.3. 確定預設字符集和校對
10.3.1. 伺服器字符集和校對
10.3.2. 資料庫字符集和校對
10.3.3. 表字符集和校對
10.3.4. 列字符集和校對
10.3.5. 字符集和校對分配示例
10.3.6. 連線字符集和校對
10.3.7. 字串文字字符集和校對
10.3.8. 在sql語句中使用collate
10.3.9. collate子句優先
10.3.10. binary操作符
10.3.11. 校對確定較為複雜的一些特殊情況
10.3.12. 校對必須適合字符集
10.3.13. 校對效果的示例
10.4. 字符集支援影響到的操作
10.4.1. 結果字串
10.4.2. convert()
10.4.3. cast()
10.4.4. show語句
10.5. unicode支援
10.6. 用於元資料的utf8
10.7. 與其它dbms的相容性
10.8. 新字符集配置檔案格式
10.9. 國家特有字符集
10.10. mysql支援的字符集和校對
10.10.1. unicode字符集
10.10.2. 西歐字符集
10.10.3. 中歐字符集
10.10.4. 南歐與中東字符集
10.10.5. 波羅的海字符集
10.10.6. 西里爾字符集
10.10.7. 亞洲字符集
本章討論以下主題:
· 什麼是字符集和校對規則?
· 多級預設系統
· 字符集語法
· 相關函式和運算
· unicode支援
· 每個字符集和校對規則的含義
mysql5.1中的字符集支援包括在myisam、memory和innodb儲存引擎中。
10.1. 常規字符集和校對
字符集是一套符號和編碼。校對規則是在字符集內用於比較字元的一套規則。讓我們使用乙個假想字符集的例子來區別清楚。
假設我們有乙個字母表使用了四個字母:『a』、『b』、『a』、『b』。我們為每個字母賦予乙個數值:『a』=0,『b』= 1,『a』= 2,『b』= 3。字母『a』是乙個符號,數字0是『a』的編碼,這四個字母和它們的編碼組合在一起是乙個字符集。
假設我們希望比較兩個字串的值:『a』和『b』。比較的最簡單的方法是查詢編碼:『a』為0,『b』為1。因為0 小於1,我們可以說『a』小於『b』。我們做的僅僅是在我們的字符集上應用了乙個 校對規則。校對規則是一套規則(在這種情況下僅僅是一套規則):「對編碼進行比較。」我們稱這種全部可能的規則中的最簡單的 校對規則為乙個binary(二元)校對規則。
但是,如果我們希望小寫字母和大寫字母是等價的,應該怎樣?那麼,我們將至少有兩個規則:(1)把小寫字母『a』和『b』視為與『a』和『b』等價;(2)然後比較編碼。我們稱這是乙個大小寫不敏感的 校對規則。比二元校對規則複雜一些。
在實際生活中,大多數字符集有許多字元:不僅僅是『a』和『b』,而是整個字母表,有時候有許多種字母表,或者乙個東方的使用上千個字元的書寫系統,還有許多特殊符號和標點符號。並且在實際生活中,大多數 校對規則有許多個規則:不僅僅是大小寫不敏感,還包括重音符不敏感(「重音符」 是附屬於乙個字母的符號,象德語的『ö』符號)和多位元組對映(例如,作為規則『ö』=『oe』就是兩個德語 校對規則的一種)。
mysql5.1能夠做這些事情:
· 使用多種字符集來儲存字串
· 使用多種校對規則來比較字串
· 在同一臺伺服器、同乙個資料庫或甚至在同乙個表中使用不同字符集或校對規則來混合字串
· 允許定義任何級別的字符集和校對規則
在這些方面,mysql5.1不僅比mysql4.1以前的版本靈活得多,而且比其它大多數資料庫管理系統超前許多。但是,為了有效地使用這些功能,你需要了解哪些字符集和 校對規則是可用的,怎樣改變預設值,以及它們怎樣影響字元操作符和字串函式的行為。
10.2. mysql中的字符集和校對
mysql伺服器能夠支援多種字符集。可以使用show character set語句列出可用的字符集:
mysql> show character set;
.kamchihau replied at : 2011-05-25 21:56:04或者這樣說會簡單一點點的,
where 「陳大文」 > 「陳小文」
在字串的比較上前者就大於後者, 但這個假定是基於編碼」gb2312」
但在 big5中可能是倒過來的,就是說 「陳小文」 < 「陳大文」
所以我們設定時就要設定上,比對就用gb2312,
但這個設定有沒有必要呢? 會不會多餘呢?多乙個設定會不會嚇怕用家呢? 見仁見智,
可不可以連這個設定都沒有, 預設就是本機的locale,
我反倒覺得連這個設定都可以沒有,
但當我們寫宣告時卻可以這樣寫 where big5(「陳大文」) > big5(「陳小文」)
但我們這樣寫,好像mysql又封鎖了我們
MySQL新建資料庫 字符集 排序規則
排序規則 亂序問題 有過新建過的資料庫的小夥伴對這張圖肯定不陌生了,但關於字符集和排序規則一般是直接忽略呢,還是有去了解,然後根據自身業務特點設定相應字符集或者排序規則?以上圖為例子,我是基於mysql8.0新建對的,然後字符集和排序規則都不設定,新建後,你會發現mysql預設設定為如下值 字符集 ...
MySQL入門 六 字符集與資料庫
任何資訊科技在處理資料的時候,如果只是單純的數值和運算,那就不會有太複雜的問題 如果處理的資料是文字的話,就會面臨世界上各種不同語言的問題。以資料庫來說,它必須正確的儲存各種不同語言的文字,也就是乙個資料庫中,有可能同時儲存繁體和簡體中文 法文等不同語言的文字。電腦在處理文字資料大多是使用乙個 編碼...
Mysql新建資料庫字符集及排序規則說明
1.字符集說明 一般選擇utf8.下面介紹一下utf8與utfmb4的區別。utf8mb4相容utf8,且比utf8能表示更多的字元。unicode編碼區從1 126就屬於傳統utf8區,當然utf8mb4也相容這個區,126行以上就是utf8mb4擴充區,當你需要存貯這些字元,你才用utf8mb4...