Académique Documents
Professionnel Documents
Culture Documents
GESTION DES
BASES DE DONNÉE
2023/2024 - SEMESTRE 1
Cheikh KACFAH
01/09/2023
I
Cheikh KACFAH
cheikh.kacfah@institutsaintjean.org
LMD: LANGAGE DE
MANIPULATION DE DONNÉES
• Les instructions principales du DML sont:
• INSER
• SELEC
• DELET
• UPDATE
3
T
LMD: SELECT - I
• L’instruction SELECT est l’instruction la plus complexe du langage SQL
• Néanmoins, elle offre une grande exibilité pour la recherche d’information dans les tables
[ORDER BY colonne [{ASC | DESC}] [, ...]]; les colonnes utilisées pour le tri
4
fl
fi
.
LMD: SELECT - II
• Éléments généraux sur la clause SELECT :
• Il est possible de pré xer une colonne par : « nom de la table. » (permet de lever l’ambiguïté)
• ⚠Malgré sa ressemblance, l’instruction SELECT n’est pas lié l’opération de sélection (restriction)
de l’algèbre relationnelle
SELECT nom, dateNaissance FROM Client; sélectionne les colonnes nom et date de naissance de la table Client (Projection
SELECT Client.nom, Client.dateNaissance FROM Client; Les colonnes sont pré xées par les noms de tables
5
fi
fi
;
LMD: SELECT - II
• Précisions sur la clause FROM :
• Cette clause permet de choisir quelle(s) table(s) est(sont) utilisée(s) pour la requête;
SELECT nom, dateNaissance FROM Client; sélectionne les colonnes nom et date de naissance de la table Client (~Projection
SELECT Client.nom, Pays.nom FROM Client, Pays; ??? des tables Clients et Pays avec leurs colonnes nom
• La clause WHERE permet d’ajouter une restriction sur les lignes retournées; À rapprocher de la
sélection de l’Algèbre relationnell
• Lorsque la clause WHERE est omise, toutes les lignes sont af chées (équivalent à WHERE TRUE).
WHERE age > 35 ; lignes de la table Client qui ont dans la colonne age une valeur strictement sup. à 35
7
e
fi
LMD: SELECT - IV
• La clause SELECT TOP :
LIMIT 10 OFFSET 20 ; renvoi les titres des 10 lms « suivants » 20 « premiers » lms
fi
r
fi
LMD: SELECT - V
• La clause SELECT DISTINCT :
- SELECT nomRealisateur Les noms de réalisateurs ayant réalisé plusieurs lms seront dupliqués
FROM Film ;
- SELECT DISTINCT nomRealisateur Chaque nom de réalisateur apparaîtra une seule fois
FROM Film ;
fi
LMD: SELECT - VI
• Les alias de colonne ou de table
• Ont l’avantage de permettre de proposer un nouveau nom de colonne pour la sortie; l’usage
d’apostrophes permet des mots avec espaces;
• Permettent de lever les ambiguïtés sur les noms de tables lors des requêtes récursives
• Égal : =
• Ou logique : OR ou ||
&
>
FROM Pays ;
12
LMD: SELECT - IX
• Opérateurs de la clause WHERE – opérateurs de recherche textuelle :
LMD: SELECT - X
• Opérateurs de la clause WHERE – appartenance à une liste :
- SELECT nom_colonne [, …]
WHERE colonne IN (valeur1, valeur2, ...); Les valeurs possibles sont listées entre () et séparées par des ,
FROM Film
14
fi
LMD: SELECT - XI
• Opérateurs de la clause WHERE – intervalle de valeurs possibles :
- SELECT nom_colonne [, …]
FROM Client
15
fi
• il est possible d’utiliser le résultat d’une requête comme entrée dans une autre;
• ainsi, on peut imbriquer plusieurs requêtes les unes dans les autres;
FROM (SELECT * FROM Film WHERE genre = ‘Action’) AS FilmDAction Résultats du SELECT vus comme une table
FROM Client
WHERE idPays = (SELECT idPays FROM Pays WHERE nomPays = ‘Cameroun’) AND … vu comme une seule valeur*
lmPrefere IN ( SELECT idFilm FROM Film WHERE nomrealisateur=‘NTAMACK’ ); … vu comme une liste de valeurs
16
fi
• valeur minimum : MI
• Selon les SGBD, plusieurs autres fonctions d’agrégation sont disponibles : valeur
médiane, écart type, variance et plusieurs autres.
17
N
- SELECT MIN(duree) AS ‘Durée Min’, MAX(duree) AS ‘Durée Max’, SUM(duree) AS ‘Total durée’, AVG(duree) AS
‘Durée moyenne’
FROM Film
- SELECT COUNT(idFilm) Nombre de lm disponibles en DVD. Un lm présent sur plusieurs DVDs sera compté autant de fois
FROM Dvd ;
- SELECT COUNT(DISTINCT idFilm) Nombre de lm disponibles en DVD, chaque lm étant compté une seule fois
FROM Dvd ;
18
;
fi
fi
fi
fi
LMD: SELECT - XIV
• Clause GROUP BY
• Cette clause permet d’appliquer les fonctions d’agrégation aux sous groupes de lignes
qui ont une valeur commune pour une colonne donnée
• L‘usage de plusieurs colonnes pour cette clause implique que le regroupement se fera
sur l’ensemble des valeurs provenant de ces colonnes (comme un tout).
FROM Dvd
GROUP BY idFilm ;
19
:
GROUP BY idPay
HAVING NbFilms>5 ;
20
FROM Artiste
21
fi
;
LMD: SELECT - XV
• Requêtes corrélées
• Le SQL permet des requêtes plus complexes: les requêtes imbriquées corrélées
(ou sous-requêtes corrélées ou requêtes synchronisées)
23
FROM nom_table
FROM Film AS
fi
• Différenc
SELECT DISTINCT A.col1 [, A.col2, ...]
FROM TableA AS A LEFT JOIN TableB AS
ON A.col1 = B.col1 [AND A.col2 = B.col2, …
WHERE B.col1 IS NULL ;
26
n
LMD: INSERT - I
• L’instruction INSERT
VALUES (‘CM’ , ‘Cameroun’ , ‘Camfranglais’); …Et donc insérer les données dans cet ordre
VALUES (‘CM’, ‘Cameroun’ , ‘Camfranglais’) , …Et donc insérer les données dans l’ordre de dé nition*
(‘NG’ , ‘Nigéria’ , ‘Igbo’); … Et on peut insérer plusieurs données à la fois (dans tous les cas)
27
:
LMD: INSERT - II
• Même s’il est possible d’omettre le nom des colonnes, il est recommandé de les
spéci er a n de simpli er les cas éventuels où la structure de la table serait modi ée
• Il peut arriver d’utiliser une requête imbriquée a n d’aller chercher la valeur d’une clé
primaire pour l’utiliser à titre de clé étrangère.
VALUES (‘NDO’ ,
‘Daniel’
‘1947/05/25’ );
28
fi
fi
fi
fi
,
SELECT expression ;
GROUP BY F.paysOrigine;
29
e
LMD: DELETE
• L’instruction DELETE permet de supprimer des lignes dans une table (une table à la fois).
• Cette instruction ne permet pas de supprimer une table mais son contenu. Si une table est
vidée, elle existe toujours avec le même schéma.
• Si la clause WHERE n’est pas spéci ée, la table est entièrement vidée de son contenu
30
fi
LMD: UPDATE
• L’instruction UPDATE permet de modi er les valeurs d’attributs d’une ou
plusieurs lignes
• Si la clause WHERE n’est pas spéci ée, toutes les lignes de la table sont
modi ées.
- UPDATE nom_table
📝 Les valeurs peuvent être issues d’une requête
SET nom_colonne1 = valeur1 [, nom_colonne2 = valeur2 …
[WHERE expression]
- UPDATE Client
📝 On peut réutiliser les valeurs courantes
SET nbMaxEmpt = nbMaxEmpt * 2 , ville = 'Yokadouma'
- UPDATE Client SET ville=‘Yaoundé’ ; Change les villes de tous les clients en Yaoundé
31
fi
.
fi
fi
]
• Fonctions mathématiques :
• ABS, SIG
• DIV, MOD,
• PI, COS, SIN, TAN, ACOS, ASIN, ATAN, ATAN2, RADIANS, DEGREE
• RAND,
• FORMA
• STR_TO_DATE, DATE_FORMAT
33
T
LDD: VUES - I
• Les vues sont des requêtes stockées qui, lorsqu'elles sont
invoquées, produisent un résulta
LDD/DML: VUES - II
- CREATE [OR REPLACE] VIEW nom_vue [( colonne1 [, colonne2 ...])
AS select_statement
AS SELECT titre, nomRealisateur, prenomRealisateur, genre, duree FROM Film WHERE duree>140
AS SELECT c.idClient, CONCAT(prenomClient, ' ', nomClient) AS client, COUNT(*) as 'nombre emprunts
35
fi
;
LDD: INDEX
• Un index est une structure de données qui améliore la vitesse des opérations dans une table. Ils
peuvent être créés à l'aide d'une ou de plusieurs colonnes, ce qui permet à la fois des
recherches aléatoires rapides et un tri ef cace pour l'accès aux enregistrements
• Désavantages
• Types d’inde
• Unique: index ne permettant pas des doublons mais autorisant des valeurs NULL. Lors de
la déclaration d’une PRIMARY KEY le SGBD construit un index UNIQUE n’autorisant pas
les valeurs NUL
36
x
fi
fi
L
RÉFÉRENCES
• Chantal Gribaumont, Administrez vos bases de données avec MySQL.
https://openclassrooms.com/