MySQL 中的 Collation 是一套規則,用於定義數據的排序和比較方式。它主要針對字符編碼和字符串操作制定規則,例如:
大小寫敏感性(大寫字母與小寫字母,例如:A 與 a)
重音符號敏感性(例如:é 與 e)
基於語言的排序規則(例如:德語中 ä 排在 a 附近,但在瑞典語中排在 z 之後)。
它與字符集相關聯,字符集定義了數據庫中可以存儲的字符(字母)。
為什麼需要 Collation?
Collation 決定數據顯示的順序。例如:在 utf8mb4_general_ci Collation 中,Apple 和 apple 被認為相同(不區分大小寫),但在 utf8mb4_bin 中則不同。
在 WHERE 子句或 JOIN 中進行字符串比較時,會應用 Collation 規則。例如:'café' = 'cafe' 是否為真取決於 Collation。
根據 Collation,搜索結果會發生變化。例如:在 LIKE '�t%' 查詢中,是否能找到 Cat 或 CAT 取決於 Collation。
Collation 用於正確排序或比較不同語言的字符。例如:西班牙語 ñ 或德語 ß 的特殊規則。
在所有操作(排序、比較、搜索)中應用相同的規則,以保持數據的連貫性。
Collation 的示例 utf8mb4_general_ci:
不區分大小寫,支持一般 Unicode。
A = a,É = E。
utf8mb4_bin:
二進制比較(區分大小寫)。
A ≠ a,É ≠ E。
utf8mb4_unicode_ci:
完全支持 Unicode,適用於多種語言。
如何設置 Collation?
sql Copy CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2. 在表級別:
sql Copy CREATE TABLE mytable ( id INT, name VARCHAR(255) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 3. 在列級別:
sql Copy CREATE TABLE mytable ( id INT, name VARCHAR(255) COLLATE utf8mb4_bin ); 選擇哪個 Collation? 大小寫敏感性:選擇 _ci(不區分大小寫)或 _bin(區分大小寫)。
語言需求:對於多語言數據,utf8mb4_unicode_ci 更好。
性能:utf8mb4_general_ci 更快,但 unicode_ci 更準確。
警告 Collation 不匹配:為避免表連接或比較中的錯誤,請在所有表/列中使用相同的 Collation。
索引:更改 Collation 可能需要重新構建索引。
總結 Collation 影響 MySQL 中數據的排序、比較和搜索。根據應用程序的語言、大小寫敏感性和性能選擇合適的 Collation!
以上是為什麼在數據庫中進行整理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!