Character Set là một tập các ký tự và dạng số hóa của các ký tự đó
Collation là một tập các luật để so sánh các xâu được sinh ra từ các ký tự trong Character Set
Ví dụ:
- Character Set: Tập có 4 ký tự A, B, C, D. Số 0 thể hiện ký tự A, số 1 thể hiện ký tự B, số 2 thể hiện ký tự C và số 3 thể hiện ký tự D
- Collation: Chỉ có 1 luật so sánh là "Số thể hiện ký tự nào lớn hơn thì ký tự đó lớn hơn"
- Giả sử có 1 bảng MySQL sử dụng Character Set và Collation trên thì:
+ Ta chỉ lưu được giá trị cho các trường như AB, ABCD, ABBBBBB... không thể lưu được giá trị AE
+ Khi thực hiện truy vấn SELECT * FROM account ORDER BY name ASC thì MySQL sẽ áp dụng các luật so sánh trong Collation để sắp xếp dữ liệu. AB, BA, B thì mã của AB là 01, mã của BA là 10, mã của B là 1. Vì 01 < 1 < 10 nên kết quả sắp xếp sẽ là AB, B, BA
+ Khi thực hiện truy vấn SELECT * FROM account WHERE name='CCC' thì MySQL sẽ lấy mã số thể hiện CCC là 222 để dò tìm.
Khi DB lưu tiếng Việt thì để CHARSET là UTF8 rồi nhưng còn COLLATION thì chọn UTF8_GENERAL_CI hay UTF8_BIN?
- Như đã đề cập phía trên COLLATION chỉ đơn giản là tập các luật để só sánh (lớn hơn, bằng hay nhỏ hơn) các xâu sinh ra từ các ký tự trong tập CHARSET:
+ Với UTF8_GENERAL_CI "Phùng" sẽ bằng với "Phúng", "Phụng", "pHÙng", "phũnG"...
+ Với UTF8_BIN "Phùng" sẽ chỉ bằng với đúng "Phùng"
Vì vậy tùy từng trường hợp, bạn phải xem dữ liệu của bạn là cái gì, thì bạn mới có thể quyết định đúng cho việc chọn COLLATION được.
Ví dụ:
+ Lưu Họ và tên, không cho trùng lặp (UNIQUE) thì sẽ phải dùng UTF8_BIN
+ Muốn search không dấu mà vẫn ra kết quả có dấu thì dùng UTF8_GENERAL_CI
...
(CI là viết tắt của Case-Insensitive, BIN là viết tắt của Binary)
Bonus 1 câu truy vấn demo nhanh sự khác biệt của COLLATION:
SELECT 'Phũng' COLLATE UTF8_GENERAL_CI = 'PhùNg' AS Compare_Result1,
'Phũng' COLLATE UTF8_BIN = 'PhùNg' AS Compare_Result2;
Title:
Character Set và Collation trong MySQL là gì? Tạo DB thì để UTF8_GENERAL_CI hay UTF8_BIN
Description:
Character Set là một tập các ký tự và dạng số hóa của các ký tự đó Collation là một tập các luật để so sánh các xâu được sinh ra từ các ký ...
...
Rating:
4