Himpunan karakter adalah sekumpulan simbol dan pengkodean. Dan collation adalah sekumpulan aturan untuk membandingkan dan menyortir karakter dalam kumpulan karakter. Rangkaian karakter harus berisi setidaknya 1 susunan default. Untuk MySQL 8. 0 kumpulan karakter dan susunan server MySQL default adalah utf8mb4 dan utf8mb4_0900_ai_ci, tetapi kita dapat menentukan kumpulan karakter di tingkat server, basis data, tabel, kolom, dan string literal
Sekarang sedikit menyelam lebih dalam
Mysql menggunakan fungsi weight_string untuk menyortir dan membandingkan string. Fungsi ini mengembalikan string bobot untuk string input. Ia memiliki sifat-sifat ini
- Jika = , maka str1 = str2 (str1 dan str2 dianggap sama)
- Jika < , maka str1 < str2 (str1 mengurutkan sebelum str2)
Oke, jadi kita tahu bahwa fungsi weight_string_ digunakan untuk membandingkan, tapi apa peran collation dan charset?
Dalam contoh di atas, kami telah mengambil token weight_string5 dan weight_string6 dan menerapkan charset latin1 dan collation latin1_general_cs. Kita dapat melihat, bahwa weight_string_7 berbeda dan antara weight_string5 dan weight_string6, weight_string5 lebih kecil. Mari kita lihat contoh lain dengan susunan yang berbeda
Dalam contoh di atas, kami telah menggunakan susunan latin1_general_ci, dan kami dapat melihat bahwa weight_string5 dan weight_string6 memiliki bobot yang sama dan oleh karena itu keduanya sama
Mari buat 2 tabel, dengan susunan latin1_general_ci dan latin1_general_cs. Kami telah memasukkan weight_string5 dan weight_string6 di kedua tabel
Kita sudah tahu bahwa dalam kasus latin1_general_ci, weight_string6 dan weight_string5 memiliki bobot yang sama, mari kita lihat apa yang terjadi jika kita hanya meminta weight_string6. Yah, tidak ada tanda untuk menebak dengan benar. Ini akan mendapatkan kedua baris
Dan, untuk latin1_general_cs, itu hanya akan mengambil baris dengan bobot yang sama persis. Jika kami mengambil urutan baris dengan str_field, weight_string5 akan menjadi sebelum weight_string6
WEIGHT_STRING(str20 akhiran dalam collation names artinya case-sensitive atau case-insensitive, jika Anda ingat susunan default MySql 8 adalah utf8mb4_0900_ai_ci yang artinya case-insensitive dan aksen-insensitive
SuffixArtiWEIGHT_STRING(str21Accent-insensitiveWEIGHT_STRING(str22Accent-sensitiveWEIGHT_STRING(str23Case-insensitive