Koleksi . Anda memiliki dua pilihan, bukan tiga:
utf8_bin memperlakukan semua ini sebagai berbeda :demandé dan demandé dan Demandé .
utf8_..._ci (biasanya utf8_general_ci atau utf8_unicode_ci ) memperlakukan semua ini sebagai sama :demandé dan demandé dan Demandé .
Jika Anda hanya menginginkan sensitivitas huruf besar-kecil (demandé =demandé , tetapi keduanya tidak cocok dengan Demandé ), Anda kurang beruntung.
Jika Anda hanya menginginkan sensitivitas aksen (demandé =Demandé , tetapi keduanya tidak cocok dengan demandé ), Anda kurang beruntung.
Deklarasi . Cara terbaik untuk melakukan apa pun yang Anda pilih:
CREATE TABLE (
name VARCHAR(...) CHARACTER SET utf8 COLLATE utf8_... NOT NULL,
...
PRIMARY KEY(name)
)
Jangan mengubah susunan dengan cepat . Ini tidak akan menggunakan indeks (yaitu, akan lambat) jika susunannya berbeda di name :
WHERE name = ... COLLATE ...
BINARY . tipe data BINARY , VARBINARY dan BLOB sangat mirip dengan CHAR , VARCHAR , dan TEXT dengan COLLATE ..._bin . Mungkin satu-satunya perbedaan adalah bahwa teks akan diperiksa untuk penyimpanan utf8 yang valid dalam VARCHAR ... COLLATE ..._bin , tetapi tidak akan diperiksa saat menyimpan ke VARBINARY... . Perbandingan (WHERE , ORDER BY , dll) akan sama; yaitu, cukup bandingkan bitnya, jangan lakukan case folding atau aksen stripping, dll.