Cours BDD F
Cours BDD F
Cours BDD F
P ro f e s s e u r S o f i a B e l k h a l a
Les bases de Données
sbelkhala@um6ss.ma
2 ème a n n é e c y c l e i n g é n i e u r
Pr S.Belkhala 2
1
02/11/2022
Pr S.Belkhala 3
Les données
Pr S.Belkhala 4
2
02/11/2022
PPr r S S. B
. Be el kl kh ha al al a 55
5
PPr r S S. B
. Be el kl kh ha al al a 66
6
3
02/11/2022
• Préparer le réapprovisionnement
Pr S.Belkhala 77
7
D o n n é e s : P ro b l è m e d e c o m p l e x i t é
Les données stockées peuvent être :
4
02/11/2022
D o n n é e s : P ro b l è m e d e v o l u m e
Pr S.Belkhala 99
9
D o n n é e s : P ro b l è m e d e m a i n t e n a n c e
§ Nouvelles données
§ Données obsoletes
Pr S.Belkhala 10
10
10
5
02/11/2022
D o n n é e s : P ro b l è m e d e s t r u c t u re
Pr S.Belkhala 11
11
11
D o n n é e s : P ro b l è m e d e c o h é re n c e
Pr S.Belkhala 12
12
6
02/11/2022
P ro b l è m e d e c o h é re n c e
Pr S.Belkhala 13
13
13
§ Approche Fichiers
Pr S.Belkhala 14
14
14
7
02/11/2022
L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r
Soient les tableaux suivants, chaque tableau représente est enregistré sur un fichier
séparément
PPr r S S. B
. Be el kl kh ha al al a 15
15
15
L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r
Mise à jour
PPr r S S. B
. Be el kl kh ha al al a 16
16
16
8
02/11/2022
L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r
Pr S.Belkhala 17
17
L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r
Ressources
Direction Humaines
Application
Application Paie
Statistiques
Données sur le Données sur le
personnel personnel
Echanges
d’informations ?
Service
Service Financier
Commercial
Application Application Paie
Gestion
Données sur les clients, Données sur le
fournisseurs….. personnel, factures…
Pr S.Belkhala 18
18
18
9
02/11/2022
L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r
• Inconvénients :
§ Or dans la réalité, plusieurs applications peuvent avoir besoin des mêmes informations
(données) ce qui oblige les développeurs d'avoir plusieurs versions d'un même fichier.
Pr S.Belkhala 19
19
19
L a g e s t i o n d e s d o n n é e : A p p ro c h e F i c h i e r
• Exemple
Pr S.Belkhala 20
20
10
02/11/2022
A p p ro c h e f i c h i e r : E x e m p l e
Pr S.Belkhala 21
21
21
A p p ro c h e f i c h i e r : E x e m p l e
Service Commercial 1709, M, RAHMA, Clément, Paris 19è, 0614560641, Nord Est
Chaque service enregistre les données sur le fichier qui le concerne d’une
manière différente
Pr S.Belkhala 22
22
11
02/11/2022
L a g e s t i o n d e s d o n n é e : A p p ro c h e B a s e d e d o n n é e s
§ Exhaustif
§ Non redondant
§ Structuré
§ Persistant
Pr S.Belkhala 23
23
23
L a g e s t i o n d e s d o n n é e : A p p ro c h e B a s e d e d o n n é e s
Ressources
Direction Humaines
Application
Statistiques Application Paie
Service
Commercial Service Financier
Application Application Paie
Gestion
Pr S.Belkhala 24
24
24
12
02/11/2022
L a g e s t i o n d e s d o n n é e : A p p ro c h e B a s e d e d o n n é e s
• Avantages :
§ Intègre toutes les données pertinentes à un système dans une même structure que l'on
nomme une Base de Données
§ Assure la gestion de ces données par un logiciel dit Système de Gestion de Bases de
Données (SGBD)
§ Offre une vision partielle (vue) de l'ensemble des données à chaque utilisateur.
§ Assure le partage des données entre les différents utilisateurs.
Description UNIQUE du Personnel Valeur UNIQUE de l’information
Pr S.Belkhala 25
25
25
A p p ro c h e B a s e d e d o n n é e : Av a n t a g e s
Pr S.Belkhala 26
26
26
13
02/11/2022
§ Il doit pouvoir :
o Ecrire
o Modifier
o Interroger
o Administrer
Pr S.Belkhala 27
27
27
Pr S.Belkhala 28
28
28
14
02/11/2022
• Indépendance physique
• Indépendance logique
Pr S.Belkhala 29
29
29
Pr S.Belkhala 30
30
30
15
02/11/2022
31
32
Pr S.Belkhala 32
32
32
16
02/11/2022
Le niveau conceptuel
Il correspond à la vision générale des données, indépendante des
applications individuelles et de la façon dont les données sont stockées.
33
Pr S.Belkhala 33
33
33
Le niveau physique
34
Pr S.Belkhala 34
34
34
17
02/11/2022
S y s t è m e d e G e s t i o n d e B a s e d e D o n n é e s : A rc h i t e c t u re s
A rc h i t e c t u re c e n t r a l i s é e
35
Pr S.Belkhala 35
35
35
S y s t è m e d e G e s t i o n d e B a s e d e D o n n é e s : A rc h i t e c t u re s
A rc h i t e c t u re d i s t r i b u é e
Pr S.Belkhala 36
36
36
18
02/11/2022
Pr S.Belkhala 39
39
39
Pr S.Belkhala 40
40
19
02/11/2022
• Modèle relationnel
Pr S.Belkhala 41
41
Pr S.Belkhala 42
42
20
02/11/2022
• Modèle réseau
Le modèle réseau est une extension du modèle hiérarchique
qui autorise des relations plusieurs-à-plusieurs entre des
enregistrements liés, ce qui implique plusieurs
enregistrements parents. Un enregistrement peut être un
membre ou un enfant dans plusieurs ensembles, ce qui
permet à ce modèle de traduire des relations complexes.
Pr S.Belkhala 43
43
• Modèle entité-association
Ce modèle reproduit les relations entre les entités du monde réel de façon très similaire au
modèle réseau, mais il n'est pas lié aussi directement à la structure physique de la base de
données. Il est souvent utilisé pour la création d'une base de données d'un point de vue
conceptuel.
Pr S.Belkhala 44
44
21
02/11/2022
Pr S.Belkhala 45
45
45
Schéma :
Pr S.Belkhala 46
46
22
02/11/2022
Pr S.Belkhala 47
47
• Partant de l’idée qu’une base de données doit être une description fidèle du domaine
d’application, on envisage de relever dans celui-ci les concepts principaux et leurs
propriétés. L’identification et la description de ces concepts utilisent un modèle, c’est-à-
dire une manière de voir les choses, auquel on associe une notation graphique.
Pr S.Belkhala 48
48
23
02/11/2022
• La manière de voir les choses, ou vision du monde, du modèle Entité-association est très
simple, voire simpliste. Elle consiste à structurer le monde en classes d’entités, dotées de
propriétés et en association les unes avec les autres. Cette simplicité offre deux avantages
majeurs : elle met ce modèle à la portée des utilisateurs/modélisateurs peu expérimentés et
elle se traduit aisément en un schéma de base de données. Néanmoins, les modélisateurs
plus exigeants auront besoin d’un modèle plus riche et de méthodes plus puissantes, qui
seront décrits plus loin.
Pr S.Belkhala 49
49
On veut modéliser une Base de Données (BD) qui contient les personnes qui
possèdent des véhicules :
• Quelles « colonnes » ?
Pr S.Belkhala 50
50
24
02/11/2022
Pr S.Belkhala 51
51
• Un attribut est une caractéristique d'une entité susceptible d'être enregistrée dans la base de
données
• Chaque client est caractérisé par un numéro, un nom et une adresse. On modélisera ces
faits en dotant le type d’entités CLIENT des attributs
Pr S.Belkhala 52
52
25
02/11/2022
• On spécifiera le type de chaque attribut : numérique, caractère, date, etc. ainsi que sa
longueur
Vehicule
Pr S.Belkhala 53
53
• Il se peut que la valeur d’un attribut ne soit pas connue au moment où on décrit une entité, de
sorte que cet attribut n’a pas de valeur pour certaines entités. On le déclarera facultatif. Sinon,
cet attribut est obligatoire. Un attribut facultatif est indiqué par le symbole de cardinalité [0-
1], qui indique qu’à toute entité est associée de 0 à 1 valeur (figure 12.5). Les attributs
obligatoires sont caractérisés par une cardinalité [1-1], mais qui est implicite, et donc n’est
pas montrée dans les schémas.
Accident
NumAcc
DateAcc
Montant[0-1]
Pr S.Belkhala 54
54
26
02/11/2022
• Parmi les identifiants d’une table, l’un est choisi comme le plus représentatif et sera
dès lors déclaré identifiant primaire. Les autres sont alors des identifiants secondaires
de la table. En règle générale, toute table possède un identifiant primaire et zéro, un
ou plusieurs identifiants secondaires5. Les lignes d’une table qui possède au moins un
identifiant forment un ensemble et sont donc distinctes.
Pr S.Belkhala 55
55
Personne Véhicule
NuméroDeSécuritéSociale NuméroD’Immatriculation
Nom Posséder Marque
Adresse Modèle
DateDeNaissance Puissance
Pr S.Belkhala 56
56
27
02/11/2022
Pr S.Belkhala 57
57
58
Pr S.Belkhala 58
58
28
02/11/2022
Pr S.Belkhala 59
59
• Un type d'association est dit réflexif (récursif) si elle relie plusieurs occurrences d’un
même type d'entité.
60
Pr S.Belkhala 60
60
29
02/11/2022
Pr S.Belkhala 61
61
Cardinalité :
Une personne peut posséder un ou 0,1 / 1,1 / 0,n / 1,n Un véhicule est possédé par une et
plusieurs véhicules 1,n une seule personne 1,1
Pr S.Belkhala 66
66
30
02/11/2022
1,1 : Une occurrence du type entité ne peut exister que si elle est impliquée dans exactement
(au moins et au plus) une association.
1,n : Une occurrence du type entité ne peut exister que si elle est impliquée dans au moins une
association.
0,1 : une occurrence du type entité peut exister tout en n'étant impliquée dans aucune
association et peut être impliquée dans au maximum une association.
0,n : c'est la cardinalité la plus ouverte ; une occurrence du type entité peut exister tout en
n'étant impliquée dans aucune association et peut être impliquée, sans limitation, dans plusieurs
associations
Pr S.Belkhala 67
67
67
Pr S.Belkhala 68
68
68
31
02/11/2022
Pr S.Belkhala 69
69
Modèle Relationnel
• Le modèle relationnel des données est une représentation sous forme de tables des
données résultante de la modélisation conceptuelle des données
Pr S.Belkhala 71
71
32
02/11/2022
Modèle Relationnel
• Il est basé sur l’algèbre relationnelle et consiste en une projection mathématique d’un
groupe composé d’entités, associations, cardinalités en un groupe composé uniquement
de tables.
Pr S.Belkhala 72
72
Modèle Relationnel
• Une table ou relation est définie comme un tableau de données où on associe un nom à
chaque colonne définissant les attributs tandis que les lignes sont les occurrences.
Pr S.Belkhala 73
73
33
02/11/2022
Modèle Relationnel
• Domaine
• Uplet
• Attributs
• Clé primaire
• Relation
• degré
Pr S.Belkhala 74
74
Modèle Relationnel
• Clé primaire :un ensemble des données permettant d’indexer chaque ligne d’une table
donnée de manière différenciée
• Degré: le nombre d’attributs dans une relation.
Pr S.Belkhala 75
75
34
02/11/2022
Modèle Relationnel
• Relation: Une relation (ou table) est un élément constitué d’un entête et
d’un corps. L’entête est un ensemble des noms d’attributs et de leurs
domaines et le corps est un ensemble de uplets ayant le même entête que la
relation.
Pr S.Belkhala 76
76
Modèle Relationnel
• Relation
• Une relation est caractérisée par :
o un nom R
o un ensemble d'attributs A1, A2, … An
• Exemple :
Pr S.Belkhala 77
77
35
02/11/2022
Modèle Relationnel
• Relation
Pr S.Belkhala 78
78
Modèle Relationnel
• Clé primaire
Est une contrainte d'unicité, composée d'une ou plusieurs colonnes, et qui permet
d'identifier de manière unique chaque ligne de la table.
Pr S.Belkhala 79
79
36
02/11/2022
Modèle Relationnel
• Clé primaire
• Une clé primaire est un champ, ou une série de champs, qui aide à
Pr S.Belkhala 80
80
Modèle Relationnel
• Clé étrangère
jointure).
Pr S.Belkhala 81
81
37
02/11/2022
Modèle Relationnel
• Clé étrangère
Les clés étrangères, qui permettent de gérer des relations entre plusieurs tables, et
garantissent la cohérence des données.
C’est par les clés étrangères qu’on peut mettre en relation des lignes dans des tables distinctes.
Pr S.Belkhala 82
82
Modèle Relationnel
• Clé étrangère
Soit les deux relations suivantes :
Etudiant (N° Etud, Nom, Prénom, #Code Filière)
Filière (Code Filière, Libellé)
Le fait de déclarer le code de la filière dans la relation Etudiant, nous avons automatiquement
Pr S.Belkhala 83
83
38
02/11/2022
Modèle Relationnel
Pr S.Belkhala 84
84
ENT ITE E
Attribut3
85 85
Pr S.Belkhala
85
39
02/11/2022
Pr S.Belkhala 86
86
86
l’entité côté « 1 ».
l’autre entité.
Pr S.Belkhala 87
87
87
40
02/11/2022
Pr S.Belkhala 88
88
88
Une association de type N:N (c’est à dire qui a les cardinalités maximales
d’une table dont la clé primaire est composée des clés étrangères référençant
relation.
Pr S.Belkhala 89
89
89
41
02/11/2022
90 90
Pr S.Belkhala
90
Pr S.Belkhala 91
91
42
02/11/2022
Pr S.Belkhala 92
92
92
Cas de l’association 1,1 une association dont les cardinalités maximales sont à
1 de chaque côté
Pr S.Belkhala 93
93
93
43
02/11/2022
OU
Pr S.Belkhala 94
94
94
E x e rc i c e
Une société loue des photocopieurs à ses clients. La location d’un photocopieur est
obligatoirement assortie d’un contrat de maintenance, qui prévoit l’intervention d’un
technicien dans les 24 h. Pour améliorer la gestion des interventions
Pr S.Belkhala 95
95
95
44
02/11/2022
Pr S.Belkhala 96
96
96
E x e rc i c e
Une casse automobile souhaite gérer son stock de pièces. Chaque pièce est identifiée par une
référence, une catégorie (carosserie, mécanique, électricité, etc.), une date de récupération et
un prix de vente. On souhaite également pouvoir établir une correspondance entre les pièces et
les véhicules pour lesquels elles conviennent, ces véhicules étant repérés par marque, modèle
et année.
Etablir le MCD adéquat dans les deux hypothèses suivantes :
1.toutes les pièces d'une même référence possèdent un prix unique
2.chaque pièce possède un prix propre.
Pr S.Belkhala 97
97
97
45
02/11/2022
Corrigé
Pr S.Belkhala 98
98
Pr S.Belkhala 99
99
46
02/11/2022
Pr S.Belkhala 100
100
Pr S.Belkhala 101
101
47
02/11/2022
I n t ro d u c t i o n a u S Q L
• Le langage SQL est basé sur un ensemble d’opérations à effectuer sur des tables.
• Ces opérations constituent d’une part l’algèbre relationnelle et d ’autre part des
opérateurs très utiles tels que le tri et les calculs (agrégats).
Pr S.Belkhala 102
102
I n t ro d u c t i o n a u S Q L
• Il n’est pas nécessaire de spécifier comment retrouver les informations (le SGBD
s’en charge) mais seulement de quelles informations on a besoin.
Pr S.Belkhala 103
103
48
02/11/2022
I n t ro d u c t i o n a u S Q L
• Aujourd’hui le langage SQL est normalisé, et est le standard d'accès aux bases de données
relationnelles
• Il est utilisable directement sur un terminal grâce à l'utilitaire interactif SQL ou dans un
langage hôte.
Pr S.Belkhala 104
104
I n t ro d u c t i o n a u S Q L
3. Le Langage de Contrôle de Données (LCD ou DCL) contient les primitives de gestion des
transactions: COMMIT et ROLLBACK et des privilèges d'accès aux données GRANT et
REVOKE
Pr S.Belkhala 105
105
49
02/11/2022
Langage SQL :
La Définition des donnés
Pr S.Belkhala 106
106
C r é a t i o n d e s Ta b l e s
• La création de la Base de Données (BD) se fait simplement en créant les tables qui
la composent.
Pr S.Belkhala 107
107
50
02/11/2022
Création de la BDD
Création simple:
CREATE TABLE nom_table ( Nom_col1 TYPE1, Nom_col2
TYPE2, …);
Pr S.Belkhala 108
108
C r é a t i o n d e s Ta b l e s : C o n t r a i n t e s
• Les contraintes sont les règles appliquées aux colonnes de données d'une table. Celles-ci
sont utilisées pour limiter le type de données pouvant aller dans une table. Cela garantit
l'exactitude et la fiabilité des données de la base de données.
Pr S.Belkhala 109
109
51
02/11/2022
C r é a t i o n d e s Ta b l e s : C o n t r a i n t e s
Les contraintes les plus communes sont :
• NOT NULL
• DEFAULT
• UNIQUE
• CHECK
• PRIMARY KEY
• FOREIGN Key
• INDEX
Pr S.Belkhala 110
110
• Par défaut, une colonne peut contenir des valeurs NULL. Si on ne souhaite pas qu'une
colonne ait une valeur NULL, on doit définir une telle contrainte sur cette colonne en
spécifiant que NULL n'est plus autorisé pour cette colonne.
CREATE TABLE Employes(
Id INT NOT NULL,
Nom VARCHAR (20) NOT NULL,
Age INT NOT NULL,
Salaire DECIMAL (18, 2),
);
• Si la table Employes a déjà été créée, pour ajouter une contrainte NOT NULL à la colonne
Salaire dans MySQL, la requête s’écrit comme suit :
Pr S.Belkhala 111
111
52
02/11/2022
C o n t r a i n t e s : D E FA U LT
• La contrainte DEFAULT fournit une valeur par défaut à une colonne lorsque
l'instruction INSERT INTO ne fournit pas de valeur spécifique.
Pr S.Belkhala 112
112
Contraintes: UNIQUE
• La contrainte UNIQUE empêche que deux enregistrements aient des valeurs identiques
dans une colonne.
CREATE TABLE Employes(
Id INT NOT NULL,
Nom VARCHAR (20) NOT NULL UNIQUE,
Age INT NOT NULL,
Salaire DECIMAL (18, 2),
PRIMARY KEY (Id)
);
• Si la table Employes a déjà été créée, pour ajouter une contrainte UNIQUE à la colonne
Nom dans MySQL, la une requête est comme suit :
113
53
02/11/2022
Contraintes: CHECK
• La contrainte CHECK active une condition permettant de vérifier la valeur saisie dans un
enregistrement. Si la condition est évaluée à false, l'enregistrement viole la contrainte et
n'est pas entré dans la table.
• Par exemple, la requête SQL suivante crée la même table Employes, mais dans ce cas, la
colonne Age est définie sur CHECK, de sorte qu’on ne peut pas avoir un employé de
moins de 18 ans.
Pr S.Belkhala 114
114
Contraintes: CHECK
• Si la table Employes a déjà été créée, pour ajouter une contrainte CHECK à la
colonne Age dans MySQL, vous devez écrire une requête comme suit :
Pr S.Belkhala 115
115
54
02/11/2022
Contraintes: INDEX
• L'INDEX est utilisé pour créer et récupérer des données de la base de données très
rapidement. Un index peut être créé en utilisant une seule colonne ou un groupe de
colonnes dans une table. Lors de la création de l'index, un ROWID est attribué à chaque
ligne avant le tri des données.
• Les index appropriés sont bons pour les performances dans les bases de données
volumineuses. Une sélection de champs dépend de ce que vous utilisez dans vos
requêtes SQL.
• Syntaxe :
CREATE INDEX nom_index
ON nom_table ( colonne1, colonne1, ...);
• Pour supprimer une contrainte INDEX, on utilise la syntaxe SQL suivante.
Pr S.Belkhala 116
116
C o n t r a i n t e s : P R I M A RY K E Y
• Une colonne de clé primaire ne peut pas avoir de valeur NULL.
• Une table ne peut avoir qu'une seule clé primaire, qui peut consister en un ou plusieurs
champs. Lorsque plusieurs champs sont utilisés comme clé primaire, ils sont appelés clé
composite.
• Si une table a une clé primaire définie sur un ou plusieurs champs, vous ne pouvez pas
avoir deux enregistrements ayant la même valeur pour pour ces champs.
• Syntaxe pour définir l'attribut Id en tant que clé primaire dans une table Employes.
CREATE TABLE Employes(
Id INT NOT NULL,
Nom VARCHAR (20) NOT NULL,
Age INT NOT NULL,
Salaire DECIMAL (18, 2),
PRIMARY KEY (Id)
);
Pr S.Belkhala 117
117
55
02/11/2022
C o n t r a i n t e s : P R I M A RY K E Y
• Pour créer une contrainte PRIMARY KEY sur la colonne "Id" alors que la table
Employes existe déjà, on utilise la syntaxe SQL suivante :
• Pour supprimer les contraintes de clé primaire de la table, on utilise la syntaxe donnée ci-
dessous.
Pr S.Belkhala 118
118
Pr S.Belkhala 119
119
56
02/11/2022
Pr S.Belkhala 120
120
C o n t r a i n t e s : S u p p re s s i o n
• Toute contrainte que vous avez définie peut être supprimée à l'aide de la
commande ALTER TABLE avec l'option DROP CONSTRAINT.
Pr S.Belkhala 121
121
57
02/11/2022
Modification de tables
Pr S.Belkhala 122
122
Modification de tables
Pr S.Belkhala 123
123
58
02/11/2022
Modification de tables
Pr S.Belkhala 124
124
Modification de tables
• Pour ajouter ou desupprimer des valeurs par défaut dans une tables existante :
Pr S.Belkhala 125
125
59
02/11/2022
destruction de tables
• La commande DROP TABLE en SQL permet de supprimer définitivement une table d’une
base de données. Cela supprime en même temps les éventuels index, trigger, contraintes et
permissions associées à cette table.
• Pour supprimer une table “nom_table” il suffit simplement d’utiliser la syntaxe suivante :
L’option CASCADE CONSTRAINTS permet de supprimer les clés étrangères des autres tables
qui pointent sur la table à supprimer.
Pr S.Belkhala 126
126
Langage SQL :
La Manipulation des donnés
Pr S.Belkhala 127
127
60
02/11/2022
Insertion
• L’insertion de données dans une table s’effectue à l’aide de la commande INSERT INTO.
Cette commande permet au choix d’inclure une seule ligne à la base existante ou plusieurs
lignes d’un coup.
Pr S.Belkhala 128
128
Insertion
Pr S.Belkhala 129
129
61
02/11/2022
Insertion
Cette deuxième solution est très similaire, excepté qu’il faut indiquer le nom des colonnes
avant “VALUES”. La syntaxe est la suivante :
A noter : il est possible de ne pas renseigner toutes les colonnes. De plus, l’ordre des
colonnes n’est pas important.
Pr S.Belkhala 130
130
Insertion
Insertion de plusieurs lignes à la fois
Il est possible d’ajouter plusieurs lignes à un tableau avec une seule requête. Pour ce faire, il
convient d’utiliser la syntaxe suivante :
INSERT INTO client (prenom, nom, ville, age) VALUES ('Rébecca',
'Armand', 'Saint-Didier-des-Bois', 24), ('Aimée', 'Hebert',
'Marigny-le-Châtel', 36), ('Marielle', 'Ribeiro', 'Maillères', 27),
('Hilaire', 'Savary', 'Conie-Molitard', 58);
A noter : lorsque le champ à remplir est de type VARCHAR ou TEXT il faut indiquer le texte
entre guillemet simple. En revanche, lorsque la colonne est un numérique tel que INT ou
BIGINT il n’y a pas besoin d’utiliser de guillemet, il suffit juste d’indiquer le nombre.
Pr S.Belkhala 131
131
62
02/11/2022
Insertion
Exemples :
Pr S.Belkhala 132
132
Modification
• La commande UPDATE permet d’effectuer des modifications sur des lignes existantes.
Très souvent cette commande est utilisée avec WHERE pour spécifier sur quelles lignes
doivent porter la ou les modifications.
UPDATE table
SET attribut_1 = valeur_1,
attribut_2 = valeur_2,
…
attribut_n = valeur_n
[WHERE <condition>] ;
• Cette syntaxe permet d’attribuer une nouvelle valeur à la colonne nom_colonne_1 pour les
lignes qui respectent la condition stipulé avec WHERE. Il est aussi possible d’attribuer la
même valeur à la colonne nom_colonne_1 pour toutes les lignes d’une table si la condition
WHERE n’était pas utilisée.
Pr S.Belkhala 133
133
63
02/11/2022
Modification
Exemples :
UPDATE CENTRE
SET COUTINSC = COUTINSC * 105%;
UPDATE CENTRE
SET COUTINSC = COUTINSC * 80%
WHERE NUMC = ‘101’;
Pr S.Belkhala 134
134
S u p p re s s i o n
La commande DELETE en SQL permet de supprimer des lignes dans une table. En utilisant
cette commande associé à WHERE il est possible de sélectionner les lignes concernées qui
seront supprimées.
Pr S.Belkhala 135
135
64
02/11/2022
S u p p re s s i o n
Si l’ont souhaite supprimer les utilisateurs qui se sont inscrit avant le 10/04/2012, il va falloir
effectuer la requête suivante :
Pour supprimer toutes les lignes d’une table il convient d’utiliser la commande DELETE
sans utiliser de clause conditionnelle.
DELETE FROM `utilisateur`
Pr S.Belkhala 136
136
S u p p re s s i o n
• Pour supprimer toutes les lignes d’une table, il est aussi possible d’utiliser la
commande TRUNCATE, de la façon suivante :
• Cette requête est similaire. La différence majeure étant que la commande TRUNCATE va
réinitialiser l’auto-incrémente s’il y en a un. Tandis que la commande DELETE ne
réinitialise pas l’auto-incrément.
Pr S.Belkhala 137
137
65
02/11/2022
Sélection
L’utilisation la plus courante de SQL consiste à lire des données issues de la base de
données. Cela s’effectue grâce à la commande SELECT, qui retourne des enregistrements
dans un tableau de résultat. Cette commande peut sélectionner une ou plusieurs colonnes
d’une table.
SELECT Je veux une telle chose
FROM de cette source
WHERE Ayant telles caractéristiques
ORDER BY avec cette ordre
Pr S.Belkhala 138
138
Sélection
Syntaxe :
SELECT nom_du_champ
FROM nom_du_tableau
Pr S.Belkhala 139
139
66
02/11/2022
Sélection
Exemple :
Si l’ont veut avoir la liste de toutes les villes des clients, il suffit d’effectuer la requête suivante :
SELECT ville FROM client
Pr S.Belkhala 140
140
Sélection
L’utilisation de la commande SELECT en SQL permet de lire toutes les données d’une ou
plusieurs colonnes. Cette commande peut potentiellement afficher des lignes en doubles. Pour
éviter des redondances dans les résultats il faut simplement ajouter DISTINCT après le mot
SELECT.
141
67
02/11/2022
Sélection
• WHERE
La commande WHERE dans une requête SQL permet d’extraire les lignes d’une base de
données qui respectent une condition. Cela permet d’obtenir uniquement les informations
désirées.
Pr S.Belkhala 142
142
Sélection
• ORDER BY
La commande ORDER BY permet de trier les lignes dans SELECT colonne1, colonne2
un résultat d’une requête SQL. Il est possible de trier les FROM table
données sur une ou plusieurs colonnes, par ordre ascendant ORDER BY colonne1
ou descendant.
Par défaut les résultats sont classés par ordre ascendant, SELECT colonne1, colonne2
toutefois il est possible d’inverser l’ordre en utilisant le FROM table
suffixe DESC après le nom de la colonne. ORDER BY colonne1 DESC
Pr S.Belkhala 143
143
68
02/11/2022
Sélection
• ORDER BY
Par ailleurs, il est possible de trier sur plusieurs colonnes en les séparant par une virgule.
Pr S.Belkhala 144
144
Sélection
• AND & OR
Une requête SQL peut être restreinte à l’aide de la condition WHERE. Les opérateurs logiques
AND et OR peuvent être utilisées au sein de la commande WHERE pour combiner des
conditions
Les opérateurs sont à ajoutés dans la condition WHERE. Ils peuvent être combinés à l’infini
pour filtrer les données comme souhaités.
Pr S.Belkhala 145
145
69
02/11/2022
Sélection
• AND & OR
Pr S.Belkhala 146
146
Sélection
• AND & OR
Pr S.Belkhala 147
147
70
02/11/2022
Sélection
De nombreux operateurs et fonctions peuvent être utilisés pour définir une condition, on peut
distinguer trois types:
• Comparaison entre attributs(colonnes) et/ou valeurs, au moins une par condition, doit
être vraie ou fausse pour chaque ligne(n-uplet)
• Transformation des attributs avant comparaison
• Combinaison logique de comparaisons
Pr S.Belkhala 148
148
Pr S.Belkhala 149
149
71
02/11/2022
• LIKE
• L'opérateur LIKE permet d'effectuer une comparaison entre une chaine de caractère
et un modèle particulier:
o LIKE '%a' : se termine par un «a»
o LIKE 'a%' : commence par un «a»
o LIKE '%a%' : contient le caractère «a» (n'importe où)
o LIKE 'pa%on' : commence par «pa», se termine par «on»
o LIKE 'a_c' : contient une seule lettre entre «a» et «c»
Pr S.Belkhala 150
150
• BETWEEN
L’opérateur BETWEEN est utilisé dans une requête SQL pour sélectionner un intervalle de
données dans une requête utilisant WHERE. L’intervalle peut être constitué de chaînes de
caractères, de nombres ou de dates. L’exemple le plus concret consiste par exemple à
récupérer uniquement les enregistrements entre 2 dates définies.
Pr S.Belkhala 151
151
72
02/11/2022
• BETWEEN
• Quelle requête pour obtenir les membres qui se sont inscrit entre le 1 avril 2012
et le 20 avril 2012
Pr S.Belkhala 152
152
Pr S.Belkhala 153
153
73
02/11/2022
Pr S.Belkhala 154
154
Quelle requête doit on utiliser si ont souhaite obtenir les enregistrements des adresses de
Paris et de Graimbouville
Pr S.Belkhala 155
155
74
02/11/2022
156
La clause LIMIT est à utiliser dans une requête SQL pour spécifier le nombre
maximum de résultats que l’ont souhaite obtenir.
la bonne pratique lorsque l’ont utilise LIMIT consiste à utiliser également la clause ORDER
BY pour s’assurer que quoi qu’il en soit ce sont toujours les bonnes données qui sont
présentées. En effet, si le système de tri est non spécifié, alors il est en principe inconnu et les
résultats peuvent être imprévisible.
Pr S.Belkhala 157
157
75
02/11/2022
S é l e c t i o n : Tr a n s f o r m a t i o n n u m é r i q u e
Operateurs de transformation de valeurs numériques:
• + : addition
• -: soustraction
• * : multiplication
• / : division
Exemple :
SELECT* FROM produits WHERE prix_vente > prix_achat + prix_achat* 20/100;
Pr S.Belkhala 158
158
• ROUND (N), FLOOR (N), CEILING (N) : arrondi de N, entier inf, entier sup
• …
Pr S.Belkhala 159
159
76
02/11/2022
S é l e c t i o n : Tr a n s f o r m a t i o n n u m é r i q u e
• …
Pr S.Belkhala 160
160
Sélection : Agrégation
Les fonctions d’agrégation dans le langage SQL permettent d’effectuer des opérations
statistiques sur un ensemble d’enregistrement. Étant données que ces fonctions s’appliquent à
plusieurs lignes en même temps, elle permettent des opérations qui servent à récupérer
l’enregistrement le plus petit, le plus grand ou bien encore de déterminer la valeur moyenne
sur plusieurs enregistrement.
Pr S.Belkhala 161
161
77
02/11/2022
Sélection : Agrégation
Pr S.Belkhala 162
162
Sélection : Agrégation
• La fonction d’agrégat s’utilise dans la clause SELECT à la place d’un nom de colonne.
Exemples:
• Prix moyen des articles : SELECT AVG(prix) FROM articles ;
Pr S.Belkhala 163
163
78
02/11/2022
Sélection : Agrégation
• Regroupement des lignes : GROUP BY
• Il est possible de calculer l’agrégation non pas sur toutes les lignes mais par catégories.
Syntaxe:
GROUP BY liste_attributs;
• Les lignes sont regroupées si elles ont les mêmes valeurs sur le ou les attributs de la
clause GROUP BY.
Pr S.Belkhala 164
164
Sélection : Agrégation
Exemple :
Table Achat
Commande CodeProduit Quantité Prix
96008 A10 10 83
96008 B20 35 32
96009 A10 20 83
96010 A15 4 110
96010 B20 55 32
Pr S.Belkhala 165
165
79
02/11/2022
Sélection : Agrégation
Exemple :
ID_client ID_fournisseur Prix
C1 F1 25
C1 F2 35
C2 F1 64
C2 F1 120
C2 F3 26
Pr S.Belkhala 166
166
Sélection : Agrégation
• Conditions sur les regroupements: HAVING
• Il est aussi possible de ne sélectionner que certains des groupes, avec la clause
HAVING.
• La condition HAVING en SQL est presque similaire à WHERE à la seule différence que
HAVING permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(), AVG(),
MIN() ou MAX().
Pr S.Belkhala 167
167
80
02/11/2022
Sélection : Agrégation
Exemple :
id client tarif
1 Pierre 102
2 Simon 47
3 Marie 18
4 Marie 20
5 Pierre 160
Requête si on souhaite récupérer la liste des clients qui ont commandé plus de 40 ?
SELECT client, SUM(tarif) FROM Commandes
GROUP BY client HAVING SUM(tarif) > 40 ;
client SUM(tarif)
Pierre 262
Simon 47
Pr S.Belkhala 168
168
Sélection : Agrégation
Exemple :
Commande CodeProduit Quantité Prix
96008 A10 10 83
96008 B20 35 32
96009 A10 20 83
96010 A15 4 110
96010 B20 55 32
Requête si on souhaite récupérer la liste des commandes qui ont un total de plus que 1700 ?
SELECT Commande, SUM(Quantité*Prix) AS Montant FROM Commandes
GROUP BY Commande HAVING Montant > 1700
ORDER BY Montant DESC ;
Commande Montant
96010 2200
96008 1950
Pr S.Belkhala 169
169
81
02/11/2022
E x e rc i c e
• Quelle requête utiliser pour récupérer les livres de la table qui ont un prix compris entre 20 et
22 ?
• Quelle requête utiliser pour récupérer tous les livres de la table à l'exception de celui portant
la valeur pour la colonne auteur musso
• Quelle requête utiliser pour récupérer le prix du livre le moins élevé de la table en
renommant la colonne dans les résultats par minus
Pr S.Belkhala 170
170
Langage SQL :
La Manipulation des donnés : JOINTURES
Pr S.Belkhala 171
171
82
02/11/2022
J o i n t u re s
Les jointures en SQL permettent d’associer plusieurs tables dans une même requête. Cela
permet d’exploiter la puissance des bases de données relationnelles pour obtenir des
résultats qui combinent les données de plusieurs tables de manière efficace.
En général, les jointures consistent à associer des lignes de 2 tables en associant l’égalité
des valeurs d’une colonne d’une première table par rapport à la valeur d’une colonne d’une
seconde table. Imaginons qu’une base de 2 données possède une table “utilisateur” et une
autre table “adresse” qui contient les adresses de ces utilisateurs. Avec une jointure, il est
possible d’obtenir les données de l’utilisateur et de son adresse en une seule requête.
Pr S.Belkhala 172
172
P ro d u i t c a r t é s i e n
• Le produit cartésien: construit une relation regroupant exclusivement toutes les possibilités
de combinaison des occurrences de deux relations qui satisfont une expression logique E.
o Le résultat du produit cartésien est une nouvelle relation qui a tous les attributs de R1 et
tous ceux de R2.
o Le nombre d'occurrences de la relation qui résulte du produit cartésien est le nombre
d'occurrences de R1 multiplié par le nombre d'occurrences de R2
Pr S.Belkhala 173
173
83
02/11/2022
L’ u n i o n
L'union est une opération portant sur deux relations ayant le même schéma et construisant une
troisième constituée des n-uplets appartenant à chacune des deux relations sans doublon.
Pr S.Belkhala 174
174
L’ u n i o n
Exemple :
Pr S.Belkhala 175
175
84
02/11/2022
L’ i n t e r s e c t i o n
• L'intersection est une opération portant sur deux relations ayant le même schéma et
construisant une troisième dont les n-uplets sont constitués de ceux communs aux deux
relations.
Pr S.Belkhala 176
176
L’ i n t e r s e c t i o n
Pr S.Belkhala 177
177
85
02/11/2022
L a D i f f é re n c e
La différence est une opération portant sur deux relations ayant le même schéma et
construisant une troisième relation dont les n-uplets sont constitués de ceux ne se trouvant que
dans la relation R1.
Pr S.Belkhala 178
178
L a D i f f é re n c e
Pr S.Belkhala 179
179
86
02/11/2022
Dans le langage SQL la commande INNER JOIN, aussi appelée EQUIJOIN, est un type de
jointures très communes pour lier plusieurs tables entre-elles. Cette commande retourne les
enregistrements lorsqu’il y a au moins une ligne dans chaque colonne qui correspond à la
condition.
Table A Table B
• ON: La clause ON correspond à la
condition de jointure la plus générale.
Pr S.Belkhala 180
180
Pr S.Belkhala 181
181
87
02/11/2022
Pr S.Belkhala 182
182
La commande LEFT JOIN (aussi appelée LEFT OUTER JOIN) est un type de jointure entre 2
tables. Cela permet de lister tous les résultats de la table de gauche même s’il n’y a pas de
correspondance dans la deuxième tables.
Table A Table B
Pr S.Belkhala 183
183
88
02/11/2022
Syntaxe : Pour lister les enregistrement de table1, même s’il n’y a pas de correspondance avec
table2, il convient d’effectuer une requête SQL utilisant la syntaxe suivante.
SELECT *
FROM table1
LEFT JOIN table2 ON table1.id = table2.fk_id
Pr S.Belkhala 184
184
Exemple
Pr S.Belkhala 185
185
89
02/11/2022
SELECT *
FROM utilisateur
LEFT JOIN commande ON utilisateur.id = commande.utilisateur_id
Pr S.Belkhala 186
186
La commande RIGHT JOIN (ou RIGHT OUTER JOIN) est un type de jointure entre 2 tables qui
permet de retourner tous les enregistrements de la table de droite (right = droite) même s’il n’y a
pas de correspondance avec la table de gauche. S’il y a un enregistrement de la table de droite qui
ne trouve pas de correspondance dans la table de gauche, alors les colonnes de la table de gauche
auront NULL pour valeur.
Table A Table B
Pr S.Belkhala 187
187
90
02/11/2022
Syntaxe pour lister toutes les lignes du tableau table2 (tableau de droite) et afficher les données
associées du tableau table1 s’il y a une correspondance entre ID de table1 et FK_ID de table2.
S’il n’y a pas de correspondance, l’enregistrement de table2 sera affiché et les colonnes
de table1vaudront toutes NULL.
SELECT *
FROM table1
RIGHT JOIN table2 ON table1.id = table2.fk_id
Pr S.Belkhala 188
188
Exemple
Pr S.Belkhala 189
189
91
02/11/2022
Pr S.Belkhala 190
190
Dans le langage SQL, la commande FULL JOIN (ou FULL OUTER JOIN) permet de faire une
jointure entre 2 tables. L’utilisation de cette commande permet de combiner les résultats des 2
tables, les associer entre eux grâce à une condition et remplir avec des valeurs NULL si la
condition n’est pas respectée.
SELECT *
FROM table1
FULL JOIN table2 ON table1.id = table2.fk_id
Pr S.Belkhala 191
191
92
02/11/2022
Table Utilisateur
Pr S.Belkhala 192
192
Pr S.Belkhala 193
193
93
02/11/2022
S Q L N AT U R A L J O I N
La commande NATURAL JOIN permet de faire une jointure naturelle entre 2 tables. Cette
jointure s’effectue à la condition qu’il y ai des colonnes du même nom et de même type dans
les 2 tables. Le résultat d’une jointure naturelle est la création d’un tableau avec autant de
lignes qu’il y a de paires correspondant à l’association des colonnes de même nom.
SELECT *
FROM table1
NATURAL JOIN table2
Pr S.Belkhala 194
194
S Q L N AT U R A L J O I N
Table Utilisateurs
Table Pays
Pr S.Belkhala 195
195
94
02/11/2022
SELECT *
FROM utilisateur
NATURAL JOIN pays
Pr S.Belkhala 196
196
95