Formation PUB200 : MySQL, 2018 Jeux de caractères et interclassements (collations)

5.2 Qu'est-ce qu'un interclassement (collation) ?


L'interclassement, parfois appelé collation, a pour rôle de déterminer comment les comparaisons seront effectuées entre deux chaînes ainsi que dans quel ordre les données doivent apparaître lorsqu'on demande un affichage en ordre alphabétique. Par exemple, le é doit-il apparaître avant ou après le e ? Les majuscules doivent-elles être traitées différemment des minuscules ?

Chaque jeu de caractères peut présenter un ou plusieurs interclassements. Dans phpMyAdmin, le fait de choisir l'interclassement modifie également le jeu de caractères. Ainsi, si vous choisissez l'interclassement utf8_unicode_ci, votre BD sera automatiquement encodée avec le jeu de caractère UTF8.

Nous prendrons l'habitude de toujours utiliser l'interclassement utf8_unicode_ci dans le cadre de ce cours.

Remarquez que le _ci signifie Case Insensitive donc cet interclassement ne tient pas compte des majuscules et des minuscules lorsqu'il compare des données.

Tout comme pour le jeu de caractères, il est possible de vérifier l'interclassement utilisé en exportant la base de données.

Ex :

MySQL

CREATE DATABASE IF NOT EXISTS `garage` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

MySQL

CREATE TABLE IF NOT EXISTS `clients` (

  `id` int NOT NULL AUTO_INCREMENT,

  `code` varchar(12) COLLATE utf8_unicode_ci NOT NULL,

  `prenom` varchar(45) COLLATE utf8_unicode_ci NOT NULL,

  `nomfamille` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,

  `adresse` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,

  `adresse2` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,

  `ville` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,

  `codepostal` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL,

  `telephone` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Il est également possible d'utiliser une requête SQL pour vérifier l'interclassement utilisé par défaut utilisé pour le serveur et pour la base de données.

Ex :

MySQL

SELECT @@collation_server;

Ex :

MySQL

USE garage;

SELECT @@collation_database;

Pour plus d'information

« Jeux de caractères et collations (interclassements) sous MySQL 5 ». Antoine Dinimant. http://slota.free.fr/dl/pdf/Jeux_et_Collations.pdf

« 10.1 Character Set Support ». MySQL. http://dev.mysql.com/doc/refman/5.7/en/charset.html

« Comprendre les jeux de caractères et interclassements ». Open Classrooms. http://fr.openclassrooms.com/informatique/cours/comprendre-les-jeux-de-caracteres-et-interclassements

« Quel encodage choisir entre utf8_general et utf8_unicode_ci ? ». Christophe Meneses. http://www.christophe-meneses.fr/article/quel-encodage-choisir-entre-utf8-general-et-utf8-unicode-ci

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre