Base - Données - VF
Base - Données - VF
Base - Données - VF
Données
2
CHAPITRE 1:
INTRODUCTION AUX BASES DE DONNÉES
3
INTRODUCTION
4
PROBLÉMATIQUE
Les applications sont de plus en plus complexes vis à vis à la structuration des données
5
IMPORTANCE ET UTILISATION DES DONNÉES
Définition :
C’est une unité d’informations homogènes portant un nom et physiquement
stockée sur une mémoire de masse permanente
Intérêts :
Stockage permanent des informations et manipulation de gros volumes de
données
Exemples :
Une source de programme C, un annuaire de personnes "annuaire.dat" où
chaque élément est un triplet <nom, prenom, téléphone>, un fichier image
(.jpg), etc.
7
PROPRIÉTÉS D'UN FICHIER
Chaque fichier a un contenu, soit une suite ordonnée d'octets, qui peut représenter
n'importe quelle donnée binaire déterministe : un programme informatique, un
document, un texte, etc.
9
ACTIONS SUR LES FICHIERS
Mise à jour :
a) Ajout : insertion d’un ou plusieurs enregistrements / de nouvelles zones
b) Modification :
Par substitution : correction d’une ou plusieurs rubriques d’un article
Par addition : addition de nouvelles valeurs dans une zone d’accumulation
de l’enregistrement
Par soustraction : soustraction de certaines quantités d’une zone
d’accumulation d’un enregistrement
c) Suppression :
D’articles : suppression d’un ou plusieurs enregistrement d’un fichier
De zones : élimination de certaines zones dans les articles d’un fichiers qui
sont inutiles.
10
LE SYSTÈME DE GESTION DES FICHIERS
Le Système de Gestion des Fichiers (SGF) est la partie du système d’exploitation permettant de
stocker les informations, de les récupérer et de les organiser dans des fichiers.
Rôle :
Il gère:
Le catalogue des fichiers (emplacement, organisation, droits d’accès)
Les opérations d’enregistrement et de lecture (entrées/sorties) dans les fichiers
La sécurité et contrôle des fichiers
La récupération de pannes.
Principe :
Chaque fichier créé est décrit par un certain nombre de propriétés
La description d'un fichier est stockée sur disque dur, dans une zone accessible en lecture et
en écriture au SGF
11
ORGANISATION DES FICHIERS
L’organisation des fichiers est la façon dont sont organisées les données sur le
support externe. Elle constitue la structure interne du fichier, dont dépendent les
algorithmes de lecture/écriture du SGF
12
ACCÈS AUX ENREGISTREMENTS DES FICHIERS
Une méthode d’accès est une façon d’accéder à un enregistrement dans un fichier
(séquentielle, indexée). C’est le mode d’exploitation d’un fichier dans un programme
d’application.
Elle dépend de l’organisation adoptée
Trois façons d’accéder aux fichiers
Séquentiel : on ne peut accéder à un élément que si on lit tous les éléments qui le
précèdent.
lire: fichier enregistrement (notion d’enregistrement courant)
Direct (relatif)
lire: fichier no_enregistrement enregistrement
Indexé (par la clé)
13
lire: fichier valeur_clé enregistrement
LES LIMITES À L'UTILISATION DES FICHIERS
Toute modification de la structure des enregistrements (ajout d’un champ par exemple) entraîne
la réécriture de tous les programmes qui manipulent ces fichiers.
14
LES LIMITES À L'UTILISATION DES FICHIERS
15
LES LIMITES À L'UTILISATION DES FICHIERS
Intégrité sémantique
Supprimer
16
LES LIMITES À L'UTILISATION DES FICHIERS
Le temps d'accès à une requête non prévue peut être très long.
17
LES LIMITES À L'UTILISATION DES FICHIERS
Fiabilité
Les SGF permettent de stocker les données de façon persistante. Cependant, lorsque des
pannes se produisent, les SGF n’ont pas de mécanisme permettant de récupérer les fichiers
dans un état cohérent malgré la panne.
Environnement multi-utilisateurs
Impossible de partager les données
18
DES FICHIERS AUX BASES DE DONNÉES
La multiplication des fichiers entraînait la redondance des données, ce qui rendait difficile
les mises à jour.
D'où l'idée d'intégration et de partage des données
19
C’EST QUOI UNE BASE DE DONNÉES ?
Une Base de Données (BD) est un ensemble structuré de données (1) enregistrées sur des
supports permanents accessibles par l’ordinateur (2) pour satisfaire simultanément plusieurs
utilisateurs (3) de manière sélective (4) en un temps opportun (5).
Pour contrôler les données ainsi que les utilisateurs, le besoin d'un système de gestion s'est vite fait
ressentir.
La gestion de la BD se fait grâce à un système appelé Système de Gestion de Bases de Données
(SGBD).
Le SGBD est une collection de logiciels permettant de créer, gérer et interroger de manière
efficace une BD indépendamment du domaine d’application.
User 1
User 2
22
HISTORIQUE DES SGBD
3) Description des données qui seront stockées grâce au Langage de Description de Données
(LDD) (create table, create user, alter table, drop table).
4) Manipulation des données (ajouter, modifier, supprimer des informations) grâce au Langage
de Manipulation de Données (LMD).
24
FONCTIONS D’UN SGBD
5) Consultation des données et traitement des informations obtenues (sélectionner, trier, calculer,
agréger,...) grâce au Langage d’Interrogation de Données (LID).
Ces langages (LDD, LMD, LID, LCD) fournissent des requêtes qui doivent être :
Simples
Déclaratives
Optimisées avant leur exécution
Langages :
Mise en place d’un mécanisme de réplication synchrone de la base dans une base miroir :
mirroring
27
FONCTIONS D’UN SGBD
28
MODÈLES D’UN SGBD
2) le modèle réseau: il a été introduit par IDS2 (1964). Les données sont
représentées sous la forme d’un graphe. Ce modèle utilise aussi des
pointeurs entre des enregistrements.
le modèle réseau
29
MODÈLES D’UN SGBD
30
ARCHITECTURE D’UN SGBD
L'architecture ANSI/SPARC, datant de 1975, définit des niveaux d'abstraction pour un système de
gestion de bases de données:
Niveau externe: Il définit les vues des utilisateurs
Niveau conceptuel: appelé aussi MCD (modèle conceptuel des données) ou MLD (modèle
logique des données). Il définit l'arrangement des informations au sein de la base de données.
Niveau interne (ou physique): Il définit la façon selon laquelle sont stockées les données et les
méthodes pour y accéder
31
Exemples de SGBD
Interbase
Microsoft SQL server
Microsoft Access
Microsoft FoxPro
DB2-IBM
Oracle
Sybase
MySQL
PostgreSQL
32
….
CHAPITRE 2:
CONCEPTION D’UN SYSTÈME D’INFORMATION
(MÉTHODOLOGIE MERISE)
33
NOTION DE SYSTÈME
Définition:
Un système est un tout constitué d’éléments unis par des relations, ces éléments et ces
relations étant munis de propriétés.
34
NOTION DE SYSTÈME
Exemple :
Système :
Entreprise
Éléments :
Employés, services, articles, entrepôt....
Propriétés des éléments :
Nom, matricule d’employé…
Référence d’article, Nom_d’article…
Relations :
Un employé est rattaché à un service
Un article est stocké dans un entrepôt
Propriétés des relations :
Date d’entrée dans le service
Quantité stockée
35
NOTION DE SYSTÈME D’INFORMATION
Définition:
38
NOTION DE SYSTÈME D’INFORMATION
SI opérant
Il prend en charge la gestion courante de l’entreprise :
gestion du personnel
gestion de la production
gestion des stocks
facturation
Comptabilité
SI de pilotage
Il prend en charge le pilotage et le traitement de gestion par exception :
états statistiques
historique
décisions
plans à long terme
39
Cycles de conception et de développement de SI
Modèle en cascade
Modèle en V
Modèle en spirale
Modèle tridimensionnel
40
MODÈLE EN CASCADE
Principes :
Modèle utilisé pour la conception et le développement de la première génération
d’applications informatiques : années 60 et début des années 70.
Cinq étapes:
41
MODÈLE EN V
Principes :
C’est une variante du modèle en cascade.
Le système est décomposé en sous-systèmes permettant la conception des systèmes
complexes.
Sept étapes:
42
MODÈLE EN SPIRALE
Principes :
Les étapes :
Pour chaque sous-ensemble, jusqu'à satisfaction des utilisateurs :
Définition des besoins, Conception, Implémentation, Test, Validation.
44
MODÈLE TRIDIMENSIONNEL
Principes :
C’est le modèle introduit par la méthode MERISE (Méthode d’Etude et de Réalisation
Informatique pour les Systèmes d’Entreprise).
Le développement du système d’information se fait suivant trois axes appelés cycles :
Cycle de vie : décrit les différentes étapes correspondant au cycle de vie du système
d’information.
Cycle de décision : décrit le cycle de développement correspondant au cycle de vie du
projet.
Cycle d’abstraction : comprend les niveaux de description du système d’information.
45
MODÈLE TRIDIMENSIONNEL
Le cycle de vie :
Correspond à la vie du système d’information, depuis sa conception jusqu'à l’exploitation en
passant par sa naissance, sa maturité et sa maintenance.
Cycle de décision
Correspond aux choix qui doivent être faits durant le cycle de vie du système d’information.
A travers ce cycle, l’organisation s’assure que le système correspond aux objectifs.
Le cycle d’abstraction :
Correspond aux différents niveaux permettant la description et la spécification du système
d’information. 46
MÉTHODOLOGIE MERISE
Apparue en 1979.
Basée sur une séparation nette entre les données et les traitements.
47
MÉTHODOLOGIE MERISE
49
MODÉLISATION D'UNE BASE DE DONNÉES AU
NIVEAU CONCEPTUEL
50
LES RÈGLES DE GESTION
Exemple d'un développeur qui doit informatiser le SI d'une bibliothèque. On lui fixe les règles de
gestion suivantes :
Pour chaque livre, on doit connaître le titre, l'année de parution, un résumé et le type (roman,
poésie, science-fiction…) ;
Un livre peut être rédigé par un ou plusieurs auteurs dont on connaît le nom, le prénom, la
date de naissance et le pays d'origine ;
Chaque exemplaire d'un livre est identifié par une référence composée de lettres et de chiffres
et ne peut être paru que dans une et une seule édition ;
Un inscrit est identifié par un numéro et on doit mémoriser son nom, prénom, adresse,
téléphone et adresse e-mail ;
Un inscrit peut faire zéro, un ou plusieurs emprunts qui concernent chacun un et un seul
exemplaire. Pour chaque emprunt, on connaît la date et le délai accordé (en nombre de jours).
Ces règles vous sont parfois données, mais vous pouvez être amené à les établir
51
LE DICTIONNAIRE DES DONNÉES
Le dictionnaire des données est un document qui regroupe toutes les données que vous
aurez à conserver dans votre base (et qui figureront donc dans le MCD).
Pour chaque donnée, il indique :
Nom de l’attribut: il s'agit d'un libellé désignant une donnée (par exemple
«titre_l» pour le titre d'un livre) ;
la désignation : il s'agit d'une mention décrivant ce à quoi la donnée correspond
(par exemple «titre du livre») ;
le type de donnée : A ou Alphabétique, N ou Numérique, AN ou Alphanumérique,
Date, Booléen;
la taille : ile s'exprime en nombre de caractères ou de chiffres.
et parfois des remarques ou observations complémentaires
52
LE DICTIONNAIRE DES DONNÉES
Exemple :
Attribut Désignation Type Taille Remarque
Identifiant numérique d'un
id_i N
inscrit
nom_i Nom d'un inscrit A 30
prenom_i Prénom d'un inscrit A 30
rue_i Rue où habite un inscrit AN 50
ville_i Ville où habite un inscrit A 50
cp_i Code postal d'un inscrit AN 5
Numéro de téléphone fixe
tel_i AN 15
d'un inscrit
Numéro de téléphone
tel_port_i AN 15
portable d'un inscrit
email_i Adresse e-mail d'un inscrit AN 100
Date de naissance d'un
date_naissance_i Date 10 Au format AAAA-JJ-MM
inscrit
53
LES DÉPENDANCES FONCTIONNELLES
54
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
L’entité (l'objet)
l'association
55
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Entité
Une entité est un objet autonome (concret ou abstrait) pourvu d’une existence propre
ayant une signification dans l'univers.
Exemple:
Gestion Banque : Client, Compte Bancaire,…
Gestion Scolaire : Etudiant, Professeur, …
Représentation graphique :
56
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Association
Une association (ou relation) est perçue dans le réel entre des individus
Une association définit une relation entre une ou plusieurs entités
Exemple :
Un client possède un compte bancaire
Représentation graphique :
57
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Attribut (propriété)
Une donnée élémentaire qui caractérise une entité ou une association.
Exemple :
L'entité Client est caractérisée par :
N°Client
Nom_Client
Adresse_Client
L'entité Compte_Bancaire est caractérisée par :
N°Compte
Nom_Banque
Solde
La relation Possède peut être caractérisée par :
Date_Ouverture 58
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Les Occurrences
Occurrence d'un attribut
Ensemble des valeurs que peut prendre un attribut.
Exemple :
Alami, Rmaily et Bennani sont des occurrences de la l’attribut
Nom_Client.
Occurrence d’une entité
Un ensemble d'occurrences de chacune des attributs de l’entité.
Exemple :
L'ensemble (A1200-78, Alami, Casa) constitue une occurrence de
l'individu Client.
59
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Exemple :
N°Client est l'identifiant de l'entité Client, car deux clients ne peuvent pas
avoir le même numéro.
60
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Exemple d’entité :
Exemple d’association :
Nom de l’association
Propriété
62
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Exercice:
Soient les règles de gestions suivantes :
Un client peut passer plusieurs commandes,
Une commande est passée par un et un seul client.
Une commande se compose de plusieurs produits
Un produit peut être livré par plusieurs fournisseurs.
63
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Correction:
Client Commande
Passer
Composer
Fournisseur Produit
Livrer
64
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
65
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Encadré par
Encadre
66
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Association binaire
67
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Association ternaire
68
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Remarque:
Plusieurs associations peuvent exister entre deux entités
Exemple:
69
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Cardinalités
X : cardinalité minimale
Y : cardinalité maximale
70
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Exemple :
Un client possède au moins un (1) compte bancaire, comme il peut en posséder plusieurs
(N). D'où les cardinalités (1, N).
Un compte bancaire appartient à un client et un seul, d'où les cardinalités (1, 1).
71
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
Cardinalités
(0,1) : une occurrence de l'entité ne participe jamais plus d'une fois à l’association
(1,1) : une occurrence de l'entité participe toujours une et une seule fois à
l’association
(1, N) : une occurrence de l'entité participe toujours au moins une fois à l’association
(0, N) : une occurrence de l'entité peut participer plusieurs fois à l’association
72
LE MODÈLE CONCEPTUEL DE DONNÉES (MCD)
73
ETUDE DE CAS : MODÉLISATION D’UN ZOO
Les entités :
Animal : nom, sexe, date_naissance, date_d’arrivée, remarque, idAnimal
Espèce : nom_scientifique, population
Nourriture : nom_aliment
Régions géographique : libellé_Zone (Afrique centrale, )
Associations
Une espèce vit dans plusieurs régions géographiques avec un effectif estimatif.
Un animal mange la nourriture avec une quantité.
74
ETUDE DE CAS : MODÉLISATION D’UN ZOO
Animal
Espèce
idAnimal
Nom 1,1 Appartenir 1,n nom scientifique
Sexe population
Date_naissance
Date_d’arrivée
Remarque
1,n
1,n
Vivre
Manger
Effectif
Quantité
1,n 1,n
Nourriture Régions
Nom_aliment Libellé_Zone
75
ETUDE DE CAS : GESTION DE COMMANDES
Spécifications:
Les clients d’un magasin sont caractérisés par un numéro de client, leur nom, prénom,
date de naissance, rue, code postal et ville.
Ils font des commandes à une date donnée.
Les commandes contiennent des produits avec des quantités.
Les produits sont caractérisés par leur numéro de produit, leur désignation et leur prix
unitaire.
Chaque produit est fourni par un fournisseur unique (mais un fournisseur peut fournir
plusieurs produits).
Les fournisseurs sont caractérisés par un numéro de fournisseur et leur raison sociale.
76
ETUDE DE CAS : GESTION DE COMMANDES
77
VÉRIFICATION ET NORMALISATION
La vérification
On dit qu’un modèle conceptuel est vérifié s’il répond aux conditions suivantes :
Touts les attributs non calculés sont présents dans une entité ou une relation dans le
cas du modèle de MERISE
Aucun attribut n’est redondant
Toutes les entités ont un identifiant
Tous les attributs sont élémentaires (non décomposable ou se traitent comme un tout,
exemple l’attribut adresse peut-être décomposable)
78
VÉRIFICATION ET NORMALISATION
La facilité de mise à jour Lors de la normalisation d’un modèle de données (peu importe
le niveau de modélisation, de conceptualisation ou de représentation) nous devons avoir
au mois la 3eme forme normale.
79
VÉRIFICATION ET NORMALISATION
80
VÉRIFICATION ET NORMALISATION
commande
Article
0,n Commander 1,n
CodeA CodeC
CodeA, CodeC
81
VÉRIFICATION ET NORMALISATION
82
VÉRIFICATION ET NORMALISATION
FNBC - Forme normale de Boyce-Codd
Une relation est en FNBC si :
Elle est en 3FN;
Seules les dépendances fonctionnelles sont du type clé attribut non-clé.
Si un attribut non-clé permet de déterminé un attribut clé la relation n’est pas en FNBC.
La projection et les jointures sont couteuses pour le système, ainsi une trop forte
normalisation diminue fortement les performances.
84
CHAPITRE 3:
LE MODÈLE RELATIONNEL:
MODÈLE LOGIQUE DES DONNÉES (MLD)
85
LE MODÈLE RELATIONNEL:
MODÈLE LOGIQUE DES DONNÉES (MLD)
Le plus utilise est le modèle relationnel associe aux bases de données relationnelles
(Oracle, Informix, SQLserver,..., Access, mySQL, postgreSQL...)
86
LE MODÈLE RELATIONNEL:
MODÈLE LOGIQUE DES DONNÉES (MLD)
87
LE MODÈLE RELATIONNEL:
MODÈLE LOGIQUE DES DONNÉES (MLD)
Exemples
Clients (Code, Nom, …)
Détails_Cdes (NBC, Ref, QtéC)
88
LE MODÈLE RELATIONNEL:
MODÈLE LOGIQUE DES DONNÉES (MLD)
Clé étrangère
Un simple champ qui joue le rôle de clé primaire dans une autre table
Permet d’établir des liaisons entre tables (utilisée dans les jointures)
Exemple
Clients (Code, Nom, …)
Commandes (NBC, DateC, #Code)
89
PASSAGE DU MCD AU MLD RELATIONNEL
Règle 1
Chaque entité du MCD se transforme en une table du MLD
Les attributs deviennent des champs;
L’identifiant devient la clé primaire.
Exemple:
90
PASSAGE DU MCD AU MLD RELATIONNEL
91
PASSAGE DU MCD AU MLD RELATIONNEL
92
PASSAGE DU MCD AU MLD RELATIONNEL
93
PASSAGE DU MCD AU MLD RELATIONNEL
Transformez le MCD suivant en un MLD en respectant toutes les règles du passage MCD au MLD.
97
Solution
98
EXERCICE
Transformez le MCD suivant, qui représente «la gestion d'une école» en un MLD en respectant
toutes les règles du passage MCD au MLD.
99
SOLUTION
100
MODÈLE PHYSIQUE DES DONNÉES (MPD)
Le Modèle Physique Des Données (MPD) précise notamment le stockage de chaque donnée
(champs ou attribut) à travers son type et sa taille (en octets ou en bits).
Les types de données peuvent varier selon les systèmes de gestion de bases de données.
Champs numériques
101
MODÈLE PHYSIQUE DES DONNÉES (MPD)
102
PASSAGE VERS MODÈLE PHYSIQUE DES DONNÉES
(MPD)
MCD
CLIENT COMMANDE
code_client 1,n PASSER 1,1 numero_commande
Nom Date
Prénom État
Adresse montant_total
MLD
MCD
MLD
COMMANDE (numero_commande, date, etat, montant_total)
ARTICLE (référence_article, designation, prix_unitaire_de_vente)
CONCERNER (#numéro_commande, #référence_article, quantité)
MPD CONCERNER_ COMMANDE: 1,n
COMMANDE CONCERNER ARTICLE
numero_commande int #numéro_commande int référence_article varchar (30)
Date date #référence_article varchar (30) Designation varchar (30)
État varchar Quantité int prix_unitaire_de_vente double
(30)
montant_total double 104 CONCERNER_ ARTICLE: 0,n
CHAPITRE 4:
LE LANGAGE SQL
(STRUCTURED QUERY LANGUAGE)
105
INTRODUCTION
106
LANGAGE SQL
SQL est un langage de manipulation de données qui est devenu un standard dans le
monde des bases de données.
107
LANGAGE DE DÉFINITION DE DONNÉES
(LDD)
108
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Il permet également de définir le type des données (nombre, chaîne de caractères, date,
booléen…) et d'ajouter des contraintes de valeur sur les données.
109
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
La création d’une base de données en SQL est possible en ligne de commande. Même
si les systèmes de gestion de base de données (SGBD) sont souvent utilisés pour créer
une base, il convient de connaître la commande à utiliser, qui est très simple.
Pour créer une base de données qui sera appelé « ma_base » il suffit d’utiliser la
requête suivante :
La création consiste à définir le nom de ces colonnes, leur format (type), la valeur par
défaut à la création de la ligne (DEFAULT) et les règles de gestion s'appliquant à la
colonne (CONSTRAINT).
La commande de création de table la plus simple ne comportera que le nom et le type de
chaque colonne de la table. A la création, la table sera vide, mais un certain espace lui
sera alloué.
La syntaxe est la suivante : CREATE TABLE nom_table (
nom_col1 type,
nom_col2 type,
... );
111
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Exemple :
CREATE TABLE Etudiant
(
CNE INT,
nom VARCHAR(20),
prenom VARCHAR(20),
date_naissance DATE,
email VARCHAR(25),
ville VARCHAR(25),
pays VARCHAR(25)
);
112
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Contraintes d’intégrité
Lors de la création de la table, il faut spécifier les contraintes que doit respecter le contenu de
la table, pour assurer l’intégrité de la base:
113
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Contraintes d’intégrité
114
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
115
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Exemple : UNIQUE
117
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Exemple : DEFAULT
Exemple : CHECK
Exemple : CONSTRAINT
120
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Exemple 2 : CONSTRAINT
Supprimer une table revient à éliminer sa structure et toutes les données qu'elle
contient.
122
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Attention : il faut utiliser cette commande avec attention car une fois supprimée, les
données sont perdues. Avant de l’utiliser sur une base importante il peut être judicieux
d’effectuer un backup (une sauvegarde) pour éviter les mauvaises surprises.
Intérêts Il arrive qu’une table soit créé temporairement pour stocker des données qui
n’ont pas vocation à être ré-utiliser. La suppression d’une table non utilisée est
avantageux sur plusieurs aspects :
Libérer de la mémoire et alléger le poids des backups
Éviter des erreurs dans le futur si une table porte un nom similaire ou qui porte à
123
confusion
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Cette instruction diffère de la commande DROP qui à pour but de supprimer les
données ainsi que la table qui les contient.
124
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Exemple:
Pour ajouter une colonne qui correspond à une rue sur une table utilisateur, il est possible
d’utiliser la requête suivante:
Exemple:
127
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
Ou
128
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
130
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
131
LANGAGE DE DÉFINITION DE DONNÉES (LDD)
132
LANGAGE DE MANIPULATION DE DONNÉES
(LMD)
133
134
LANGAGE DE MANIPULATION DE DONNÉES (LMD)
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.
134
135
Insérer une ligne en indiquant les informations pour chaque colonne existante (en respectant
l’ordre). La syntaxe est la suivante :
Il est possible d’insérer une ligne renseignant seulement une partie des colonnes que vous
souhaiter . Cette deuxième solution est très similaire, excepté qu’il faut indiquer le nom des
colonnes avant « VALUES ». La syntaxe est la suivante :
INSERT INTO table (nom_colonne_1, nom_colonne_2, ...) VALUES ('valeur 1', 'valeur 2', ...);
135
136
Il est possible d’ajouter plusieurs lignes à une table avec une seule requête. Pour ce faire, il
convient d’utiliser la syntaxe suivante :
INSERT INTO client (nom, prenom, ville, age) VALUES ('Alami', 'Saad', 'Casablanca', 24),
('Sbaii', 'Bader', 'Kénitra', 36), ('Rahimi', 'Ali', 'Mohammedia', 27);
137
LANGAGE DE MANIPULATION DE DONNÉES (LMD)
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.
Pour spécifier en une seule fois plusieurs modifications, il faut séparer les attributions de valeur
par des virgules. Ainsi la syntaxe deviendrait la suivante :
UPDATE table SET colonne_1 = 'valeur 1', colonne_2 = 'valeur 2', colonne_3 = 'valeur 3'
WHERE condition;
138
LANGAGE DE MANIPULATION DE DONNÉES (LMD)
Exemple
Exemple
UPDATE client SET rue = 'Fars', ville = 'Salé', code_postal = '14500' WHERE id = 2;
140
LANGAGE DE MANIPULATION DE DONNÉES (LMD)
141
142
• En utilisant cette commande associé à WHERE il est possible de sélectionner les lignes
concernées qui seront supprimées.
• Attention : s’il n’y a pas de condition WHERE alors toutes les lignes seront supprimées et
la table sera alors vide
142
143
Exemple
Imaginons une table « Etudiant » qui contient des informations sur les étudiants d’un
établissement.
id nom prenom date_inscription
1 Samadi Said 2022-02-13
2 Fellah Amina 2022-04-03
3 Alami Kaouter 2022-04-12
4 Sabbar Latifa 2022-06-24
5 Raiss Nabil 2022-07-02
143
144
Exemple
144
145
Si l’ont souhaite supprimer les utilisateurs qui se sont inscrit avant le 10/04/2022, il va
falloir effectuer la requête suivante :
145
146
Pour supprimer toutes les lignes d’une table il convient d’utiliser la commande DELETE
sans utiliser de clause conditionnelle.
146
LANGAGE D’INTERROGATION DE DONNÉES SQL
(LID)
147
148
L’utilisation la plus courante de SQL consiste à lire des données issues de la base de
données: interrogation de la base de données.
Cela s’effectue grâce à la commande SELECT, qui retourne des enregistrements dans un
tableau de résultat.
148
149
149
150
Exemple
Imaginons une table appelée « client » qui contient des informations sur les clients d’une entreprise.
identifiant prenom nom ville
1 Ali Allaoui Casa
2 Ahmed Alami Fes
3 Jawad Lotfi Tanger
4 Ute Dubois Rabat
5 khadija Mandel Dakhla
On veut avoir la liste de toutes les villes des clients, il suffit d’effectuer la requête SQL suivante :
150
151
Exemple
151
152
Avec la même table client il est possible de lire plusieurs colonnes à la fois. Il suffit tout
simplement de séparer les noms des champs souhaités par une virgule.
Pour obtenir les prénoms et les noms des clients il faut alors faire la requête suivante:
152
153
prenom nom
Ali Allaoui
Ahmed Alami
Jawad Lotfi
Ute Dubois
khadija Mandel
153
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Il est possible de retourner automatiquement toutes les colonnes d’un tableau sans avoir à
connaître le nom de toutes les colonnes. Au lieu de lister toutes les colonnes, il faut
simplement utiliser le caractère « * » (étoile). Il s’utilise de la manière suivante:
154
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
155
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Syntaxe
La commande WHERE s’utilise en complément à une requête utilisant SELECT.
La façon la plus simple de l’utiliser est la suivante:
156
157
Exemple
Imaginons une table appelée « client » qui contient des informations sur les clients d’une entreprise.
identifiant prenom nom ville
1 Ali Allaoui Dakhla
2 Ahmed Alami Fes
3 Jawad Lotfi Tanger
4 Ute Dubois Rabat
5 khadija Mandel Dakhla
Pour obtenir seulement la liste des clients qui habitent à Dakhla, il faut effectuer la requête
suivante:
SELECT * FROM client WHERE ville = 'Dakhla';
157
158
Exemple
Le résultat est le suivant:
identifiant prenom nom ville
1 Ali Allaoui Dakhla
5 khadija Mandel Dakhla
158
159
BETWEEN Valeur comprise dans un intervalle donnée (utile pour les nombres ou dates)
159
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Filtrer uniquement les produits informatiques qui sont presque en rupture de stock (moins de 20
produits disponibles) il faut exécuter la requête suivante :
SELECT * FROM produit WHERE categorie = 'informatique' AND stock < 20;
161
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
162
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
C’est une méthode simple pour vérifier si une colonne est égale à une valeur OU une autre
valeur OU une autre valeur et ainsi de suite, sans avoir à utiliser de multiple fois
l’opérateur OR.
Syntaxe
Pour chercher toutes les lignes où la colonne « nom_colonne » est égale à ‘valeur 1’ OU
‘valeur 2’ OU ‘valeur 3’, il est possible d’utiliser la syntaxe suivante:
On souhaite obtenir les enregistrements des adresses de Paris ou de Graimbouville, il est possible
d’utiliser la requête suivante:
SELECT * FROM adresse WHERE addr_ville = 'paris' OR addr_ville = 'Graimbouville' ;
165
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
166
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL 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.
Syntaxe
⌘ SQL BETWEEN
Exemple: filtrer entre 2 dates
Imaginons une table « utilisateur » qui contient les membres d’une application en ligne :
id nom date_inscription
1 Maurice 2022-01-02
2 Simon 2022-01-05
3 Chloé 2022-02-14
4 Marie 2022-02-15
5 Clémentine 2022-02-26
On souhaite obtenir les membres qui se sont inscrit entre le 13 février 2022 et le 20 février 2022,
il est possible d’effectuer la requête suivante:
⌘ SQL BETWEEN
Exemple: filtrer entre 2 dates
SELECT * FROM utilisateur
WHERE date_inscription BETWEEN '2022-02-13' AND '2022-02-20';
id nom date_inscription
3 Chloé 2022-02-14
4 Marie 2022-02-15
169
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL BETWEEN
Exemple: filtrer entre 2 entiers
On souhaite obtenir tous les résultats dont l’identifiant n’est pas situé entre 4 et 10, il
faudra alors utiliser la requête suivante:
id nom date_inscription
1 Maurice 2022-01-02
2 Simon 2022-01-05
3 Chloé 2022-02-14
170
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL LIKE
L’opérateur LIKE est utilisé dans la clause WHERE des requêtes SQL.
Ce mot-clé permet d’effectuer une recherche sur un modèle particulier. Il est par
exemple possible de rechercher les enregistrements dont la valeur d’une colonne
commence par telle ou telle lettre. Les modèles de recherches sont multiples.
Syntaxe
La syntaxe à utiliser pour utiliser l’opérateur LIKE est la suivante :
SELECT * FROM table WHERE colonne LIKE modele;
171
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL LIKE
Le «modèle» ressemble très généralement à l’un des exemples suivants:
LIKE ‘*a’ : le caractère « * » ou « % » est un caractère joker qui remplace tous les autres caractères.
Ainsi, ce modèle permet de rechercher toutes les chaines de caractère qui se termine par un « a ».
LIKE ‘a*’ : ce modèle permet de rechercher toutes les lignes de « colonne » qui commence par un
« a ».
LIKE ‘*a*’ : ce modèle est utilisé pour rechercher tous les enregistrement qui utilisent le caractère
« a ».
LIKE ‘pa*on’ : ce modèle permet de rechercher les chaines qui commence par « pa » et qui se
terminent par « on », comme « pantalon » ou « pardon ».
LIKE ‘a_c’ : peu utilisé, le caractère « _ » (underscore) peut être remplacé par n’importe quel
caractère, mais un seul caractère uniquement (alors que le symbole pourcentage « % » peut être
remplacé par un nombre incalculable de caractères . Ainsi, ce modèle permet de retourner les lignes
« aac », « abc » ou même « azc ».
172
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL LIKE
Exemple:
Imaginons une table « client » qui contient les enregistrement d’utilisateurs :
id nom ville
1 Léon Lyon
2 Odette Nice
3 Vivien Nantes
4 Etienne Lille
On souhaite obtenir uniquement les clients des villes qui commencent par un « N », il
est possible d’utiliser la requête suivante:
SELECT * FROM client WHERE ville LIKE 'N*';
173
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL LIKE
Exemple:
id nom ville
2 Odette Nice
3 Vivien Nantes
174
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SELECT-DISTINCT
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.
175
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SELECT-DISTINCT
Exemple:
Prenons le cas concret d’une table « client » qui contient des noms et prénoms:
identifiant prenom nom
1 Pierre Dupond
2 Sabrina Bernard
3 David Durand
4 Pierre Leroy
5 Marie Leroy
En utilisant seulement SELECT tous les prénoms sont retournés, or la table contient
plusieurs fois le même prénom (ex:Pierre).
176
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SELECT-DISTINCT
Exemple:
Pour sélectionner uniquement les prénoms uniques il faut utiliser la requête suivante:
177
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Exercice:
⌘ Exercice:
180
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL ORDER BY
Exemple:
Pour l’ensemble de nos exemples, nous allons prendre une base « utilisateur » de test,
qui contient les données suivantes:
id nom prenom date_inscription tarif_total
1 Durand Maurice 2022-02-05 145
2 Dupond Fabrice 2022-02-07 65
3 Durand Fabienne 2022-02-13 90
4 Dubois Chloé 2022-02-16 98
5 Dubois Simon 2022-02-23 27
⌘ SQL ORDER BY
Exemple:
SELECT * FROM utilsateur
ORDER BY nom;
182
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL ORDER BY
Exemple:
En utilisant deux méthodes de tri, il est possible de retourner les utilisateurs par ordre
alphabétique ET pour ceux qui ont le même nom de famille, les trier par ordre
décroissant d’inscription.
SELECT * FROM utilisateur
ORDER BY nom, date_inscription DESC;
id nom prenom date_inscription tarif_total
5 Dubois Simon 2022-02-23 27
4 Dubois Chloé 2022-02-16 98
2 Dupond Fabrice 2022-02-07 65
3 Durand Fabienne 2022-02-13 90
1 Durand Maurice 2022-02-05 145
183
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL AS (alias)
Dans le langage SQL il est possible d’utiliser des alias pour renommer
temporairement une colonne ou une table dans une requête. Cette astuce est
particulièrement utile pour faciliter la lecture des requêtes.
Intérêts et utilités
Alias sur une colonne
o Permet de renommer le nom d’une colonne dans les résultats d’une requête
SQL. C’est pratique pour avoir un nom facilement identifiable dans une
application qui doit ensuite exploiter les résultats d’une recherche.
Alias sur une table
o Permet d’attribuer un autre nom à une table dans une requête SQL. Cela peut
aider à avoir des noms plus court, plus simple et plus facilement
compréhensible. Ceci est particulièrement vrai lorsqu’il y a des jointures.
184
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL AS (alias)
Alias sur une colonne
Syntaxe
Pour renommer une colonne de colonne1 à c1:
185
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL AS (alias)
Exemple: id nom prenom date_inscription tarif_total
1 Durand Maurice 2022-02-05 145
2 Dupond Fabrice 2022-02-07 65
3 Durand Fabienne 2022-02-13 90
4 Dubois Chloé 2022-02-16 98
5 Dubois Simon 2022-02-23 27
SELECT id, nom, prenom, date_inscription AS date, tarif_total AS tarif
FROM utilisateur;
id nom prenom date tarif
1 Durand Maurice 2022-02-05 145
2 Dupond Fabrice 2022-02-07 65
3 Durand Fabienne 2022-02-13 90
4 Dubois Chloé 2022-02-16 98
5 Dubois Simon 2022-02-23 27 186
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ SQL AS (alias)
Alias sur une table
Syntaxe
La syntaxe pour renommer une table dans une requête est la suivante:
SELECT * FROM nom_table AS t1;
187
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Extractions de données de plusieurs tables (Jointures)
Soit le MLD suivant :
SELECT Etudiant.Nom
FROM Etudiant, Module, Examen
WHERE Etudiant. CNE = Examen . CNE
AND Module. Id_Mod = Examen . Id_Mod
AND Examen. Note =19
AND Module. Libellé = ‘Base de données’;
189
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
191
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Nom Ville
Tounsi casablanca
Kalami fes
Alami casablanca
192
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
193
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
194
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
195
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Exemple :
Le retour de cette requête serait comme suit :
197
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
C’est des fonctions prédéfinies de SQL qui permettent de réaliser des tâches bien
précises qui ont généralement comme objectif d’afficher un résultat de calcul ou de
comparaison sur plusieurs données.
198
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Cette requête SQL permet de calculer la somme des valeurs contenu dans la colonne
« nom_colonne ».
A savoir : Il est possible de filtrer les enregistrements avec la
commande WHERE pour ne calculer la somme que des éléments souhaités.
199
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
prix_total
Résultat :
39
Ce résultat démontre bien que tous les achats de la facture n°1 représente un
montant de 39 (somme de 17 + 4 + 3 + 15).
201
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Syntaxe
La syntaxe de la requête SQL pour retourner la valeur maximum de la colonne
« nom_colonne » est la suivante:
202
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Syntaxe
Pour obtenir la plus petite valeur de la colonne « nom_colonne » il est possible
d’utiliser la requête SQL suivante:
204
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Connaître le nombre de lignes dans une table est très pratique dans de
nombreux cas, par exemple pour savoir combien d’utilisateurs sont présents
dans une table
Syntaxe
Pour connaître le nombre de lignes totales dans une table, il suffit d’effectuer la
requête SQL suivante :
SELECT COUNT(*) FROM table;
206
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
207
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
208
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
1 Allaoui 3 Casa
2 Alami 0 Fes
3 Lotfi 1 Tanger
4 Mandel 7 Casa
209
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
nombre_total
4
210
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
COUNT(*)
211
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
3
212
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
213
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Moyenne_classe
15,5
215
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Regroupement : GROUP BY
Soit le MLD suivant :
216
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Regroupement : GROUP BY
La clause GROUP BY est utilisée en SQL pour grouper plusieurs résultats et utiliser
une fonction d’agrégation sur un groupe de résultats.
217
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Regroupement : GROUP BY
Exemple
Soit la table « Achat » décrite comme suit :
id client tarif date
2 Simon 47 2022-01-27
3 Marie 18 2022-02-05
4 Marie 20 2022-02-14
Pour obtenir le coût total payé par chaque client, il suffit de regrouper selon les clients.
218
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Regroupement : GROUP BY
Exemple
La requête serait, donc, comme suit :
SELECT client, SUM(tarif) FROM Achat
GROUP BY client;
La fonction SUM() permet d’additionner la valeur de chaque tarif pour un même
client.
client SUM(tarif)
Le résultat sera donc le suivant :
Pierre 262
Simon 47
Marie 38
219
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Regroupement : GROUP BY
Exemple
Pour connaître le montant moyen payé par chaque client, on peux utiliser une requête qui va
utiliser :
220
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Regroupement : GROUP BY
Exemple
Le retour de cette requête serait comme suit :
client AVG(tarif)
Pierre 131
Simon 47
Marie 19
221
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Condition : 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().
222
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Condition : HAVING
• Soit la table « Achat » décrite comme suit :
id client tarif date
2 Simon 47 2022-01-27
3 Marie 18 2022-02-05
4 Marie 20 2022-02-14
223
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Condition : HAVING
Si on souhaite récupérer la liste des clients qui ont commandé pour un tarif total
supérieur à 40, alors il est possible d’utiliser la requête suivante :
Pierre 262
Simon 47
224
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
⌘ Condition : HAVING
Si on souhaite récupérer la liste des clients qui ont commandé pour un tarif total
supérieur à 40, alors il est possible d’utiliser la requête suivante :
Pierre 262
Simon 47
225
SOUS-REQUÊTES (OU REQUÊTES IMBRIQUÉES)
226
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
227
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Une requête imbriquée est souvent utilisée au sein d'une clause WHERE ou
de HAVING pour remplacer une ou plusieurs constantes.
228
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Sous-requête :
231
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Sous-requêtes monolignes
Soit la table Employé décrite comme suit :
id nom prenom DEP_ID Id_Poste Salaire
233
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Sous-requêtes monolignes
Le retour de cette requête serait comme suit :
235
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Exemple :
Pour récupérer le nom, l’Id_Poste et le salaire des personnes qui touchent le salaire minimum, la
requête serait :
237
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
HAVING et sous-requêtes
Le retour de cette requête serait comme suit :
DEP_ID Min(Salaire)
50 6000
42 11000
60 15000
239
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Sous-requêtes multilignes
Ce sont des requêtes qui retournent plusieurs lignes et qui utilisent des opérateurs de
comparaison multilignes.
Opérateur Description
240
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
241
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
243
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
245
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
Pour récupérer l’Id, le nom, l’Id Poste et le salaire des employés qui ont un Id Poste différent
de 140 et un salaire égal à un des salaires des employés ayant l’Id Poste 140, la requête serait :
246
LANGAGE D’INTERROGATION DE DONNÉES SQL (LID)
247
Système d’Information et Base de
Données