Pour les questions suivantes, ceci sera la database utilisée: https://inginious.org/course/secondaire/SQL19/Small_chinook
Note: Si vous ne voulez pas utiliser le logiciel DB BROWSER pour visualiser la database, vous pouvez vous référer à la tâche SQL_DATABASE: Description de la base de données (https://inginious.org/course/secondaire/SQL_DATABASE) pour avoir une idée des tables. Les screens ne montre pas les tables complètes, celles-ci étant beaucoup plus grandes que montrée.
Nouveau mot clé: ORDER BY
Ce nouveau mot clé nous permet d'ordonner la table de sortie dans un ordre ascendant (ASC
) ou descendant (DESC
) par rapport a une colonnes spécifiée.
SELECT colonne1, colonne2, ... FROM table_name ORDER BY colonne1 ASC
Dans l'exempe ci-dessus, la table de sortie va être ordonnée par order ascendant par rapport a la colonne colonne1
Donc si dans la colonne colonne1 on a des chiffres alors la table sera ordonnée par ordre croissant. Et si dans la colonne colonne1 on a des mots, elle sera ordonnée par ordre alphabetique par rapport aux mots de la colonne1
SELECT column1, column2, ... FROM table_name ORDER BY column_1 DESC
Dans l'exempe ci-dessus, la table de sortie va être ordonnée par order descendant (ou decroissant) par rapport a la colonne colonne1
Par default, le mot clé ORDER BY
ordonne de façon ascendante.
Il est aussi possible de spécifier plusieurs colonnes a ordonner:
SELECT pays, nom, ... FROM table_name ORDER BY pays ASC, nom ASC
Dans l'exemple ci-dessus, on va d'abord ordonner la table de façon ascendante (alphabetique) par rapport aux pays. Dans le cas ou nous avons plusieurs lignes ayant le même pays, nous allons les ordonner de façon ascendante par rapport aux noms.
EXEMPLE:
| pays | nom | prenom | email | | Belgique | Smith | John | john.smith@mail.com | | Italie | Doe | John | john.doe@mail.com | | Belgique | Anderson | Leopold | leopold.anderson@mail.com | | France | Hardy | François | françois.hardy@mail.com | | Allemagne | Markels | Johannes | Johannes.markels@mail.com | | Italie | Mancini | Lucio | lucio.vancini@mail.com | | Belgique | Vander | Lili | lili.vander@mail.com |
En appliquant la requête: SELECT pays, noms FROM table_name ORDER BY pays ASC sur la base de données ci-dessus, la table de sortie ressemblerait a ceci:
| pays | nom | prenom | email | | Allemagne | Markels | Johannes | Johannes.markels@mail.com | | Belgique | Smith | John | john.smith@mail.com | | Belgique | Vander | Lili | lili.vander@mail.com | | Belgique | Anderson | Leopold | leopold.anderson@mail.com | | France | Hardy | François | françois.hardy@mail.com | | Italie | Doe | John | john.doe@mail.com | | Italie | Mancini | Lucio | lucio.vancini@mail.com |
On peut voir que les lignes sont maintenant ordonnées de façon ascendante par rapport a la colonne "pays".
Maintenant, appliquons cette requête: SELECT pays, noms FROM table_name ORDER BY pays, nom ASC sur la table de base. Voici le resultat:
| pays | nom | prenom | email | | Allemagne | Markels | Johannes | Johannes.markels@mail.com | | Belgique | Anderson | Leopold | leopold.anderson@mail.com | * | Belgique | Smith | John | john.smith@mail.com | * | Belgique | Vander | Lili | lili.vander@mail.com | * | France | Hardy | François | françois.hardy@mail.com | | Italie | Doe | John | john.doe@mail.com | | Italie | Mancini | Lucio | lucio.vancini@mail.com |
Nous pouvons voir que maintenant, les trois lignes ayant "Belgique" comme pays, sont aussi ordonnées de façon ascendante par rapport a la colonne "nom".
-- Il est aussi possbile d'ordonner les colonnes dans deux sens differents:
SELECT pays, nom, ... FROM table_name ORDER BY pays ASC, nom DESC
Dans le cas ci-dessus, les pays vont être ordonnés de façon ascendant. Mais les noms vont etre ordonnés de façon descendant:
| pays | nom | prenom | email | | Allemagne | Markels | Johannes | Johannes.markels@mail.com | | Belgique | Vander | Lili | lili.vander@mail.com | * | Belgique | Smith | John | john.smith@mail.com | * | Belgique | Anderson | Leopold | leopold.anderson@mail.com | * | France | Hardy | François | françois.hardy@mail.com | | Italie | Mancini | Lucio | lucio.vancini@mail.com | * | Italie | Doe | John | john.doe@mail.com | *