Mysql
 sql >> Base de données >  >> RDS >> Mysql

Différence entre la base de données, la table et le classement des colonnes

Les jeux de caractères et les classements de MySQL peuvent être interprétés comme une liste descendante d'éléments prioritaires. Le plus haut est le moins prioritaire et le plus bas est le plus prioritaire.

Ordre de priorité, le plus haut étant le moins prioritaire :

  • Classement du serveur
  • Classement spécifique à la connexion
  • Collation de la base de données
  • Classement des tableaux
  • Classement des colonnes
  • Classement des requêtes (à l'aide de CAST ou CONVERT )

Le classement de serveur est défini par le serveur, qui est défini soit à l'intérieur de my.cnf ou lorsque le serveur a été construit à partir du code source. Par défaut, ce sera généralement latin1 ou utf8 , selon votre plate-forme.

Le classement spécifique à la connexion est défini par le client à l'aide d'une requête telle que SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'; . La plupart des clients ne définissent pas de classement spécifique à la connexion, de sorte que le serveur utilisera sa propre valeur par défaut, comme expliqué ci-dessus.

Le classement de base de données est défini lors de la création de la base de données ou manuellement en le mettant à jour ultérieurement. Si vous n'en spécifiez pas, il utilisera le classement de niveau supérieur suivant, qui serait soit le classement spécifique à la connexion, soit le classement du serveur.

Le classement de table est le même que le classement de la base de données, sauf que s'il est laissé vide, il utilisera la base de données par défaut, puis spécifique à la connexion, puis enfin le classement du serveur.

Le classement de colonnes utilise le classement de la table par défaut, et s'il n'y a pas de classement défini, il suivra alors la chaîne pour trouver un classement à utiliser, s'arrêtant au serveur si tous les autres n'étaient pas définis.

Le classement de requête est spécifié dans la requête en utilisant CAST ou CONVERT , mais sinon utilisera le prochain classement disponible dans la chaîne. Il n'y a aucun moyen de définir cela à moins d'utiliser une fonction.

Veuillez également vous référer à la page de manuel Character Set Support .