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 :
CREATE DATABASE IF NOT EXISTS `garage` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
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 :
SELECT @@collation_server;
Ex :
USE garage;
SELECT @@collation_database;
« 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é