Apprendre et maîtriser
SQL
BTS
CG
commencer
//Les notions de base
Dans cette section, vous allez pouvoir reprendre les notions de base en lien avec le requêtage SQL. Vous pouvez consulter les notions présentées dans les pages suivantes ou vous rendre directement sur les exercices visés.
Aide //
Jeux //
01
requêtes simples
cas medical
cas stages
restrictions
cas COMPTOIR
cas gymnase
projection
calculs
cas bIBLIOTHEQUE
cas CONFISERIE
jointures
agrÉgats
SYNTHÈSE
//Créer des requêtes simples
Home
SELECT *
FROM Client ; Le terme SELECT indique donc que nous souhaitons récupérer des données. Le caractère * indique que l'on veut tous les attributs de la table. Le terme FROM permet d'indiquer à partir de quelle table nous devons récupérer les données.
//Créer des requêtes simples
Home
Il est parfois utile de n'avoir que les premières lignes d'une table, pour comprendre son contenu par exemple. Dans ce cas, il est possible d'ajouter en fin de requête le terme LIMIT suivi du nombre de lignes souhaité.
SELECT *
FROM Client
LIMIT 3;
//Créer des requêtes simples
Home
Ordre des résultats
De même, on est souvent appelé à faire un tri des données (ascendant ou descendant). Le terme ORDER BY, à placer en fin de requête aussi, mais avant le LIMIT si nécessaire, permet de réaliser un tel tri. Il faut bien noter que le tri ne se fait qu'à l'affichage et que la table n'est en rien modifiée. De plus, celui-ci peut se faire sur tout type de données. Il est possible d'utiliser le terme DESC pour introduire un tri décroissant (plus grand au plus petit). SELECT *
FROM Employe
ORDER BY Nom DESC;
//Créer des requêtes simples
Home
Ordre des résultats
Il est possible d'avoir plusieurs critères de tri. Pour cela, il faut séparer les différents attributs (nom ou position) par une virgule (,). La requête suivante permet donc d'avoir les employés triés d'abord par leur fonction, puis par leur nom.
SELECT *
FROM Employe
ORDER BY Fonction, Nom;
Voici la même requête que précédemment, avec les fonctions triées par ordre alphabétique décroissant.
SELECT *
FROM Employe
ORDER BY Fonction DESC, Nom;
//Créer des requêtes simples
Home
Restriction
Une restriction est une sélection de lignes d'une table, sur la base d'une condition à respecter, définie à la suite du terme WHERE. Cette condition peut être une combinaison de comparaisons à l'aide de AND, de OR et de NOT (attention donc aux parenthèses dans ce cas).
Opérateurs classiques
Nous disposons bien sûr de tous les opérateurs classiques de comparaison : =, <>, >, >=, <, <=.
Cette requête permet de lister tous les employés ayant la fonction de représentant.
SELECT *
FROM Employe
WHERE Fonction = "Représentant(e)";
//Créer des requêtes simples
Home
Restriction
Si l'on souhaite le complément de cette requête, i.e. tous les employés qui ne sont pas représentants, on utilise le symbole <> pour indiquer une non-égalité (ce qui revient à faire NOT(Fonction = "Représentant(e)")).
SELECT *
FROM Employe
WHERE Fonction <> "Représentant(e)";
Comme indiqué précédemment, il est possible de combiner des comparaisons. La requête suivante permet d'avoir les représentants masculins, avec un numéro d'employé inférieur strictement à 8.
SELECT *
FROM Employe
WHERE Fonction = "Représentant(e)"
AND TitreCourtoisie = "M."
AND NoEmp < 8;
//Créer des requêtes simples
Home
Données manquantes
Une donnée manquante en SQL est repérée par un NULL. Il y a plusieurs raisons, bonnes ou mauvaises, pour avoir des données manquantes, et il est parfois utile de tester leur présence. Pour cela, nous allons utiliser le terme IS NULL comme condition.
Par exemple, pour lister les employés dont la région n'est pas renseignée, nous devons exécuter la requête suivante. SELECT *
FROM Employe
WHERE Region IS NULL;
Au contraire, si l'on veut uniquement les employés pour lesquels l'information est présente, nous devrons utiliser la négation avec IS NOT NULL
SELECT *
FROM Employe
WHERE Region IS NOT NULL;
//Créer des requêtes simples
Home
Opérateurs spécifiques
Les deux premiers opérateurs définis ci-après sont particulièrement utiles pour limiter la taille de la requête. Le dernier est lui utile pour comparer une chaîne de caractères à une pseudo-chaîne.
BETWEEN. Cet opérateur permet de définir un intervalle fermé dans lequel l'attribut doit avoir sa valeur. La condition suivante est équivalente à NoEmp >= 3 AND NoEmp <= 8.
SELECT *
FROM Employe
WHERE NoEmp BETWEEN 3 AND 8;
//Créer des requêtes simples
Home
Opérateurs spécifiques
IN
Cet autre opérateur permet de définir une liste de valeurs entre parenthèses et séparées par des virgules. La condition suivante est équivalente à TitreCourtoisie = 'Mlle' OR TitreCourtoisie = 'Mme'.
SELECT *
FROM Employe
WHERE TitreCourtoisie IN ('Mlle', 'Mme');
//Créer des requêtes simples
Home
Opérateurs spécifiques
LIKE
Comme précisé avant, l'opérateur LIKE permet de comparer une chaîne de caractère à une pseudo-chaîne, dans laquelle nous pouvons ajouter deux caractères spécifiques :
% : une suite de caractères, éventuellement nulle
_ : un et un seul caractère
Par exemple, la requête suivante permet de récupérer les employés dont le nom commence par un "D".
SELECT *
FROM Employe
WHERE Nom LIKE 'D%';
//Créer des requêtes simples
Home
Opérateurs spécifiques
La requête suivante permet elle d'avoir tous les employés qui ont un prénom de 5 lettres.
SELECT *
FROM Employe
WHERE Prenom LIKE '_____';
Il faut noter que l'opérateur LIKE est insensible à la casse. Il ne tient pas compte des minuscules/majuscules.
//Créer des requêtes simples
Home
Projection
Une projection est une sélection de colonnes d'une table, sur la base d'une liste d'attributs placés après le SELECT et séparés par une virgule.
La requête suivante permet d'avoir uniquement les noms et les prénoms des employés.
SELECT Nom, Prenom
FROM Employe;
//Créer des requêtes simples
Home
DoublonsLors d'une projection, on est souvent en présence de doublons dans les résultats, i.e. deux lignes ou plus identiques.
Par exemple, lorsqu'on liste les fonctions des employés, on a plusieurs fois chaque fonction existante.
SELECT Fonction
FROM Employe ;
Or, dans ce cas, on est souvent intéressé par la liste des valeurs uniques. Pour l'obtenir, il est possible d'ajouter le terme DISTINCT juste après le SELECT, pour supprimer ces doublons.
SELECT DISTINCT Fonction
FROM Employe ; Ceci fonctionne aussi lorsqu'on a indiqué plusieurs attributs dans le SELECT.
//Créer des requêtes simples
Home
Renommage
Pour améliorer la présentation, il est possible de renommer un attribut (et on le verra plus tard le résultat de calcul), avec le terme AS placé après l'attribut à renommer et suivi du nouveau nom.
SELECT DISTINCT Fonction AS "Fonctions existantes"
FROM Employe ;
//Réaliser des calculs
Home
Calculs arithmétiques
simplesIl est possible d'effectuer des calculs arithmétiques dans un SELECT, à l'aide des opérateurs classiques : +, -, *, /, ().
Voici un premier exemple de calcul dans une requête. On additionne les unités en stock avec les unités commandées, pour chaque produit. SELECT *, UnitesStock + UnitesCom FROM Produit;
Bien évidemment, on peut vouloir faire aussi un projection en même temps, en n'affichant que la référence du produit.
SELECT RefProd, UnitesStock + UnitesCom
FROM Produit ;
//Réaliser des calculs
Home
Arrondi
Il est possible d'obtenir l'arrondi d'un réel grâce à la fonction ROUND(). Dans l'exemple ci-dessous, nous calculons une augmentation de 5% des prix des produits.
SELECT RefProd,
ROUND(PrixUnit * 1.05) AS "Nouveau Prix" FROM Produit;
L'arrondi ci-dessus est à l'entier. Si l'on désire un arrondi à 2 décimales (et donc les centimes dans notre cas), il faut ajouter un 2 comme second paramètre de la fonction ROUND().
//Réaliser des jointures
Home
Produit cartésien
On parle de produit cartésien quand on cherche à coupler toutes les lignes d'une table avec chaque ligne de l'autre table. Considérons que la table A à nbA lignes, et la table B nbB lignes. En résultat, nous obtenons donc une table avec nbA * nbB lignes. Ce qui peut vite faire beaucoup. Par exemple, la table Client fait 94 lignes, la table Commande 830. Le produit cartésien des deux tables produit une table de 78020 lignes. Il faut donc faire attention quand on fait une telle opération. Pour mieux comprendre le produit cartésien, on peut regarder la requête suivante. Elle associe chaque produit (84 lignes), avec chaque catégorie (8 lignes), ce qui fait une table résultat de 672 lignes. Vous remarquerez que la requête est un peu lente à être exécutée.
SELECT *
FROM Produit, Categorie;
//Réaliser des jointures
Home
Restriction sur produit cartésien
Bien évidemment, dans un produit cartésien, toutes les lignes ne sont pas intéressantes dans le résultat. Celles qui nous intéresse est celles où il y a correspondance entre certains attributs de chaque table. Une jointure est finalement une restriction sur produit cartésien, celle-ci apparaissant dans le WHERE.
Pour reprendre notre exemple précédent, pour faire correspondre chaque produit avec sa catégorie via une jointure à la main, nous allons réaliser la requête suivante.
SELECT *
FROM Produit, Categorie
WHERE Produit.CodeCateg = Categorie.CodeCateg ;
//Réaliser des jointures
Home
Jointures multiples
Nous allons comparer ici les requêtes permettant de réaliser de multiples jointures. Si nous souhaitons compter pour chaque client et pour chaque messager, le nombre de commandes passées, nous devons réaliser les requêtes suivantes. Dans ce type de jointure, nous devons déjà lister dans le FROM les tables nécessaires, puis dans le WHERE mettre les conditions de jointures. Il en résulte une requête plus facile à décoder dans la lecture des tables prises en compte.
SELECT Societe, NomMess FROM Client Cl, Commande Co, Messager M
WHERE Cl.CodeCli = Co.CodeCli
AND Co.NoMess = M.NoMess
;
//Agrégats
Home
Utilisation classique
Le premier exemple que nous allons voir est le dénombrement. Nous désirons le nombre de clients de la société, pour chaque pays d'origine. Donc, nous voudrions voir afficher l'attribut Pays en plus du compte. La requête suivante, erronée, est celle qu'on pourrait écrire en premier.
SELECT Pays, COUNT(*)
FROM Client ; Une fois exécutée, on se rend compte qu'elle ne renvoie qu'une seule ligne, avec un seul pays (celui en dernier dans la table) et le nombre total de clients. Pour être correct, il faut spécifier le critère d'agrégation (ici le pays) dans la clause GROUP BY, comme ci-dessous.
SELECT Pays, COUNT(*)
FROM Client
GROUP BY Pays ;
//Agrégats
Home
Restriction sur agrégats
Il arrive que nous souhaitions restreindre les résultats avec une condition sur un calcul d'agrégat. Par exemple, on peut vouloir chercher le nombre de clients par pays, uniquement pour les pays avec plus de 10 clients. Dans la requête suivante, il faudrait donc chercher à la main les pays avec plus de 10 clients, ce qui est à proscrire car non-automatique. Pour effectuer ces restrictions, il est nécessaire d'utiliser la clause HAVING, situé obligatoirement après le GROUP BY. Dans notre exemple, nous devons donc écrire la requête suivante.
SELECT Pays, COUNT(*)
FROM Client
GROUP BY Pays
HAVING COUNT(*) >= 10;
//Synthèse
Home
Placement des différentes clauses
Nous avons maintenant vu tous les clauses existantes dans une requête SQL de type SELECT. Il est important de se souvenir de l'ordre d'apparition de celles-ci, tel que présenté ci-dessous. Si cet ordre n'est pas respecté, le moteur SGBD ne pourra pas traiter la requête et renverra une erreur.
SELECT attributs, calculs, agrégatsFROM tables WHERE conditions GROUP BY attributs HAVING conditions ORDER BY attributs LIMIT nombre;
//CAS STAGE
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base STAGES.SQLITE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
02
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
//CAS CABINET MEDICAL
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base CABINETMEDICAL.SQLITE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
03
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
//CAS GYMNASE2000
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base GYMNASE2000.SQLITE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
03
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
//CAS COMPTOIR2000
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base COMPTOIR2000.SQLITE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
03
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
//CAS BIBLIOTHEQUE
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base BIBLIOTHEQUE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
03
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
//CAS CONFISERIE
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base COMPTOIR2000.SQLITE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
03
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
04
//conclusion
“Qui trop se hâte reste en chemin”
Si tu penses ne pas avoir passé assez de temps sur ces exercices, tu peux reprendre les situations et te tester à nouveau. Si par contre, tu penses en avoir fait le tour, tu peux passer ton chemin... ET bonne route..
// Reviens nous voir quand tu veux, de nouvelles applications peuvent apparaître
crÉdits
SQL - Maîtriser et pratiquer
CHRISTOPHE
Created on May 8, 2020
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Modern Zen Presentation
View
Newspaper Presentation
View
Audio tutorial
View
Pechakucha Presentation
View
Desktop Workspace
View
Decades Presentation
View
Psychology Presentation
Explore all templates
Transcript
Apprendre et maîtriser
SQL
BTS
CG
commencer
//Les notions de base
Dans cette section, vous allez pouvoir reprendre les notions de base en lien avec le requêtage SQL. Vous pouvez consulter les notions présentées dans les pages suivantes ou vous rendre directement sur les exercices visés.
Aide //
Jeux //
01
requêtes simples
cas medical
cas stages
restrictions
cas COMPTOIR
cas gymnase
projection
calculs
cas bIBLIOTHEQUE
cas CONFISERIE
jointures
agrÉgats
SYNTHÈSE
//Créer des requêtes simples
Home
SELECT * FROM Client ; Le terme SELECT indique donc que nous souhaitons récupérer des données. Le caractère * indique que l'on veut tous les attributs de la table. Le terme FROM permet d'indiquer à partir de quelle table nous devons récupérer les données.
//Créer des requêtes simples
Home
Il est parfois utile de n'avoir que les premières lignes d'une table, pour comprendre son contenu par exemple. Dans ce cas, il est possible d'ajouter en fin de requête le terme LIMIT suivi du nombre de lignes souhaité. SELECT * FROM Client LIMIT 3;
//Créer des requêtes simples
Home
Ordre des résultats De même, on est souvent appelé à faire un tri des données (ascendant ou descendant). Le terme ORDER BY, à placer en fin de requête aussi, mais avant le LIMIT si nécessaire, permet de réaliser un tel tri. Il faut bien noter que le tri ne se fait qu'à l'affichage et que la table n'est en rien modifiée. De plus, celui-ci peut se faire sur tout type de données. Il est possible d'utiliser le terme DESC pour introduire un tri décroissant (plus grand au plus petit). SELECT * FROM Employe ORDER BY Nom DESC;
//Créer des requêtes simples
Home
Ordre des résultats Il est possible d'avoir plusieurs critères de tri. Pour cela, il faut séparer les différents attributs (nom ou position) par une virgule (,). La requête suivante permet donc d'avoir les employés triés d'abord par leur fonction, puis par leur nom. SELECT * FROM Employe ORDER BY Fonction, Nom; Voici la même requête que précédemment, avec les fonctions triées par ordre alphabétique décroissant. SELECT * FROM Employe ORDER BY Fonction DESC, Nom;
//Créer des requêtes simples
Home
Restriction Une restriction est une sélection de lignes d'une table, sur la base d'une condition à respecter, définie à la suite du terme WHERE. Cette condition peut être une combinaison de comparaisons à l'aide de AND, de OR et de NOT (attention donc aux parenthèses dans ce cas). Opérateurs classiques Nous disposons bien sûr de tous les opérateurs classiques de comparaison : =, <>, >, >=, <, <=. Cette requête permet de lister tous les employés ayant la fonction de représentant. SELECT * FROM Employe WHERE Fonction = "Représentant(e)";
//Créer des requêtes simples
Home
Restriction Si l'on souhaite le complément de cette requête, i.e. tous les employés qui ne sont pas représentants, on utilise le symbole <> pour indiquer une non-égalité (ce qui revient à faire NOT(Fonction = "Représentant(e)")). SELECT * FROM Employe WHERE Fonction <> "Représentant(e)"; Comme indiqué précédemment, il est possible de combiner des comparaisons. La requête suivante permet d'avoir les représentants masculins, avec un numéro d'employé inférieur strictement à 8. SELECT * FROM Employe WHERE Fonction = "Représentant(e)" AND TitreCourtoisie = "M." AND NoEmp < 8;
//Créer des requêtes simples
Home
Données manquantes Une donnée manquante en SQL est repérée par un NULL. Il y a plusieurs raisons, bonnes ou mauvaises, pour avoir des données manquantes, et il est parfois utile de tester leur présence. Pour cela, nous allons utiliser le terme IS NULL comme condition. Par exemple, pour lister les employés dont la région n'est pas renseignée, nous devons exécuter la requête suivante. SELECT * FROM Employe WHERE Region IS NULL; Au contraire, si l'on veut uniquement les employés pour lesquels l'information est présente, nous devrons utiliser la négation avec IS NOT NULL SELECT * FROM Employe WHERE Region IS NOT NULL;
//Créer des requêtes simples
Home
Opérateurs spécifiques Les deux premiers opérateurs définis ci-après sont particulièrement utiles pour limiter la taille de la requête. Le dernier est lui utile pour comparer une chaîne de caractères à une pseudo-chaîne. BETWEEN. Cet opérateur permet de définir un intervalle fermé dans lequel l'attribut doit avoir sa valeur. La condition suivante est équivalente à NoEmp >= 3 AND NoEmp <= 8. SELECT * FROM Employe WHERE NoEmp BETWEEN 3 AND 8;
//Créer des requêtes simples
Home
Opérateurs spécifiques IN Cet autre opérateur permet de définir une liste de valeurs entre parenthèses et séparées par des virgules. La condition suivante est équivalente à TitreCourtoisie = 'Mlle' OR TitreCourtoisie = 'Mme'. SELECT * FROM Employe WHERE TitreCourtoisie IN ('Mlle', 'Mme');
//Créer des requêtes simples
Home
Opérateurs spécifiques LIKE Comme précisé avant, l'opérateur LIKE permet de comparer une chaîne de caractère à une pseudo-chaîne, dans laquelle nous pouvons ajouter deux caractères spécifiques : % : une suite de caractères, éventuellement nulle _ : un et un seul caractère Par exemple, la requête suivante permet de récupérer les employés dont le nom commence par un "D". SELECT * FROM Employe WHERE Nom LIKE 'D%';
//Créer des requêtes simples
Home
Opérateurs spécifiques La requête suivante permet elle d'avoir tous les employés qui ont un prénom de 5 lettres. SELECT * FROM Employe WHERE Prenom LIKE '_____'; Il faut noter que l'opérateur LIKE est insensible à la casse. Il ne tient pas compte des minuscules/majuscules.
//Créer des requêtes simples
Home
Projection Une projection est une sélection de colonnes d'une table, sur la base d'une liste d'attributs placés après le SELECT et séparés par une virgule. La requête suivante permet d'avoir uniquement les noms et les prénoms des employés. SELECT Nom, Prenom FROM Employe;
//Créer des requêtes simples
Home
DoublonsLors d'une projection, on est souvent en présence de doublons dans les résultats, i.e. deux lignes ou plus identiques. Par exemple, lorsqu'on liste les fonctions des employés, on a plusieurs fois chaque fonction existante. SELECT Fonction FROM Employe ; Or, dans ce cas, on est souvent intéressé par la liste des valeurs uniques. Pour l'obtenir, il est possible d'ajouter le terme DISTINCT juste après le SELECT, pour supprimer ces doublons. SELECT DISTINCT Fonction FROM Employe ; Ceci fonctionne aussi lorsqu'on a indiqué plusieurs attributs dans le SELECT.
//Créer des requêtes simples
Home
Renommage Pour améliorer la présentation, il est possible de renommer un attribut (et on le verra plus tard le résultat de calcul), avec le terme AS placé après l'attribut à renommer et suivi du nouveau nom. SELECT DISTINCT Fonction AS "Fonctions existantes" FROM Employe ;
//Réaliser des calculs
Home
Calculs arithmétiques simplesIl est possible d'effectuer des calculs arithmétiques dans un SELECT, à l'aide des opérateurs classiques : +, -, *, /, (). Voici un premier exemple de calcul dans une requête. On additionne les unités en stock avec les unités commandées, pour chaque produit. SELECT *, UnitesStock + UnitesCom FROM Produit; Bien évidemment, on peut vouloir faire aussi un projection en même temps, en n'affichant que la référence du produit. SELECT RefProd, UnitesStock + UnitesCom FROM Produit ;
//Réaliser des calculs
Home
Arrondi Il est possible d'obtenir l'arrondi d'un réel grâce à la fonction ROUND(). Dans l'exemple ci-dessous, nous calculons une augmentation de 5% des prix des produits. SELECT RefProd, ROUND(PrixUnit * 1.05) AS "Nouveau Prix" FROM Produit; L'arrondi ci-dessus est à l'entier. Si l'on désire un arrondi à 2 décimales (et donc les centimes dans notre cas), il faut ajouter un 2 comme second paramètre de la fonction ROUND().
//Réaliser des jointures
Home
Produit cartésien On parle de produit cartésien quand on cherche à coupler toutes les lignes d'une table avec chaque ligne de l'autre table. Considérons que la table A à nbA lignes, et la table B nbB lignes. En résultat, nous obtenons donc une table avec nbA * nbB lignes. Ce qui peut vite faire beaucoup. Par exemple, la table Client fait 94 lignes, la table Commande 830. Le produit cartésien des deux tables produit une table de 78020 lignes. Il faut donc faire attention quand on fait une telle opération. Pour mieux comprendre le produit cartésien, on peut regarder la requête suivante. Elle associe chaque produit (84 lignes), avec chaque catégorie (8 lignes), ce qui fait une table résultat de 672 lignes. Vous remarquerez que la requête est un peu lente à être exécutée. SELECT * FROM Produit, Categorie;
//Réaliser des jointures
Home
Restriction sur produit cartésien Bien évidemment, dans un produit cartésien, toutes les lignes ne sont pas intéressantes dans le résultat. Celles qui nous intéresse est celles où il y a correspondance entre certains attributs de chaque table. Une jointure est finalement une restriction sur produit cartésien, celle-ci apparaissant dans le WHERE. Pour reprendre notre exemple précédent, pour faire correspondre chaque produit avec sa catégorie via une jointure à la main, nous allons réaliser la requête suivante. SELECT * FROM Produit, Categorie WHERE Produit.CodeCateg = Categorie.CodeCateg ;
//Réaliser des jointures
Home
Jointures multiples Nous allons comparer ici les requêtes permettant de réaliser de multiples jointures. Si nous souhaitons compter pour chaque client et pour chaque messager, le nombre de commandes passées, nous devons réaliser les requêtes suivantes. Dans ce type de jointure, nous devons déjà lister dans le FROM les tables nécessaires, puis dans le WHERE mettre les conditions de jointures. Il en résulte une requête plus facile à décoder dans la lecture des tables prises en compte. SELECT Societe, NomMess FROM Client Cl, Commande Co, Messager M WHERE Cl.CodeCli = Co.CodeCli AND Co.NoMess = M.NoMess ;
//Agrégats
Home
Utilisation classique Le premier exemple que nous allons voir est le dénombrement. Nous désirons le nombre de clients de la société, pour chaque pays d'origine. Donc, nous voudrions voir afficher l'attribut Pays en plus du compte. La requête suivante, erronée, est celle qu'on pourrait écrire en premier. SELECT Pays, COUNT(*) FROM Client ; Une fois exécutée, on se rend compte qu'elle ne renvoie qu'une seule ligne, avec un seul pays (celui en dernier dans la table) et le nombre total de clients. Pour être correct, il faut spécifier le critère d'agrégation (ici le pays) dans la clause GROUP BY, comme ci-dessous. SELECT Pays, COUNT(*) FROM Client GROUP BY Pays ;
//Agrégats
Home
Restriction sur agrégats Il arrive que nous souhaitions restreindre les résultats avec une condition sur un calcul d'agrégat. Par exemple, on peut vouloir chercher le nombre de clients par pays, uniquement pour les pays avec plus de 10 clients. Dans la requête suivante, il faudrait donc chercher à la main les pays avec plus de 10 clients, ce qui est à proscrire car non-automatique. Pour effectuer ces restrictions, il est nécessaire d'utiliser la clause HAVING, situé obligatoirement après le GROUP BY. Dans notre exemple, nous devons donc écrire la requête suivante. SELECT Pays, COUNT(*) FROM Client GROUP BY Pays HAVING COUNT(*) >= 10;
//Synthèse
Home
Placement des différentes clauses Nous avons maintenant vu tous les clauses existantes dans une requête SQL de type SELECT. Il est important de se souvenir de l'ordre d'apparition de celles-ci, tel que présenté ci-dessous. Si cet ordre n'est pas respecté, le moteur SGBD ne pourra pas traiter la requête et renverra une erreur.
SELECT attributs, calculs, agrégatsFROM tables WHERE conditions GROUP BY attributs HAVING conditions ORDER BY attributs LIMIT nombre;
//CAS STAGE
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base STAGES.SQLITE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
02
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
//CAS CABINET MEDICAL
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base CABINETMEDICAL.SQLITE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
03
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
//CAS GYMNASE2000
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base GYMNASE2000.SQLITE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
03
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
//CAS COMPTOIR2000
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base COMPTOIR2000.SQLITE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
03
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
//CAS BIBLIOTHEQUE
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base BIBLIOTHEQUE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
03
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
//CAS CONFISERIE
Dans cette application, vous allez être amné(e) à réaliser une série de requêtes. Utilisez la base COMPTOIR2000.SQLITE Vous pouvez suivre la petit vidéo ci-dessous pour réaliser la requête demandée...
03
ACCUEIL
liste des requëtes
aide
SCHÉMA
Contact
04
//conclusion
“Qui trop se hâte reste en chemin”
Si tu penses ne pas avoir passé assez de temps sur ces exercices, tu peux reprendre les situations et te tester à nouveau. Si par contre, tu penses en avoir fait le tour, tu peux passer ton chemin... ET bonne route..
// Reviens nous voir quand tu veux, de nouvelles applications peuvent apparaître
crÉdits