Cours BD Relationnelle CanadaCollege
Cours BD Relationnelle CanadaCollege
Cours BD Relationnelle CanadaCollege
NOVEMBRE 2019
(P A R D R . J U S T I N MOSKOLAI)
EXEMPLE INTRODUCTIF
2
CARACTÉRISTIQUES DE L’EXEMPLE
q Plusieurs problèmes
o difficulté de gestion
o incohérence de données
o problèmes de confidentialité/partage de données
o…
3
EXEMPLE INTRODUCTIF : GESTION SOUHAITÉE
CEFAD
Centre de
Scolarité
calcul
Canada
college
Service Adm.
comptable Générale
4
OBJECTIFS DU COURS
5
CONTENU DU COURS
q CM & TD
o Généralités sur les Bases de données (p.09)
o De l’analyse du monde réel aux modèles (p.30)
o L’approche relationnelle
(p.55)
o Le langage SQL (p.88)
q Outils TD/TP
o AnalyseSI
o Microsoft Access
o MySQL Workbench
6
RÉFÉRENCES BIBLIOGRAPHIQUES
q Ouvrages
o Date C.J., An Introduction to Database Systems, Addison Wesley
o Gardarin G., Bases de Données, Eyrolles, 1999
o Ullman J.D. et Widom J., A first Course in Database Systems, Prentice
Hall, 1997
q Ressources en ligne
o Administrez vos Bases de Données avec MySQL
(www.siteduzero.com)
o Formation Access
(lecompagnon.info/access)
o Tutoriel Access (en anglais) basé sur un exemple complet
(http://www.itu.dk/~slauesen/UID/AccessTutorial.pdf)
7
SOMMAIRE
SJP
SAINT JÉRÔME POLYTECHNIQUE
8
EXEMPLES
9
TERMINOLOGIES
q Définitions
o une Donnée constitue un fragment d’information quelconque
10
REMARQUES
11
COMPOSANTES/COUCHES D’UN SGBD
SGBD
externe
SGBD Terminaux
Programmes interne
d’application
Gestionnaire
Mémoire 2nd
de fichiers
12
RÔLE DE CHAQUE COUCHE
q Le Gestionnaire de fichiers
o gère les récipients des données
o fournit aux autres couches des mémoires secondaires adressables par
objets, capables d’effectuer des recherches sur ces objets
q Le SGBD interne
o gère les données stockées dans les fichiers
o gère l’assemblage de ces données en objets, le placement de ces objets
dans les fichiers, les liens entre objets
o gère les structures permettant d’accélérer l’accès aux aux données
q Le SGBD externe
o gère la mise en forme et la présentation des données aux applications et
aux utilisateurs (ces derniers expriment leurs demandes/requêtes à
l’aide de langages utilisant notamment des expressions logiques)
13
PRINCIPAUX TYPES DE SGBD
q Systèmes de fichiers (années 60)
o les BD sont développées sous forme de fichiers reliés par des pointeurs
o les fichiers contiennent des articles stockés stockés de manière chaînée
o ex.: IMS.1 (IBM) et IDS.1 (Honeywell) è programme APOLLO
14
MODÈLES HIÉRARCHIQUE ET RÉSEAU
15
UN EXEMPLE DE MODÈLE HIÉRARCHIQUE
- code
club - libellé
- matricule - code
- nom étudiant filière - libellé
- prénom
spécialisation - code
- libellé
q Problèmes liés à cette représentation
o pour accéder aux informations concernant un étudiant il faut passer
son club
o la suppression d’un club entraîne la suppression de tous les
étudiants, des filières et des spécialisations concernées
o difficulté de représenter le fait que les étudiants suivent une filière
donnée
16
UN EXEMPLE DE MODÈLE RÉSEAU
- code
club - libellé
- matricule - code
- nom étudiant filière - libellé
- prénom
spécialisation -- code
libellé
17
SYNTHÈSE SUR LA NOTION DE DONNÉES
q Les Données
o ensemble de fichiers reliés (par des pointeurs)
o interrogées et mises à jour par des programmes d’application, écrits par
les utilisateurs (ex. C), ou fournis avec le SGBD
o accessibles par un langage unifié (par ex. SQL)
q Représentation en BD
o les données modélisent les objets d’une partie du monde réel, ou les
associations entre ces objets
o les objets modélisés sont représentés par des articles (enregistrements)
de fichiers
o les associations entre objets correspondent à des liens entre articles
18
ENVIRONNEMENT D’UN SGBD
programme
… d’application …
(C)
(Source : Gardarin, 1999)
disques
19
ARCHITECTURE (ANSI, 78)
q Trois niveaux
o trois représentations/schémas équivalentes de la même donnée
o champs d’interventions des principaux acteurs
q Le niveau externe
o description d’une partie de la base de données (extraites ou calculées à partir de la
base physique)
o vision d’un programme ou d’un utilisateur è vue
q Le niveau conceptuel
o description du domaine considéré en terme de types d’objets ou de liens logiques
(contraintes) entre objets
o schéma indépendant de toute représentation en machine
20
EXEMPLE ILLUSTRATIF
q Niveaux externe
o la scolarité de Saint Jérôme : liste des étudiants (matricule, nom, prénom) et
programme des enseignements (code, intitulé)
o le centre de calcul : note des étudiants (matricule, nom, prénom, code,
année, note)
q Niveau conceptuel
o un étudiant est décrit par son matricule, son nom et son prénom, un EC est
décrit par son code et un intitulé
o le lien entre un étudiant et un EC est décrit par étudiant, EC ainsi que
l’année et la note associées
q Niveau interne/physique
o implémentation d’un premier fichier indexé sur le code :
chaque enregistrement contient le code, l’intitulé d’un EC
o implémentation d’un second fichier :
chaque enregistrement contient le matricule, le nom, le prénom (d’un
étudiant), suivis d’un « pointeur » sur chaque EC choisi, puis de l’année et la
note associées
• un index sur matricule permet d’accéder directement aux articles de ce fichier
• un index sur année permet d’accéder à l’année et aux EC suivis
21
SCOLARITE CENTRE DE CALCUL
… schéma …
externe liste_étudiants notes_étudiants
-matricule -matricule
-nom -nom
-prénom -prénom
-code
programme_ec -année
-code -note
-intitulé
fichier_étudiants fichier_EC
-matricule -code
-nom -intitulé
-prénom
-refEC
niveau -année
interne -note
SJP
22
SAINT JÉRÔME POLYTECHNIQUE
ARCHITECTURE FONCTIONNELLE
23
OBJECTIFS D’UN SGBD
24
SYNTHÈSE SUR LES SGBD
25
MÉTIERS AUTOUR DES SGBD
q Consultant/Analyste
o travail autour de l’analyse de l’univers du discours
q Concepteur de BD
o travail axé sur la modélisation
q Développeurs d’applications
o utilisation des BD pour des applications métier
26
EXERCICES
q Notions de base
o Quelles sont les différences majeures entre un fichier informatique et
une base de données ?
27
SOMMAIRE
SA IN T JÉ R ÔSJP
28
M E PO LY T E C H N IQ U E
ÉTAPES DE CONCEPTION D’UNE BD
q Implantation de la BD
o choix d’un SGBD
o création/interrogation
29
POURQUOI UNE DÉMARCHE D’ANALYSE
30
q ANALYSE DU MONDE RÉEL
q MODÉLISATION DES DONNÉES
q ASTUCES SUR CAS SPÉCIAUX
EC-TC-P313 SJP
P: OLYTECHNIQUE
BA S E S D E DO N N É E S - SJP (PA R R. HOUE NGOUNA - J. MOSKOLAI - M. TEKINZANG)
31
SAINT JÉRÔME
RÉALISATION D’UNE DÉMARCHE D’ANALYSE
32
QUELQUES PRÉCONISATIONS
q Méthodologie préconisée
o décrire l’activité globalement en termes simples :
« sujet-verbe-complément »
o indiquer les règles utilisées pour caractériser les liens entre objets
33
EXEMPLE : FONCTIONNEMENT D’UN HÔTEL
34
EXEMPLE DE L’HÔTEL (SUITE)
35
q ANALYSE DU MONDE RÉEL
q MODÉLISATION DES DONNÉES
q ASTUCES SUR CAS SPÉCIAUX
SJP
36
SAINT JÉRÔME POLYTECHNIQUE
LE MODÈLE ENTITÉ/ASSOCIATION
37
EXEMPLE DE MODÈLE E/A
client loue
IDclient dateDébut
nom nbJours
adresse chambre
numTéléphone numéro
nomPlace
réserve tarif
dateDébut
nbJours
38
REMARQUES
39
CARACTÉRISATION DES ASSOCIATIONS
q Définition
o les nombres par lesquels on caractérise une association s’appellent
cardinalités de l’association
40
MODÈLE COMPLET DE L’EXEMPLE
(1,n)
client loue ??
IDclient dateDébut (0,1)
nom (1,n) nbJours
adresse chambre
numTéléphone numéro
nomPlace
réserve (0,n) tarif
dateDébut
nbJours
41
q ANALYSE DU MONDE RÉEL
q MODÉLISATION DES DONNÉES
q ASTUCES SUR CAS SPÉCIAUX
SJP
42
SAINT JÉRÔME POLYTECHNIQUE
ÉVOLUTION D’UN MODÈLE
43
ILLUSTRATION DE LA RÉORGANISATION D’ENTITÉS
livre
lecteur
ISBN
titre emprunte NumLecteur
auteur nom
dateEmprunt
éditeur prenom
adresse
44
ouvrage
lecteur
Cote emprunte
ISBN NumLecteur
dateEmprunt nom
prenom
adresse
exemplaire de
livre
ISBN
titre
auteur
éditeur
SJP
45
SAINT JÉRÔME POLYTECHNIQUE
ouvrage lecteur
emprunte
NumLecteur
Cote dateEmprunt nom
prenom
adresse
livre
exemplaire de ISBN
titre
éditeur auteur
NumAuteur
nom
prenom
a écrit
SJP
46
SAINT JÉRÔME POLYTECHNIQUE
personne
ouvrage Numero
nom
Cote emprunte prenom
dateEmprunt
adresse
exemplaire de
a écrit
livre
ISBN
titre
éditeur
SJP
47
SAINT JÉRÔME POLYTECHNIQUE
ÉLIMINATION D’ASSOCIATIONS
stage convention
Code (1,1)
(1,1) Numero
sujet dateSignature
dateDebut possède
rémunération
48
FUSION D’ASSOCIATIONS
(1,1) évalue
stage rapport (0,n)
enseignant
Code note_r
(1,1)
sujet Code
dateDebut
évalue (0,n) nom
rémunération travail prénom
note_t
stage
enseignant
Code (1,1) (0,n)
sujet évalue Code
dateDebut type_eval nom
rémunération note_r prénom
49
SYNTHÈSE DE LA MODÉLISATION (E/A)
50
PASSAGE DU MODÈLE E/A AU RELATIONNEL
51
EXERCICES D’APPLICATION
Exercice1
La société « Pickup » aimerait informatiser la gestion de ses factures.
Un client identifié par un numéro, un nom et une adresse, passe des
commandes. Sur une commande peut apparaître plusieurs produits (référence
produit, désignation produit, prix du produit), mais chaque produit est toujours
commandé à l’unité. Une commande peut donner lieu à plusieurs factures.
Réaliser le MCD correspondant
Exercice2
Etablissez un MCD à partir de la liste des propriétés et des règles de gestion
suivantes:
• liste des propriétés : Num_Logement, Type, Surface, Nb_Pièces,
Num_Immeuble, Ad_Rue, Ad_Ville, Ad_CP, Num_Concierge, Nom_Concierge,
Prénom_Concierge.
• Règles de gestion :
RG1: Tout immeuble contient au moins un logement.
RG2 : Un immeuble ne dépend pas toujours d'un concierge. Par contre, un
concierge peut être responsable de plusieurs immeubles adjacents.
SA IN T JÉ R ÔSJP
52
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR DR. MOSKOLAI)
SOMMAIRE
Chapitre III :
Modèle Relationnel
• Présentation du Modèle
• Les éléments constitutifs
• Les règles de transformation
• Exercices d’application
SJP
53
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
INTRODUCTION
Dans ce modèle, les données sont représentées par des tables, sans
préjuger de la façon dont les informations sont stockées dans la
machine. Les tables constituent donc la structure logique du modèle
relationnel. Au niveau physique, le système est libre d’utiliser n’importe
quelle technique de stockage (fichiers séquentiels, indexage, adressage
dispersé, séries de pointeurs, compression, . . .) dès lors qu’il est
possible de relier ces structures à des tables au niveau logique. Les
tables ne représentent donc qu’une abstraction de l’enregistrement
physique des données en mémoire.
SA IN T JÉ R ÔSJP
54
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
I- PRÉSENTATION DU MODÈLE
SJP
55
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
II- ÉLÉMENTS CONSTITUTIFS DU MODÈLE LOGIQUE
Clé primaire : La clé primaire d’une relation est une de ses clés
candidates. Pour signaler la clé primaire, ses attributs sont généralement
soulignés.
Clé étrangère : Une clé étrangère dans une relation est formée d’un ou
plusieurs attributs qui constituent une clé primaire dans une autre relation
Schéma relationnel : Un schéma relationnel est constitué par
l’ensemble des schémas de relation.
SA IN T JÉ R ÔSJP
56
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
III- RÈGLES DE PASSAGE DU MODÈLE CONCEPTUEL AU
MODÈLE LOGIQUE
AUTEUR LIVRE
NOAUTEUR Ecrit
NOLIVRE
NOM # NOAUTEUR
NOM
SJP
57
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
RELATION BINAIRE AUX CARDINALITÉS (X,N) - (X,1)
Personne Voiture
NoPersonne Possède NoVoiture
(0,n) (1,1)
Nom Date_achât Marque
Adresse
PERSONNE VOITURE
NOPERSONNE NOVOITURE
NOM Possède # NOPERSONNE
ADRESSE MARQUE
DATE_ACHÂT
SA IN T JÉ R ÔSJP
58
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
RELATION BINAIRE AUX CARDINALITÉS (X,1) - (X,1)
CLIENT
CARTE_MEMBRE
NOCLIENT
NOM NOCARTE
PRÉNOM dispose
# OCLIENT
N
ADRESSE TYPE_ABONNEMENT
CODE_POSTAL DATE_CRÉATION
LOCALITÉ
SJP
59
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
RELATION BINAIRE (0,1)-(0,1)
SA IN T JÉ R ÔSJP
60
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
RELATION BINAIRE AUX CARDINALITÉS (X,N) - (X,N)
On crée une table supplémentaire ayant comme clé primaire une clé
composée des identifiants des 2 objets. Lorsque la relation contient elle-
même des propriétés, celles-ci deviennent attributs de la table
supplémentaire.
Exemple:
Commande Article
NoCommande Contenir Code_Article
1,n 0,n
Date Quantité Libellé
Prix_Unaire
COMMANDE LIGNE_COMMANDE
ARTICLE
NOCOMMANDE NOCOMMANDE
Code_Article
DATE CODE_ARTICLE
Libellé
QUANTITÉ
Prix_Unaire
SJP
61
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
RELATION TERNAIRE
Enseignant
NoEnseignant Matière
Enseigne
Nom 1,n 0,n Code_Matière
Prénom Libellé
Date_de_naissance
1,n
Classe
Nom_Classe
Cycle
ENSEIGNANT ENSEIGNE
NoEnseignant MATIÈRE
NOENSEIGNANT
NOM Code_Matière CODE_MATIÈRE
PRÉNOM Nom_Classe LIBELLÉ
DATE_DE_NAISSANCE
CLASSE
NOM_CLASSE
CYCLE
SA IN T JÉ R ÔSJP
62
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
Exercice 1 : Entreprise NANA
Transformez le MCD suivant, qui représente la facturation de la société «NANA»
en un MLD en respectant toutes les règles du passage MCD à MLD
Client
Article
NoClient Facture Porter
Obtenir NoArticle
Nom 1,1 NoFacture 1,n 0,n
Prénom
1,n Quantité Libellé
Date_Facture
Adresse Prix_Unitaire
Code_Postal
Localité
SJP
63
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
SOLUTION
CLIENT
FACTURE PORTER ARTICLE
NOCLIENT
NOM NOFACTURE NOFACTURE NOARTICLE
PRÉNOM # NOCLIENT NOARTICLE LIBELLÉ
ADRESSE PRIX_UNITAIRE
DATE_FACTURE QUANTITÉ
CODE_POSTAL
LOCALITÉ
SA IN T JÉ R ÔSJP
64
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
Exercice «Gestion d'école»
Transformez le MCD suivant, qui représente «la gestion d'une école» en un
MLD en respectant toutes les règles du passage MCD à MLD.
Elève
NoMatricule Classe
Fréquenter
Nom 1,n 1,n Nom_Classe
Année_scolaire Cycle
Prénom
Date_naissance
1,n
Matière Enseigner
Code_Matière 0,n
Libellé Année
0,n
Professeur
Code_Prof
Nom
prénom
SJP
65
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
ELÈVE FRÉQUENTER
CLASSE
NO_MATRICULE NOMATRICULE
NOM_CLASSE
NOM NOM_CLASSE
CYCLE
PRÉNOM ANNÉE_SCOLAIRE
DATE_NAISSANCE
MATIÈRE ENSEIGNER
Code_Matière NOM_CLASSE
Libellé CODE_PROF
CODE_MATIÈRE
ANNÉE
PROFESSEUR
CODE_PROF
NOM
PRÉNOM
SA IN T JÉ R ÔSJP
66
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
SOMMAIRE
Chapitre IV : Le
Langage SQL
• Présentation générale
• recherche dans une BD
• Définition et modification de schémas
• Mise à jour de données
SJP
67
SAINT JÉRÔME POLYTECHNIQUE INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)
BREF APERÇU DE SQL
q Bref historique
o langage créé par IBM en 1981,
o dérivé de SEQUEL, dérivé de SQUARE
q Structure du langage
o 3 familles fonctionnellement distinctes
o LDD (langage de définition de données)
• permet la description de la structure des données)
o LMD (langage de manipulation des données)
• permet de rechercher, modifier, mettre à jour, ajouter des données
o LCD (langage de contrôle des données)
• contient les primitives de gestion des transactions et des privilèges d’accès
aux données
68
NOTATIONS
q Dans la suite
o [a] signifie que l’élément a est optionnel
o {a b} signifie que les éléments a et b sont considérés comme un élément
unique
o {a | b} signifie un choix possible entre l’alternative a ou b
o < a > signifie que a est un paramètre qui doit être remplacé par une
valeur effective
o un exposant + signifie que l’élément qui précède peut être répété n fois
(n>0), chaque occurrence étant séparé de la précédente par une virgule
o un exposant multiplié * indique que l’élément qui précède peut être
répété n fois (n≥0), chaque occurrence étant séparé de la précédente
par une virgule
69
q PRÉSENTATION GÉNÉRALE
q RECHERCHE DANS UNE BD
q DÉFINITION ET MODIFICATION DE SCHÉMAS
q MISE À JOUR DE DONNÉES
SA IN T JÉ R ÔSJP
EC-TC-P313 : BASES DE DONNÉES - SJP (PAR R. HOUE NGOUNA - J. MOSKOLAI - M. TEKINZANG)
70
M E PO LY T E C H N IQ U E
LA RECHERCHE DE DONNÉES
q Principales requêtes
o projection
o sélection
o jointure
o sous-questions
o questions quantifiées
o union / intersection
o fonctions de calculs et de groupes (agrégats)
o fonctions de dates
71
LA PROJECTION
q Définition et remarques
o en algèbre relationnelle, cette opération effectue l’extraction des
colonnes (attributs) spécifiées, puis élimine les tuples en doublon
o en SQL, les doublons ne sont pas éliminés, à moins que cela soit
explicitement spécifié avec le mot-clé DISTINCT
o SQL permet en outre d’appliquer des fonction de calcul sur les colonnes
(ex. fonctions arithmétiques d’addition, soustraction, multiplication...)
q Syntaxe SQL
SELECT [ALL|DISTINCT] <expression de valeurs>+
FROM <nom de table> [nom de variable] ;
72
LES DONNÉES DES EXEMPLES À SUIVRE
q Soient les relations suivantes
o etudiant (matricule, nom, prenom)
o stage (code, #matricule, entreprise, note)
73
EXEMPLES (PROJECTION)
q Exemples de requêtes
(donner les noms et prénoms des étudiants ; doublons possibles)
SELECT nom, prenom FROM etudiant ;
74
SJP
75
SAINT JÉRÔME POLYTECHNIQUE
LA SÉLECTION
q Définition et remarque
o une sélection s’exprime comme une projection avec en plus une
condition de recherche
q Syntaxe SQL
SELECT [ALL|DISTINCT] {<expression de valeurs>+ | *}
FROM <nom de table> [nom de variable]
WHERE <condition de recherche> ;
76
LA SÉLECTION
q Condition de recherche
o elle définit un critère de recherche à l’aide de prédicats
o un prédicat de restriction permet de comparer deux expressions de valeurs
q Exemples de prédicats
o de comparaison : =, ≠, <, >, ≤, ≥
o d’intervalle : BETWEEN
(teste si la valeur est comprise entre 2 constantes)
o de comparaison de texte : LIKE
(teste si une chaîne de caractère contient 1 ou plusieurs sous-chaînes)
o de test de nullité : teste si un attribut est égal à NULL
(i.e. sa valeur est inconnue)
o d’appartenance : teste (avec IN) si la valeur d’un attribut appartient à une
liste de constantes
77
EXEMPLES (SÉLECTION)
78
LA JOINTURE
q Définition et remarques
o un cas particulier de jointure sans qualification est le produit cartésien
o la jointure avec qualification peut s’exprimer comme la restriction du
produit cartésien par un prédicat
q Syntaxe SQL
SELECT [ALL|DISTINCT] {<expression de valeurs>+ | *}
FROM <nom de table_1> , … , <nom de table_n>
[WHERE <condition de jointure>] ;
79
EXEMPLES (JOINTURE)
80
SJP
81
SAINT JÉRÔME POLYTECHNIQUE
CAS PARTICULIER : AUTO-JOINTURE
q Définition
o une auto-jointure est une jointure d’une relation avec elle-même,
o très pratique lorsque la condition de jointure compare des attributs de la
même relation, en particulier pour les relations ayant une structure
hiérarchique (par ex. relation parent/enfant…)
82
CAS PARTICULIER : JOINTURES EXTERNES
q Rappel
o une jointure externe permet de récupérer les enregistrements des
relations correspondant à la condition de jointure, mais aussi ceux pour
lesquels il n’existe pas de correspondance
83
EXEMPLES
(AUTO-JOINTURE ET JOINTURES EXTERNES)
(noms, prénoms, notes des étudiants, y compris ceux qui n’ont pas
effectué de stage è il s’agit peut-être d’un oubli de saisie !)
SELECT nom, prenom, note
FROM etudiant LEFT OUTER JOIN stage
ON etudiant.matricule = stage.matricule ;
(noms, prénoms, notes des étudiants dont la note de stage > 13)
SELECT nom, prenom, note
FROM etudiant LEFT OUTER JOIN stage
ON etudiant.matricule = stage.matricule
WHERE note > 13;
84
SJP
85
SAINT JÉRÔME POLYTECHNIQUE
LES SOUS-QUESTIONS
q Syntaxe
SELECT … FROM … WHERE … SELECT …
q Remarques
o un sous-question peut être considérée argument des prédicats (de
comparaison ou d’appartenance à une liste)
o une sous-question elle-même invoquer de sous-question
86
EXEMPLES (REQUÊTES IMBRIQUÉES)
87
SA IN T JÉ R ÔSJP
88
M E PO LY T E C H N IQ U E
LES QUESTIONS QUANTIFIÉES
q Le contexte
o on peut être amené à comparer la valeur d’un attribut :
• à tous les résultats d’une sous-question,
• ou seulement à l’une quelconque des valeurs trouvées
o il est également possible de vouloir tester si la valeur d’un attribut existe
dans le(s) résultat(s) d’une sous-question
q La syntaxe en SQL
o SQL propose l’écriture de sous-questions quantifiées avec les mots-clés
suivants, précédant la sous-question : ALL, ANY, EXISTS
q Signification
o ALL permet de vérifier si la comparaison est vrai pour tous les résultats de
la sous-question
o ANY vérifie si elle est vrai pour au moins un résultat de la sous-question
o EXISTS teste l’existence de la valeur d’un attribut dans le résultat
89
EXEMPLES (QUESTIONS QUANTIFIÉES)
(matricules des étudiants ayant une note supérieure à la note de tous les
étudiants i.e. le ou les étudiants ayant la meilleure note de stage)
SELECT matricule FROM stage
WHERE note >= ALL
SELECT note FROM stage ;
(matricules des étudiants ayant une note supérieure à la note d’au moins un
étudiant)
SELECT matricule FROM stage
WHERE note > ANY
SELECT note FROM stage ;
90
rappel
SA IN T JÉ R ÔSJP
91
M E PO LY T E C H N IQ U E
L’UNION
q Syntaxe SQL
o utilisation du mot-clé UNION entre les requêtes relatives à l’opération
d’union
q Exemple
(matricules des étudiants ayant effectué leur stage à la SONEL, plus les
matricules de ceux ayant une note > 14)
SELECT matricule FROM stage WHERE entreprise = 'SONEL'
UNION
SELECT matricule FROM stage WHERE note > 14 ;
92
L’INTERSECTION
q Syntaxe SQL
o utilisation du mot-clé INTERSECT entre les requêtes relatives à
l’opération d’intersection
q Exemple
(matricules des étudiants ayant effectué leur stage à la SONEL et ayant
une note > 10)
SELECT matricule FROM stage WHERE entreprise = 'SONEL'
INTERSECT
SELECT matricule FROM stage WHERE note > 10 ;
93
LES FONCTIONS DE CALCULS ET DE GROUPES
q Utilisation
o ces fonctions peuvent être utilisées dans la clause SELECT
(par ex. pour afficher la moyenne générale des notes de stage)
o elle sont également utilisées pour effectuer des calculs sur des groupes
avec GROUP BY <spécification des colonnes>+
(par ex. pour calculer les moyennes de notes par entreprise)
o il est possible d’appliquer une sélection sur une groupe, avec
HAVING <condition de sélection>, après la clause GROUP BY
(par ex. pour calculer les moyennes de notes par entreprise, mais
uniquement pour les notes supérieures à 10)
94
EXEMPLES (CALCULS ET GROUPES)
(idem que précédemment, mais uniquement pour s’il y a plus d’une note
dans la groupe i.e. l’entreprise a reçu au moins 2 étudiants)
SELECT entreprise, AVG(note) as moyenne FROM stage
GROUP BY entreprise HAVING COUNT(matricule) > 1 ;
95
rappel
SA IN T JÉ R ÔSJP
96
M E PO LY T E C H N IQ U E
FONCTIONS DE DATES
97
FONCTIONS DE DATES
q Remarques
o La fonction TO_DAYS convertit une date en nombre de jours
• Elle accepte les champs de type DATETIME et ignore la partie horaire
o La fonction NOW() calcule la date ou l’heure actuelle (celle de l’horloge
du système)
98
q PRÉSENTATION GÉNÉRALE
q RECHERCHE DANS UNE BD
q DÉFINITION ET MODIFICATION DE SCHÉMAS
q MISE À JOUR DE DONNÉES
SA IN T JÉ R ÔSJP
99
M E PO LY T E C H N IQ U E
CRÉATION DE TABLES
q Syntaxe SQL
CREATE TABLE <nom de table> (élément de table>+)
o un nom de table peut être un nom simple (par ex. etudiant) ou un nom
composé d’un nom de schéma (i.e. une BD) suivi par le nom de la table (par
ex. sjp1.etudiant)
o un élément de table est
• soit une définition de colonne (par exemple :
<nom d’un attribut> : <type de donnée>, par ex. note : FLOAT(n,d)),
• soit une définition de contrainte (par ex. matricule PRIMARY KEY pour
définir le matricule comme clé primaire)
q Contraintes d’intégrité
o les contraintes de colonnes : permettent de spécifier différentes
contraintes d’intégrité portant sur un seul attribut
o les contraintes de relations : peuvent porter sur plusieurs attributs
10
0
LES CONTRAINTES D’INTÉGRITÉ
10
1
LES CONTRAINTES D’INTÉGRITÉ
10
2
PRINCIPAUX TYPES
q Chaînes de caractères
o CHAR(longueur) : l’attribut doit avoir un nb. De caractères exactement égal au
nombre spécifié
o VARCHAR (longueur) : le nombre de caractère est variable, et est au maximum,
égal à la valeur spécifiée entre parenthèse
q Types numériques
o TINYINT(n) : entiers de -128 à +127 ou de 0 à 255
o SMALLINT(n) : entiers de -32768 à +32768 ou de 0 à 65535
o INT(n) : entiers de -2147483648 à 2147483647 ou de 0 à 4294967295
o FLOAT(n,d) : nombres à virgule flottante, en simple précision
o DOUBLE(n,d) : nombres à virgule flottante, en double précision
q Types temporels
o DATE : date au format 'YYYY-MM-DD'
o DATETIME : combinaison de date et heure, au format 'YYYY-MM-DD HH:MM:SS’
10
3
EXEMPLE (CRÉATION DE TABLES)
10
4
LA DÉFINITION DE SCHÉMAS
q Suppression de tables
DROP TABLE <nom de la table>
exemple : DROP TABLE stages ;
10
5
LA MODIFICATION D’UN SCHÉMA
q Le principe
o changer la structure d’une table en spécifiant la nature du changement
q Principales spécifications
o ajout d’une colonne
o suppression d’une colonne
o suppression d’une contrainte
o ajout d’une contrainte
o modification de la définition d’une colonne (changement du type)
o renommage d’une table
o renommage d’une colonne
10
6
AJOUT DE COLONNE
q Syntaxe SQL
ALTER TABLE <nom de table>
ADD {[COLUMN] <nom de colonne> <type de la colonne>}+
[FIRST | AFTER <nom de colonne>] ;
q Remarque
o le mot-clé COLUMN est optionnel ; toutefois, en le spécifiant, la valeur par défaut de la
colonne est définie comme NULL
Exemples :
ALTER TABLE etudiant
ADD COLUMN email VARCHAR(80) ;
10
7
SUPPRESSION DE COLONNE
q Syntaxe SQL
ALTER TABLE <nom de table>
DROP [COLUMN] <nom de colonne>
[RESTRICT | CASCADE] ;
q Remarques
o l’option [RESTRICT | CASCADE] permet de spécifier une suppression en
cascade (ou pas), notamment lorsque la colonne en question est référencée
dans une autre table
o la suppression n’est possible que si la colonne considérée ne fait pas partie
d’une vue, d’un index ou d’une contrainte (ex. clé)
Exemple :
ALTER TABLE etudiant DROP email ;
10
8
SUPPRESSION ET AJOUT DE CONTRAINTE
10
9
MODIFICATION DÉFINITION D’UNE COLONNE
11
0
RENOMMER UNE COLONNE OU UNE TABLE
q Syntaxe SQL
ALTER TABLE <nom de table>
RENAME {
COLUMN <ancien nom> TO <nouveau nom de colonne> |
TO <nouveau nom de table>
}
q Exemples
ALTER TABLE stage
RENAME COLUMN note TO note_rapport ;
11
1
q PRÉSENTATION GÉNÉRALE
q RECHERCHE DANS UNE BD
q DÉFINITION ET MODIFICATION DE SCHÉMAS
q MISE À JOUR DE DONNÉES
SJP
11
SAINT JÉRÔME POLYTECHNIQUE
2
LA MISE À JOUR DE DONNÉES
q Principales requêtes
o insertion de tuples
o mise à jour de tuples
o suppression de tuples
11
3
INSERTION DE TUPLES
q Cas d’utilisation
o une insertion de tuples (ajout de nouveaux enregistrements) peut être
réalisée en mentionnant les tuples à insérer è directe
o elle peut également se faire à partir des résultats d’une question
(requête) è via une question
q Syntaxe SQL
INSERT INTO <nom de table> [(<nom de colonne>+)]
{VALUES (<constante>+) | <commande de recherche>} ;
o dans le cas où la liste de colonne n’est pas spécifiée, les valeurs
insérées seront attribuées aux attributs de la table dans l’ordre dans
lequel ils ont été définis dans le schéma
(si seulement certaines valeurs sont spécifiées, les autres attributs
auront une valeur nulle)
11
4
EXEMPLE (INSERTION DE TUPLES)
q Insertion directe
INSERT INTO etudiant (matricule, nom, prenom)
VALUES ('SJP1006', 'Noundou', 'Lucrèce') ;
11
5
MISE À JOUR DE TUPLES
q Le principe
o elle permet de changer des valeurs d’attributs des tuples existants
o elle peut être réalisée,
• soit en indiquant directement les valeurs à modifier
• soit modifiant une valeurs à partir du résultat d’une question
o si aucune condition n’est spécifiée (dans la clause WHERE) tous les
tuples seront modifiés !!! d’où l’intérêt
des vues
q Syntaxe SQL
UPDATE <nom de table>
SET {<nom de colonne> = {<expression de valeur> | NULL}}+
[WHERE {<condition de recherche>}] ;
11
6
EXEMPLE (MISE À JOUR DE TUPLES)
UPDATE stage
SET note = 18
WHERE matricule= 'SJP1001' ;
11
7
MISE À JOUR AVEC RECHERCHE DANS LA MÊME TABLE
q Écriture incorrecte
UPDATE stage
SET note = note * 1.1
WHERE matricule IN
SELECT matricule FROM stage
WHERE note > SELECT AVG(note) FROM stage ;
11
8
SUPPRESSION DE TUPLES
q Le principe
o elle permet d’enlever des tuples existants d’une relation
o si aucune condition n’est spécifiée (dans la clause WHERE) tous les
tuples seront supprimés !!!
q Syntaxe SQL
DELETE FROM <nom de table>
[WHERE {<condition de recherche>}] ;
q Exemple
DELETE FROM etudiant
WHERE matricule NOT LIKE 'SJP%' ;
11
9
SYNTHÈSE
120
SA IN T JÉ R ÔSJP
M E PO LY T E C H N IQ U E INTRODUCTION AUX BASES DE DONNEES (PAR J. MOSKOLAI)