id espece sexe
date_naissance
nom commentaires
4 tortue F
2009-08-03 05:12:00 NULL NULL
9 tortue NULL 2010-08-23 05:18:00 NULL NULL
id espece sexe
date_naissance
nom
commentaires
1 chien M
2010-04-05 13:43:00 Rox
Mordille beaucoup
5 chat
NULL 2010-10-03 16:44:00 Choupi Né sans oreille gauche
6 tortue F
2009-06-13 08:17:00 Bobosse Carapace bizarre
35 chat
M
2006-05-19 16:56:00 Raccou Pas de queue depuis la naissance
52 tortue F
2006-03-15 14:26:00 Redbul Insomniaque
55 tortue M
2008-03-15 18:45:00 Relou
Surpoids
Tri des données
Lorsque vous faites un SELECT, les données sont récupérées dans un ordre défini par MySQL, mais qui n'a aucun sens pour
vous. Vous avez sans doute l'impression que MySQL renvoie tout simplement les lignes dans l'ordre dans lequel elles ont été
insérées, mais ce n'est pas exactement le cas. En effet, si vous supprimez des lignes, puis en ajoutez de nouvelles, les nouvelles
lignes viendront remplacer les anciennes dans l'ordre de MySQL. Or, bien souvent, vous voudrez trier à votre manière. Par date
de naissance par exemple, ou bien par espèce, ou par sexe, etc.
Pour trier vos données, c'est très simple, il suffit d'ajouter ORDER BY tri à votre requête (après les critères de sélection de
WHERE s'il y en a) et de remplacer "tri" par la colonne sur laquelle vous voulez trier vos données bien sûr.
Par exemple, pour trier par date de naissance :
Code : SQL
SELECT *
FROM Animal
WHERE espece='chien'
ORDER BY date_naissance;
Et hop ! Vos données sont triées, les plus vieux chiens sont récupérés en premier, les jeunes à la fin.
Tri ascendant ou descendant
Tout ça c'est bien beau, j'ai mes chiens triés du plus vieux au plus jeune. Et si je veux le contraire ?
Pour déterminer le sens du tri effectué, SQL possède deux mots-clés : ASC pour ascendant, et DESC pour descendant. Par
défaut, si vous ne précisez rien, c'est un tri ascendant qui est effectué : du plus petit nombre au plus grand, de la date la plus
ancienne à la plus récente, et pour les chaînes de caractères et les textes, c'est l'ordre alphabétique normal qui est utilisé.
Si par contre vous utilisez le mot DESC, l'ordre est inversé : plus grand nombre d'abord, date la plus récente d'abord, et ordre
anti-alphabétique pour les caractères.
Petit cas particulier : les ENUM sont des chaînes de caractères, mais sont triés selon l'ordre dans lequel les possibilités
ont été définies. Si par exemple on définit une colonne exemple ENUM('a', 'd', 'c', 'b'), l'ordre ASC
sera 'a', 'd', 'c' puis 'b' et l'ordre DESC 'b', 'c', 'd' suivi de 'a'.
Code : SQL
SELECT *
FROM Animal
WHERE espece='chien'
AND nom IS NOT NULL
ORDER BY nom DESC;
Partie 1 : MySQL et les bases du langage SQL
58/414
www.openclassrooms.com
Précédent

- 58/413

Suivant