order by
, comme dans l'exemple suivant.
Exemple 7. Sélection classée par ordre alphabétique
select nom, prenom from Marins order by nom, prenom asc ;
asc
). Le résultat est le suivant.
NOM PRENOM ------------------------------ ------------------------------ Auguin Christophe Bart Jean Cartier Jacques Dumont d'Urville Jules Dupleix Joseph Moitessier Bernard Montcalm Louis Surcouf Robert Tabarly Eric
Marins
. Là nous souhaitons juste extraire les lignes qui nous intéressent. Par exemple, extrayons les marins nés au 18
ème siècle, soit entre 1701 et 1800 :
Exemple 8. Marins nés au 18 ème siècle
select nom, prenom, from Marins where ddnaissance <= 1701 and ddmort > 1801 order by nom ;
NOM PRENOM ------------------------------ ------------------------------ Bart Jean Dupleix Joseph Montcalm Louis
Exemple 9. Calcul de l'âge des marins
select nom, ddmort – ddnaissance as age from Marins order by age asc ;
age
, et qui prend la valeur
ddmort - ddnaissance
. Une fois cette colonne créée dans le contexte de ce calcul, on peut effectuer un tri dessus. Le résultat de ce calcul est le suivant :
NOM AGE ------------------------------ ---------- Auguin <null> Montcalm 47 Bart 52 Dumont d'Urville 52 Surcouf 54 Cartier 66 Dupleix 66 Tabarly 67 Moitessier 69Remarquons de suite que Auguin est présent dans ce tableau, avec
<null>
comme valeur pour son âge. Ceci est attendu, et vient du fait que Auguin est toujours en vie, que son année de mort est
<null>
. Nous verrons le traitement des valeurs
<null>
en détails dans la suite.
Ici nous avons créé une colonne supplémentaire dans une requête, résultat du calcul d’autres colonnes. On peut aussi regrouper des lignes entre elles, et effectuer des calculs numériques sur ces regroupements, que l’on appelle
agrégations
.
count()
compte le nombre de valeurs présentes dans le champ
nom
de l’intégralité de la table
Marins
. Il existe de nombreuses autres fonctions de ce type, pour calculer des moyennes, des écarts-type, etc… Le résultat est bien sûr :
NOMBRE_DE_MARINS ---------------- 9On peut sélectionner une partie de la table, en ajoutant des critères :
Exemple 11. Comptage du nombre de marins nés depuis 1700
select count(nom) nombre_de_marins from Marins where ddnaissance <= 1700 ;
NOMBRE_DE_MARINS ---------------- 6Avec tous ces éléments, il devient possible de calculer la moyenne de l’âge auquel sont morts les marins depuis 1700 : Voici le résultat :
Exemple 12. Espérance de vie des marins nés depuis 1700
select avg(ddmort - ddnaissance) as esperance_de_vie from Marins where ddnaissance > 1700 ;
ESPERANCE_DE_VIE ---------------- 57,8
update
. Si par exemple, une erreur s’est glissée dans la date de naissance d’un des marins, il est possible de la corriger à l’aide de la commande :
Exemple 13. Correction de la date de naissance de Jean Bart
update Marins set ddnaissance = 1650
where nom = 'Bart' ;
Une commande
Update
qui ne serait suivie d'aucune clause
Where
agirait sur toutes les lignes de la table concernée. Il faut donc être prudent lorsque l'on manipule cette commande.