Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parArthur Bénard Modifié depuis plus de 8 années
1
1- Compléments SELECT 2ème partie : Traitements des résultats Le langage SQL 2- Les clauses de présentation 3- Recap clauses 4- Les fonctions
2
1- Compléments SELECT Le langage SQL
3
4- Requêtes TP SQL 1 bis Effectuer les requêtes suivantes : 5- Liste des noms des animaux et leur espèce qui mangent du poisson. 6- Liste des noms des animaux et leur espèce qui mangent du poisson et à quelle heure. 7- Liste énumérative des n° d'enclos, des type d'enclos, leur espace et le nom de l'espèce les occupant.
4
Le langage SQL 1- Compléments SELECT Soumettre les requêtes suivantes : Ex 1 : SELECT 'bonjour'; Ex 2 : SELECT 8 * 300; Ex 3 : SELECT bonjour;
5
Le langage SQL Remarque : La clause SELECT déclenche simplement un affichage. On peut l'utiliser juste pour afficher un résultat passé en paramètre : Ex 1 : SELECT 'bonjour'; Ex 2 : SELECT 8 * 300; Dès lors qu'on demande l'affichage de colonnes (champs), la clause FROM devient obligatoire. Ex 3 : SELECT bonjour; --> retourne une erreur : absence de quotes => recherche d'un champ, pas de table (clause FROM) => erreur. 1- Compléments SELECT
6
2- Les clauses de présentation Le langage SQL
7
Clause ORDER BY Permet d'afficher les résultats dans l'ordre alphabétique, numérique, alphanumérique ou temporel voulu. Le tri peut se faire sur plusieurs colonnes Le tri peut être asendant (ASC par défaut) ou descendant (DESC) 2- Les clauses de présentation
8
Le langage SQL Exemple : Taper la commande : 1- SELECT nom, espece, date_naissance FROM animal ORDER BY nom, espece; 2- Les clauses de présentation
9
Le langage SQL Exemple : Taper la commande : 1- SELECT nom, espece, date_naissance FROM animal ORDER BY nom, espece; 2- SELECT nom, espece, date_naissance FROM animal ORDER BY espece, nom; 2- Les clauses de présentation
10
Le langage SQL Exemple : Taper la commande : 1- SELECT nom, espece, date_naissance FROM animal ORDER BY nom, espece; 2- SELECT nom, espece, date_naissance FROM animal ORDER BY espece, nom; 3- SELECT nom, espece, date_naissance FROM animal ORDER BY date_naissance DESC; 2- Les clauses de présentation
11
Le langage SQL Exemple : Taper la commande : 1- SELECT nom, espece, date_naissance FROM animal ORDER BY nom, espece; 2- SELECT nom, espece, date_naissance FROM animal ORDER BY espece, nom; 3- SELECT nom, espece, date_naissance FROM animal ORDER BY date_naissance DESC; 4- SELECT nom, espece, date_naissance FROM animal ORDER BY date_arrivee; 2- Les clauses de présentation
12
Le langage SQL Opérations dans la clause SELECT Il est possible d'appliquer une « opération » (fonction) sur les champs dans la clause SELECT. Exemple : 1- SELECT count(id) FROM animal; 2- SELECT espece, count(id) FROM animal; Commentaire ? 2- Les clauses de présentation
13
Le langage SQL Clause GROUP BY Lorsqu'on applique des fonctions sur des champs de la clause SELECT, ET Que l'on souhaite des sous-totaux => la clause GROUP BY devient nécessaire. 2- Les clauses de présentation
14
Le langage SQL Exemple : Comme nous l'avons constaté : 2- SELECT espece, count(*) FROM animal; Génère une erreur (MySQL, d'autres SGBD acceptent). Correction : 2- SELECT espece, count(*) FROM animal GROUP BY espece; Clause GROUP BY 2- Les clauses de présentation
15
Le langage SQL Clause GROUP BY 2- Les clauses de présentation Nous souhaitons maintenant connaître les espèces dont le nombre d'individus est supérieur à 1. Essayons : SELECT espece, count(*) FROM animal WHERE count(espece) > 1 GROUP BY espece;
16
Le langage SQL Clause GROUP BY 2- Les clauses de présentation Erreur ! Les opérateurs statistiques tels que COUNT, SUM, MAX, MIN, AVG, etc... ne peuvent pas figurer dans la clause WHERE. La clause WHERE n'agit qu'individuellement sur les enregistrements : « celui-ci répond à la condition, je le garde. Celui-ci non, je le jette »
17
Le langage SQL Clause HAVING 2- Les clauses de présentation D'où l'introduction de la clause HAVING qui agit elle sur le résultat. Pour notre exemple : SELECT espece, count(*) FROM animal GROUP BY espece HAVING count(*) > 1; Remaque : count s'applique au nombre d'enregistrements, il est inutile d'indiquer un nom de champ en particulier (d'où *). Remaque : la syntaxe de la clause HAVING est similaire à celle de la clause WHERE (test logique). Mais attention aux opérateurs.
18
Le langage SQL Renommage des colonnes 2- Les clauses de présentation À l'instar des renommages des tables, il est possible de renommer les colonnes Si pour les tables, le but est de faciliter l'organisation de la requête, pour les colonnes, le but est de faciliter la lisibilité : simple but d'affichage.
19
Le langage SQL Renommage des colonnes 2- Les clauses de présentation Pour notre exemple : SELECT espece, count(*) "nombre d'individu" FROM animal GROUP BY espece HAVING count(*) > 1; OU SELECT espece, count(*) AS "nombre d'individu" FROM animal GROUP BY espece HAVING count(*) > 1; Remarque : les guillemets sont nécessaire, contrairement au renommage des tables.
20
Le langage SQL TP 2 Effectuer les requêtes suivantes : 1- Nombre des animaux arrivés ou nés au zoo après 2005, classés par date d'arrivée de la plus récente à la plus ancienne. 2- Quantité de nourriture à préparer pour les repas prévus entre 13h00 et 17h45 (2 solutions). 3- Liste des n° d'enclos, les espèces, le nombre d'individus par espèce et par enclos. Classer par enclos. 2- Les clauses de présentation
21
3- Récap clauses SQL Le langage SQL
22
3- Récap Clauses SQL Afficher le contenu de cette (ces) colonne(s) Dans la (les) table(s) Où ce(s) test(s) logique(s) sont vérifiés Grouper les résultats selon cette (ces) colonne(s) et répondant à cette condition Les classer selon cette ces colonne(s) Clause FROM Clause WHERE Clause GROUP BY Clause ORDER BY 6 CLAUSES Clause SELECT Clause HAVING (clause GROUP BY préalable) Dont 4 optionnelles Dont 3 relatives à la présentation des résultats
23
Le langage SQL NB : L'ordre des clauses ne peut être changé. Il est impossible de mettre la clause FROM après la clause WHERE, ou la clause ORDER BY avant la clause GROUP BY, etc... 3- Récap Clauses SQL
24
4- Les fonctions Le langage SQL
25
4- Les fonctions Vous avez déjà manipulé certaines fonctions sans lesquelles la clause GROUP BY ne pouvait être abordée : COUNT, SUM, etc... Ces fonctions avaient la particularité de ne s'appliquer qu'aux résultats. Nous allons voir quelques fonctions parmi les plus courantes et les plus utiles.
26
Le langage SQL 4- Les fonctions Soumettre les requêtes suivantes : Ex 1 : SELECT quantite, ceil(quantite), floor(quantite), round(quantite) FROM repas; Ex 2 : SELECT DISTINCT nom FROM animal A, repas R WHERE A.id = R.id_animal AND SQRT(A.id) > quantite; Ex 3 : SELECT espece, count(*) FROM animal GROUP BY espece HAVING MOD(COUNT(*), 2) = 1;
27
Le langage SQL 4- Les fonctions Soumettre les requêtes suivantes : Ex 1 : SELECT quantite, ceil(quantite), floor(quantite), round(quantite) FROM repas; Ex 2 : SELECT nom FROM animal A, repas R WHERE A.id = R.id_animal AND SQRT(A.id) > quantite; Ex 3 : SELECT espece, count(*) FROM animal GROUP BY espece HAVING MOD(COUNT(*), 2) = 1; Fonctions d'arrondi (ceil : supérieur, floor : inférieur, round : valeur proche Fonction SQRT : racine carrée. Aucun intérêt dans ce cas précis, mais cependant, comment éliminer les doublons ? Fonction MOD (modulo) : reste division euclidienne. Ici, ne retient que les résultats impairs (reste de la division count(*) par 2).
28
Le langage SQL 4- Les fonctions Soumettre les requêtes suivantes : Ex 1 : SELECT quantite, ceil(quantite), floor(quantite), round(quantite) FROM repas; Ex 2 : SELECT DISTINCT nom FROM animal A, repas R WHERE A.id = R.id_animal AND SQRT(A.id) > quantite; Ex 3 : SELECT espece, count(*) FROM animal GROUP BY espece HAVING MOD(COUNT(*), 2) = 1; Fonctions d'arrondi (ceil : supérieur, floor : inférieur, round : valeur proche Fonction SQRT : racine carrée. Aucun intérêt dans ce cas précis, mais cependant, comment éliminer les doublons ? Fonction MOD (modulo) : reste division euclidienne. Ici, ne retient que les résultats impairs (reste de la division count(*) par 2). Solution : DISTINCT
29
Le langage SQL 4- Les fonctions La syntaxe est commune à toutes les fonctions: NOM_FONCTION( argument 1, argument 2,...... argument n) Le nombre d'arguments varie d'une fonction à l'autre.
30
Le langage SQL 4- Les fonctions Exemples : La fonction de date NOW() n'admet aucun argument. La fonction de comparaison IN(val1, val2,...., val n) nécessite au moins 1 argument. La fonction modulo MOD(dividende, diviseur) nécessite 2 arguments.
31
Le langage SQL 4- Les fonctions Quelques fonctions de chaîne : Ex 1 : SELECT CONCAT(nom,", ",espece) "Nom et espèce" FROM animal; Ex 2 : SELECT id, nom, SUBSTRING(nom, 1, 4) FROM animal WHERE nom LIKE '%a%'; ou SELECT id, nom, LEFT(nom, 2) FROM animal WHERE RIGHT(nom,1) = 'a'; Ex 3 : SELECT ordre, UPPER(ordre), LOWER(ordre) FROM espece;
32
Le langage SQL 4- Les fonctions Quelques fonctions de chaîne : Ex 1 : SELECT CONCAT(nom,", ",espece) "Nom et espèce" FROM animal; Ex 2 : SELECT id, nom, SUBSTRING(nom, 1, 4) FROM animal WHERE nom LIKE '%a%'; ou SELECT id, nom, LEFT(nom, 2) FROM animal WHERE RIGHT(nom,1) = 'a'; Ex 3 : SELECT ordre, UPPER(ordre), LOWER(ordre) FROM espece; Concaténation (syntaxe MySQL) Extractions de sous-chaîne Changer la casse (min, maj)
33
Le langage SQL 4- Les fonctions Quelques fonctions de dates : Ex 1 : SELECT nom FROM animal WHERE YEAR(date_arrivee) < 2005 AND YEAR(date_naissance) < 2005; Ex 2 : SELECT nom, espece, date_arrivee FROM animal WHERE YEAR(date_arrivee) = 2005 AND MONTH(date_arrivee) BETWEEN 3 AND 11; Ex 3 : SELECT YEAR(date_arrivee), count(*) FROM animal GROUP BY date_arrivee;
34
Le langage SQL 4- Les fonctions Quelques fonctions de dates : Ex 1 : SELECT nom FROM animal WHERE YEAR(date_arrivee) < 2005 OR YEAR(date_naissance) < 2005; Ex 2 : SELECT nom, espece, date_arrivee FROM animal WHERE YEAR(date_arrivee) = 2005 AND MONTH(date_arrivee) BETWEEN 3 AND 11; Ex 3 : SELECT YEAR(date_arrivee), count(*) FROM animal GROUP BY date_arrivee; Nous ne trouvons pas le nombre d'animaux arrivés chaque année. Comment y remédier ? Remplacer OR par AND. Laquelle est correcte ?
35
Le langage SQL 4- Les fonctions Quelques fonctions de dates : Ex 1 : SELECT nom FROM animal WHERE YEAR(date_arrivee) < 2005 AND YEAR(date_naissance) < 2005; Ex 3 : SELECT YEAR(date_arrivee), count(*) FROM animal GROUP BY YEAR(date_arrivee);
36
Le langage SQL 4- Les fonctions Le format de stockage des dates en SQL est intéressant pour le tri mais pas pour l'affichage. La fonction DATE_FORMAT permet à peu près toute sorte d'affichage (l'année, le jour, le mois, le jour de la semaine, jour et mois littéraux, abrégés, l'heure..... Formatage des dates
37
Le langage SQL 4- Les fonctions Syntaxe : DATE_FORMAT(champ_date, format) Formatage des dates Exemples : SELECT DATE_FORMAT(date_arrivee, '%d/%m,%Y') FROM animal;
38
Le langage SQL 4- Les fonctions Formatage des dates ATTENTION : NE PAS CONFONDRE LE FORMATAGE DE DATE (DATE_FORMAT) ET LES FONCTIONS DE DATE (YEAR, MONTH, NOW,...)
39
Le langage SQL 4- Les fonctions Formatage des dates Exemples : SELECT DATE_FORMAT(date_arrivee, '%d/%m,%Y') FROM animal; Format : L'opérateur '%' précède chaque variable (année, mois, jour...) selon la codification fournie.codification fournie Les autres caractères s'affichent systématiquement L'ensemble doit être entre quotes ( ' ). Apparence déjà plus familière. Chez les anglo-saxons, on inversera le jour et le mois (%m/%d)
40
Le langage SQL 4- Les fonctions Formatage des dates Exemples : Aux questions fondamentales « Quelle heure est-il ? », « Quel jour sommes-nous ? », même MySQL a sa réponse : SELECT DATE_FORMAT(NOW(), 'nous sommes le %W %e %M %Y, il est %H heures %i minutes et %s secondes'); Aïe ! C'est en Anglais ? Hélas...
41
Le langage SQL TD SQL 1 Trouver une solution pour obtenir les dates francisées. 2- Les clauses de présentation
42
Le langage SQL TD SQL 3 Trouver une solution pour obtenir les dates francisées. Il n'est pas impossible que les tables existantes ne puisse pas fournir les informations de jours et de mois dont nous avons besoin. 2- Les clauses de présentation
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.