web-dev-qa-db-fra.com

Dans MySQL, quel classement dois-je choisir?

Lorsque je crée une nouvelle base de données MySQL via phpMyAdmin, j'ai la possibilité de choisir le classement (par exemple, par défaut, armscii8, ascii, ... et UTF-8). Celui que je connais est UTF-8, car je le vois toujours dans le code source HTML. Mais quel est le classement par défaut? Quelles sont les différences entre ces choix et lequel dois-je utiliser?

36
bbtang

Le classement n'est pas réellement la valeur par défaut, il vous donne le classement par défaut en premier choix.

Ce dont nous parlons est collation , ou le jeu de caractères que votre base de données utilisera dans ses types de texte. Votre option par défaut est généralement basée sur les paramètres régionaux, donc à moins que vous ne prévoyiez de vous mondialiser, c'est généralement vif.

Les classements déterminent également la sensibilité à la casse et à l'accent (c'est-à-dire `` grand '' == `` grand ''? Consultez la liste MySQL pour toutes les options.

18
Eric

Le classement indique à la base de données comment effectuer la correspondance et le tri des chaînes. Il devrait correspondre à votre jeu de caractères.

Si vous utilisez UTF-8, le classement doit être utf8_general_ci. Cela triera dans l'ordre Unicode (insensible à la casse) et cela fonctionne pour la plupart des langues. Il conserve également ASCII et ordre Latin1.

Le classement par défaut est normalement latin1.

25
ZZ Coder

Réponse courte: utilisez toujours utf8mb4 (Plus précisément utf8mb4_unicode_ci) lorsqu'il s'agit de classement dans MySql & MariaDB.

Longue réponse:

Le codage utf8 de MySQL est maladroitement nommé, car il est différent du codage UTF-8 approprié. Il n'offre pas de prise en charge complète d'Unicode, ce qui peut entraîner une perte de données ou des vulnérabilités de sécurité.

Heureusement, MySQL 5.5.3 (publié au début de 2010) a introduit un nouvel encodage appelé utf8mb4 qui correspond à l'UTF-8 approprié et supporte donc pleinement Unicode.

Lisez le texte complet ici: https://mathiasbynens.be/notes/mysql-utf8mb4

Quant à savoir quel utf8mb pour choisir, allez avec utf8mb4_unicode_ci afin que le tri soit toujours géré correctement avec des inconvénients de performances minimes/imperceptibles. Voir plus de détails ici: Quelle est la différence entre utf8_general_ci et utf8_unicode_ci

1
Chris Dev