Compétences : à la fin de cette leçon, chaque élève doit être capable de :
mettre à jour des enregistrements.
La syntaxe est la suivante :INSERT INTO nom_table (nom_col_1, nom_col_2, ...)
VALUES (val_1, val_2, ...) ;
La liste des noms de colonne est optionnelle. Si elle est omise, la liste des colonnes sera par défaut
la liste de l'ensemble des colonnes de la table dans l'ordre de la création de la table. Si une liste de
colonnes est spécifiée, les colonnes ne figurant pas dans la liste auront la valeur NULL.Exemple :
Considérons la table Eleve ci-dessous :
La requête SQL qui a permet d’insérer la ligne relative à l’élève Pambé Max est :INSERT INTO Eleve (Matricule, Nom, Prenom,Classe,Quartier)
VALUES ("E0001" , "Pambé" , "Max","TC", "Domayo") ;
partiellement un enregistrement on utilise la syntaxe ci-après :UPDATE Nom_table
SET champ1=valeur1, champ2=valeur2, … , champN=valeur n
WHERE Condition ;
Exemple : La requête SQL qui change le quartier de l’élève dont le matricule est E0009 est :UPDATE Eleve
SET Quartier="Pitoaré"
WHERE Matricule="E0009" ;Pour modifier en totalité un enregistrement on utilise la syntaxe ci-après :REPLACE INTO Nom_table
VALUES (clé_primaire, valeur2...valeurN);
Exemple : La requête SQL qui modifie l’enregistrement relatif à l’élève de matricule E0010 dans la
table Eleve est :REPLACE INTO Eleve
VALUE ("E0010", "OTELE", "Gaston","2nde", "Doualaré") ;
DELETE FROM Table
WHERE ConditionExemple : La requête SQL qui supprime les enregistrements relatifs aux élèves dont le quartier est
Doualaré dans la table Eleve est :DELETE FROM Eleve
WHERE Quartier="Doualaré";
des informations à partir d’une ou de plusieurs tables, suivant d’éventuels critères. Voici la syntaxe
générale d'une commande SELECT :SELECT [DISTINCT ou ALL] * ou liste de colonnesFROM nom de table ou de la vue
[WHERE prédicats]
[GROUP BY ordre des groupes]
[HAVING condition]
[ORDER BY ] liste de colonnesNB : dans cette syntaxe, les mots clef du SQL sont en gras, les paramètres en minuscule et entre
crochets on trouve les parties optionnelles. En fait l'ordre SQL SELECT est composé de 6 clauses
dont 4 sont optionnelles.
Clauses de l'ordre SELECT :
NB : La plupart du temps, la difficulté réside dans la compréhension de la différence entre le filtre
WHERE et le filtre HAVING. Disons plus pragmatiquement que le filtre WHERE permet de filtrer
les données des tables tandis que le filtre HAVING permet de filtrer les données du résultat...REMARQUE : pour spécifier une valeur littérale il faut l'entourer de guillemets simples.Exemple : la requête SQL qui affiche les noms et prénoms des élèves vivant dans le quartier
Kongola est :SELECT Nom, Prenom
FROM Eleve
WHERE Quartier = 'Kongola' ;
requête. Juste après le mot clef SELECT, on précise les colonnes de la table qui doivent être
présentées dans la réponse. L'utilisation du caractère étoile ramène toutes les colonnes de la table
dans la réponse. Dans le cas contraire il faut expressément nommer chacune des colonnes et les
séparer par des virgules.Exemple : la requête SQL qui affiche toutes les informations relatives aux élèves vivant dans le
quartier Kongola est :SELECT *
FROM Eleve
WHERE Quartier = 'Kongola' ;
dans l'ordre ou il les trouve, même si ces dernières sont en double, c'est à dire qu'il récupère toutes
les lignes (ALL par défaut). C'est pourquoi il est souvent nécessaire d'utiliser le mot clefDISTINCT qui permet d‘éliminer les doublons dans la réponse.
peut utiliser les opérateurs.
Voici un tableau résumant les principaux opérateurs utilisés pour la construction des prédicats :
Exemple 1: Noms des élèves dont le nom commence par la lettre B
SELECT Nom
FROM Eleve
WHERE Nom LIKE "B%" ;Exemple 2 : Noms et date de naissance des élèves nés entre 1992 et 1994
SELECT Nom, Date_Naissance
FROM eleve
WHERE Date_Naissance BETWEEN "1992/01/01" AND "1994/12/31";
colonne, soit en précisant son n° d'ordre dans l'énumération qui suit le mot clef SELECT. ASCspécifie l'ordre ascendant et DESC l'ordre descendant du tri. ASC ou DESC peut être omis, dans ce
cas c'est l'ordre ascendant qui est utilisé par défaut. Bien que la clause ORDER BY ne soit pas
nécessaire, il est souvent utile de trier la réponse en fonction des colonnes. En revanche le temps de
réponse s'en ressent souvent. Pour spécifier l'ordre de tri, on doit placer les noms des colonnes
séparées par des virgules juste après le mot clef "ORDER BY", dans l'ordre voulu. On peut aussi
utiliser le rang de chaque colonne dans l'ordre spécifié dans la clause SELECT
ORDER BY colonne1 [ASC ou DESC] , colonne2 [ASC ou DESC ] ...Exemple : Noms et quartier des élèves triés par ordre croissant des
quartiers et décroissant des nomsSELECT Nom, Quartier
FROM Eleve
ORDER BY Quartier ASC, Nom DESC;
de champ. L’instruction GROUP BY s’utilise avec des fonctions de groupe ou avec la clauseHAVING.
Les fonctions de groupe sont des fonctions qui permettent d’effectuer des opérations sur un
ensemble de valeurs d’un champ. Elles sont déclarées dans la clause SELECT ou dans la clauseHAVING. Les plus courantes sont résumées dans le tableau ci-après :
Exemple 1: Moyenne des notes obtenues par matièreSELECT Matiere, AVG(Note)
FROM Note
GROUP BY Matiere ;Exemple 2 : Meilleure note par matièreSELECT Matiere, MAX(Note)
FROM Note
GROUP BY Matiere ;Exemple 3 : Nombre d’élèves par quartierSELECT Quartier, COUNT(Matricule)
FROM Eleve
GROUP BY Quartier ;
groupe.Exemple : matières pour lesquelles au moins deux élèves ont composéSELECT Matiere
FROM Note
GROUP BY Matiere
HAVING COUNT(Note)>=2 ;
données. Elles sont faites pour mettre en relation deux (ou plus) tables concourant à rechercher la
réponse à des interrogations. Une jointure permet donc de combiner les colonnes de plusieurs
tables.
Il existe en fait différentes natures de jointures. Retenez cependant que la plupart des jointures entre
tables s'effectuent en imposant l'égalité des valeurs d'une colonne d'une table à une colonne d'une
autre table. On parle alors de jointure naturelle ou équi-jointure. Mais on trouve aussi des jointures
d'une table sur elle-même. On parle alors d'auto-jointure.
De même, il arrive que l'on doive procéder à des jointures externes, c'est- à-dire joindre une table à
une autre, même si la valeur de liaison est absente dans une table ou l'autre. Enfin, dans quelques
cas, on peut procéder à des jointures hétérogènes, c'est-à-dire que l'on remplace le critère d'égalité
par un critère d'inégalité ou de différence.Exemple : considérons les tables Auteur et Album ci-dessous :
La requête SQL qui affiche tous les titres de l’album d’un
même auteur est :SELECT Titre
FROM Auteur, Album
WHERE Auteur.IdAuteur = Album.IdAuteurLa requête SQL qui affiche tous les titres par ordre croissant de l’album dont l’auteur et Daphné est
:SELECT Titre
FROM Auteur, Album
WHERE Auteur.IdAuteur = Album.IdAuteur
AND Auteur.Nom = "Daphné"
ORDER BY Album.Titre ASC ;
- Écrire des requêtes de création et de consultation des données
- Écrire les requêtes de modification et suppression des données
- Écrire des requêtes de mise à jour
I- MANIPULATION DES DONNEES
Dans cette section, nous parlerons essentiellement des requêtes SQL qui permettent d’insérer et de
mettre à jour des enregistrements.
1- Insertion d’un enregistrement
La commande INSERT permet d'insérer une ligne dans une table en spécifiant les valeurs à insérer.
La syntaxe est la suivante :INSERT INTO nom_table (nom_col_1, nom_col_2, ...)
VALUES (val_1, val_2, ...) ;
La liste des noms de colonne est optionnelle. Si elle est omise, la liste des colonnes sera par défaut
la liste de l'ensemble des colonnes de la table dans l'ordre de la création de la table. Si une liste de
colonnes est spécifiée, les colonnes ne figurant pas dans la liste auront la valeur NULL.Exemple :
Considérons la table Eleve ci-dessous :
La requête SQL qui a permet d’insérer la ligne relative à l’élève Pambé Max est :INSERT INTO Eleve (Matricule, Nom, Prenom,Classe,Quartier)
VALUES ("E0001" , "Pambé" , "Max","TC", "Domayo") ;
2- Modification d’un enregistrement
La modification d’un enregistrement se faire partiellement ou en totalité. Pour modifier
partiellement un enregistrement on utilise la syntaxe ci-après :UPDATE Nom_table
SET champ1=valeur1, champ2=valeur2, … , champN=valeur n
WHERE Condition ;
Exemple : La requête SQL qui change le quartier de l’élève dont le matricule est E0009 est :UPDATE Eleve
SET Quartier="Pitoaré"
WHERE Matricule="E0009" ;Pour modifier en totalité un enregistrement on utilise la syntaxe ci-après :REPLACE INTO Nom_table
VALUES (clé_primaire, valeur2...valeurN);
Exemple : La requête SQL qui modifie l’enregistrement relatif à l’élève de matricule E0010 dans la
table Eleve est :REPLACE INTO Eleve
VALUE ("E0010", "OTELE", "Gaston","2nde", "Doualaré") ;
3- Suppression d’un enregistrement
Pour supprimer un enregistrement on utilise la syntaxe ci-après :
DELETE FROM Table
WHERE ConditionExemple : La requête SQL qui supprime les enregistrements relatifs aux élèves dont le quartier est
Doualaré dans la table Eleve est :DELETE FROM Eleve
WHERE Quartier="Doualaré";
II- INTERROGATION DES DONNEES
La sélection d’enregistrements est la requête la plus employé avec SQL. Elle permet de rechercher
des informations à partir d’une ou de plusieurs tables, suivant d’éventuels critères. Voici la syntaxe
générale d'une commande SELECT :SELECT [DISTINCT ou ALL] * ou liste de colonnesFROM nom de table ou de la vue
[WHERE prédicats]
[GROUP BY ordre des groupes]
[HAVING condition]
[ORDER BY ] liste de colonnesNB : dans cette syntaxe, les mots clef du SQL sont en gras, les paramètres en minuscule et entre
crochets on trouve les parties optionnelles. En fait l'ordre SQL SELECT est composé de 6 clauses
dont 4 sont optionnelles.
Clauses de l'ordre SELECT :
NB : La plupart du temps, la difficulté réside dans la compréhension de la différence entre le filtre
WHERE et le filtre HAVING. Disons plus pragmatiquement que le filtre WHERE permet de filtrer
les données des tables tandis que le filtre HAVING permet de filtrer les données du résultat...REMARQUE : pour spécifier une valeur littérale il faut l'entourer de guillemets simples.Exemple : la requête SQL qui affiche les noms et prénoms des élèves vivant dans le quartier
Kongola est :SELECT Nom, Prenom
FROM Eleve
WHERE Quartier = 'Kongola' ;
4- L'opérateur * (étoile)
Le caractère * (étoile) récupère toutes les colonnes de la table précisée dans la clause FROM de la
requête. Juste après le mot clef SELECT, on précise les colonnes de la table qui doivent être
présentées dans la réponse. L'utilisation du caractère étoile ramène toutes les colonnes de la table
dans la réponse. Dans le cas contraire il faut expressément nommer chacune des colonnes et les
séparer par des virgules.Exemple : la requête SQL qui affiche toutes les informations relatives aux élèves vivant dans le
quartier Kongola est :SELECT *
FROM Eleve
WHERE Quartier = 'Kongola' ;
5- L'opérateur DISTINCT (ou ALL)
Lorsque le moteur construit la réponse, il rapatrie toutes les lignes correspondantes, généralement
dans l'ordre ou il les trouve, même si ces dernières sont en double, c'est à dire qu'il récupère toutes
les lignes (ALL par défaut). C'est pourquoi il est souvent nécessaire d'utiliser le mot clefDISTINCT qui permet d‘éliminer les doublons dans la réponse.
6- La clause WHERE
Elle permet de faire la restriction. Pour définir des conditions de sélection d’enregistrements On
peut utiliser les opérateurs.
Voici un tableau résumant les principaux opérateurs utilisés pour la construction des prédicats :
Exemple 1: Noms des élèves dont le nom commence par la lettre B
SELECT Nom
FROM Eleve
WHERE Nom LIKE "B%" ;Exemple 2 : Noms et date de naissance des élèves nés entre 1992 et 1994
SELECT Nom, Date_Naissance
FROM eleve
WHERE Date_Naissance BETWEEN "1992/01/01" AND "1994/12/31";
5- La clause ORDER BY
Cette clause permet de définir le tri des colonnes de la réponse, soit en précisant le nom littéral de la
colonne, soit en précisant son n° d'ordre dans l'énumération qui suit le mot clef SELECT. ASCspécifie l'ordre ascendant et DESC l'ordre descendant du tri. ASC ou DESC peut être omis, dans ce
cas c'est l'ordre ascendant qui est utilisé par défaut. Bien que la clause ORDER BY ne soit pas
nécessaire, il est souvent utile de trier la réponse en fonction des colonnes. En revanche le temps de
réponse s'en ressent souvent. Pour spécifier l'ordre de tri, on doit placer les noms des colonnes
séparées par des virgules juste après le mot clef "ORDER BY", dans l'ordre voulu. On peut aussi
utiliser le rang de chaque colonne dans l'ordre spécifié dans la clause SELECT
ORDER BY colonne1 [ASC ou DESC] , colonne2 [ASC ou DESC ] ...Exemple : Noms et quartier des élèves triés par ordre croissant des
quartiers et décroissant des nomsSELECT Nom, Quartier
FROM Eleve
ORDER BY Quartier ASC, Nom DESC;
6- La Clause GROUP BY
Elle permet de réunir en une seule ligne des enregistrements qui ont en commun une même valeur
de champ. L’instruction GROUP BY s’utilise avec des fonctions de groupe ou avec la clauseHAVING.
Les fonctions de groupe sont des fonctions qui permettent d’effectuer des opérations sur un
ensemble de valeurs d’un champ. Elles sont déclarées dans la clause SELECT ou dans la clauseHAVING. Les plus courantes sont résumées dans le tableau ci-après :
Exemple 1: Moyenne des notes obtenues par matièreSELECT Matiere, AVG(Note)
FROM Note
GROUP BY Matiere ;Exemple 2 : Meilleure note par matièreSELECT Matiere, MAX(Note)
FROM Note
GROUP BY Matiere ;Exemple 3 : Nombre d’élèves par quartierSELECT Quartier, COUNT(Matricule)
FROM Eleve
GROUP BY Quartier ;
7- La clause HAVING
La clause HAVING fonctionne comme la clause WHERE, mais pour les éléments d’un même
groupe.Exemple : matières pour lesquelles au moins deux élèves ont composéSELECT Matiere
FROM Note
GROUP BY Matiere
HAVING COUNT(Note)>=2 ;
III- LA JOINTURE
Les jointures permettent d'exploiter pleinement le modèle relationnel des tables d'une base de
données. Elles sont faites pour mettre en relation deux (ou plus) tables concourant à rechercher la
réponse à des interrogations. Une jointure permet donc de combiner les colonnes de plusieurs
tables.
Il existe en fait différentes natures de jointures. Retenez cependant que la plupart des jointures entre
tables s'effectuent en imposant l'égalité des valeurs d'une colonne d'une table à une colonne d'une
autre table. On parle alors de jointure naturelle ou équi-jointure. Mais on trouve aussi des jointures
d'une table sur elle-même. On parle alors d'auto-jointure.
De même, il arrive que l'on doive procéder à des jointures externes, c'est- à-dire joindre une table à
une autre, même si la valeur de liaison est absente dans une table ou l'autre. Enfin, dans quelques
cas, on peut procéder à des jointures hétérogènes, c'est-à-dire que l'on remplace le critère d'égalité
par un critère d'inégalité ou de différence.Exemple : considérons les tables Auteur et Album ci-dessous :
La requête SQL qui affiche tous les titres de l’album d’un
même auteur est :SELECT Titre
FROM Auteur, Album
WHERE Auteur.IdAuteur = Album.IdAuteurLa requête SQL qui affiche tous les titres par ordre croissant de l’album dont l’auteur et Daphné est
:SELECT Titre
FROM Auteur, Album
WHERE Auteur.IdAuteur = Album.IdAuteur
AND Auteur.Nom = "Daphné"
ORDER BY Album.Titre ASC ;
Précédent
Suivant
Aucun commentaire:
Enregistrer un commentaire
Posez votre question ici