Post on 04-Apr-2015
Michel Tollenaere SQL et relationnel1
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Cours de Management des Systèmes d’Information
Objectifs :- Programmer dans MS-ACCESS (relationnel – SQL)- Modéliser, concevoir un SI (UML) : identifier les besoins, réaliser,
déployer, récupérer données et +.- Préparer les enseignements ERP et PLM de 3ème année
Programmation fin dec : cours et TD- en janvier TP et projet
Évaluation :- Projet / TP- examen
Michel Tollenaere SQL et relationnel2
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
http://www.g-scop.inpg.fr/~tollenam/msi/
Michel Tollenaere SQL et relationnel3
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Modèle relationnel - SQL
Historique : E.F. CODD dans les années 70• modèle basé sur la théorie des ensembles• des langages pour manipuler les données (SQL)• une démarche pour représenter le « monde réel »
Nombreux outils :MySQL (logiciel libre)Access (Microsoft) versions 1997 – 2003 – 2007 - 2010ORACLE (Oracle corp.)SQL Server (Microsoft)Ingres (Computer Associates)
http://cerig.efpg.inpg.fr/tutoriel/bases-de-donnees/sommaire.htm
Michel Tollenaere SQL et relationnel4
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
S . I .
Organisations
Task 1
Task 2Task 3
Tâches, processus
PERSONNE Num_securite_sociale Nom Prenom Code_postal Telephonen-uplet1 1 76 02 99 167 098 Dupont Marcel 41500 06 08 78 65 88n-uplet2 2 76 04 95 165 008 Durand Elisabeth 31900 02 99 167 098n-uplet3 1 78 12 38 122 4332 Faure Bertrand 38700 04 38 56 45 32n-uplet4 1 68 02 99 5649 876 Dumontier Michel 75016 01 55 45 34 87
STAGE Num_securite_sociale D_type_stageTitren-uplet1 1 76 02 99 167 098 Inge_Adjoint Définition d'une politique Qualitén-uplet2 2 76 04 95 165 008 Inge_Adjoint Mise en place d'un SI pour la maintenancen-uplet3 1 68 02 99 5649 876 EDT Reconfiguration des achatsn-uplet4 2 76 04 95 165 008 EDT Reconfiguration des achatsn-uplet5 1 76 02 99 167 098 PFE Mise en place d'un ERP
propriétés propriétés
Constituant ConstituantConstituantConstituant
Information structurée,bases de données
Quels systèmes ?
Qu’est ce qu’un SI ?
Michel Tollenaere SQL et relationnel5
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
PERSONNE Num_securite_sociale Nom Prenom Code_postal Telephonen-uplet1 1 76 02 99 167 098 Dupont Marcel 41500 06 08 78 65 88n-uplet2 2 76 04 95 165 008 Durand Elisabeth 31900 02 99 167 098n-uplet3 1 78 12 38 122 4332 Faure Bertrand 38700 04 38 56 45 32n-uplet4 1 68 02 99 5649 876 Dumontier Michel 75016 01 55 45 34 87
STAGE Num_securite_sociale D_type_stageTitren-uplet1 1 76 02 99 167 098 Inge_Adjoint Définition d'une politique Qualitén-uplet2 2 76 04 95 165 008 Inge_Adjoint Mise en place d'un SI pour la maintenancen-uplet3 1 68 02 99 5649 876 EDT Reconfiguration des achatsn-uplet4 2 76 04 95 165 008 EDT Reconfiguration des achatsn-uplet5 1 76 02 99 167 098 PFE Mise en place d'un ERP
propriétés propriétés
Constituant ConstituantConstituantConstituant
Information structurée,bases de données
Quels systèmes ?
• Consulter• Ajouter• Modifier• Supprimer
Michel Tollenaere SQL et relationnel6
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Notion de modèle
• Qu’est ce qu’un modèle ? (Minsky 1968)
http://web.media.mit.edu/~minsky/papers/MatterMindModels.txt
A* est un modèle de A pour un observateur O
ssi A* aide O à répondre aux questions qu’il se pose sur A.
Système observé
ModèleObservateur
Où sont construites les ailes ?
Michel Tollenaere SQL et relationnel7
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Système opérantFlux entrants Flux sortants
Système
Système d ’informationsInformations externes
Informations vers l’extérieur
Informations collectées
Ordres, consignes
Système de pilotage (ou de décision)
Informations traitées
Décisions
Concepts de systémique (Lemoigne 1977)
Michel Tollenaere SQL et relationnel8
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : « Domaine »
Domaines : Di = {di1, di2, ….. din}, Dj = {d R}, Dk = Di x Dj Di défini en extension, Dj et Dk en intention
Exemples :• D_Num_securite_sociale = { n [1013 ; 3.1013]}• D_Nom = { chaine de 30 caractères}• D_Prenom = { chaine de 20 caractères}• D_Code_postal = { chaine de 5 chiffres}• D_Telephone = { chaine de 10 chiffres}• D_couleur = { bleu, vert, rouge, jaune }• D_type_stage = { operateur, Enquete, EDT, inge_adjoint, PFE}• D_titre = { chaine de 200 caractères}• D_date_début = {date} Espace discret (date)
ou réel (temps), non Fini !
Michel Tollenaere SQL et relationnel9
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
• Donnée = signe + code– exemple : code ASCII (7 bits) ou étendu
Premiers éléments
• Information = donnée + modèle d’interprétation
1 56 05 99 131 088
N° SS : un hommede 56 ansné à l’étranger
12-10-201210-12-2012588 DGA 3806-88-40-21-15+33-6-88-40-21-151560599131088156 05 99 131 0881 500,231500.28
588 DGA 38Immatriculation :un véhicule immatriculé dans l’Isère avant avril 2009
Michel Tollenaere SQL et relationnel10
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : « Relations »
Une relation (ou table) est un sous ensemble d’un produit cartésien de domaines. Une relation est définie par un nom. Le degré d’une relation est égal par définition au nombre de facteurs de ce produit cartésien.
Exemples : relations• PERSONNE D_Num_securite_sociale x D_Nom x D_Prenom x D_Code_postal x D_Telephone
• STAGE D_Num_securite_sociale x D_type_stage x D_Titre x D_date_deb
Personne est de degré 5, Stage est de degré 4
Michel Tollenaere SQL et relationnel11
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : « Constituants »
On appelle constituant (ou colonne ou attribut) d’une relation (ou table) le nom donné à une colonne de la table. On note R+ l’ensemble des constituants de R.
Exemples : les constituants d’une relation• PERSONNE+ = {Num_securite_sociale, Nom , Prenom , Code_postal, Telephone }
• STAGE + = { Num_securite_sociale , type_stage , Titre, date_deb }
• PERSONNE (Num_securite_sociale, Nom , Prenom , Code_postal, Telephone)• STAGE ( Num_securite_sociale , type_stage , Titre , date_deb )
Ou plus simplement
Michel Tollenaere SQL et relationnel12
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : « n-uplets »
Un n-uplet - ou tuple (en anglais), instance, ligne - d ’une relation est un élément de cette relation
Exemples : 2 relations• PERSONNE D_Num_securite_sociale x D_Nom x D_Prenom x D_Code_postal x D_Telephone• STAGE D_Num_securite_sociale x D_type_stage x D_Titre x D_date-deb
PERSONNE Num_securite_sociale Nom Prenom Code_postal Telephonen-uplet1 1 76 02 99 167 098 Dupont Marcel 41500 06 08 78 65 88n-uplet2 2 76 04 95 165 008 Durand Elisabeth 31900 02 99 167 098n-uplet3 1 78 12 38 122 4332 Faure Bertrand 38700 04 38 56 45 32n-uplet4 1 68 02 99 5649 876 Dumontier Michel 75016 01 55 45 34 87
STAGE Num_securite_sociale D_type_stageTitre Date-debutn-uplet1 1 76 02 99 167 098 Inge_Adjoint Définition d'une politique Qualité 01/02/2006n-uplet2 2 76 04 95 165 008 Inge_Adjoint Mise en place d'un SI pour la maintenance 02/02/2006n-uplet3 1 68 02 99 5649 876 EDT Reconfiguration des achats 15/03/2005n-uplet4 2 76 04 95 165 008 EDT Reconfiguration des achats 15/03/2005n-uplet5 1 76 02 99 167 098 PFE Mise en place d'un ERP 15/03/2005
Michel Tollenaere SQL et relationnel13
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : propriétés, constituants, n-uplets
Exemples : 2 relations• PERSONNE D_Num_securite_sociale x D_Nom x D_Prenom x D_Code_postal x D_Telephone• STAGE D_Num_securite_sociale x D_type_stage x D_Titre x D_date-deb
Num_securite_socialeD_type_stageTitre Date-debut1 76 02 99 167 098 Inge_Adjoint Définition d'une politique Qualité 01/02/20062 76 04 95 165 008 Inge_Adjoint Mise en place d'un SI pour la maintenance 02/02/20061 68 02 99 5649 876 EDT Reconfiguration des achats 15/03/20052 76 04 95 165 008 EDT Reconfiguration des achats 15/03/20051 76 02 99 167 098 PFE Mise en place d'un ERP 15/03/2005
propriétés propriétés
Constituant ConstituantConstituantConstituant
Michel Tollenaere SQL et relationnel14
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : clé, contraintes d’intégrité
Toute relation ou table doit comporter parmi l’ensemble de ses constituants un sous ensemble qui identifie sans ambiguité chaque
n-uplet : ce sous ensemble est appelé « clé » de la relation.Les constituants de ce sous ensemble sont présentés soulignés.
Exemples : clé d’une relation
• PERSONNE (Num_securite_sociale, Nom , Prénom , Code_postal, Téléphone)
• STAGE ( Num_securite_sociale , type_stage , Titre, Date-début )
Michel Tollenaere SQL et relationnel15
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : Schéma de relations
Le schéma d’une relation ou définition en intention de cette relation est constitué des éléments :• le nom de la relation• la liste des constituants et les domaines de chacun• les contraintes d’intégrité à respecter
Exemples : PERSONNE ( Num_securite_sociale : { n [1013 ; 3.1013]} ,
Nom : { chaine de 30 caractères},Prenom : { chaine de 20 caractères},Code_postal : { chaine de 5 chiffres} ,Telephone = { chaine de 10 chiffres} )
STAGE Num_securite_sociale : { n [1013 ; 3.1013]} , type_stage : { operateur, Enquete, EDT, inge_adjoint, PFE}, titre : { chaine de 200 caractères} date-début : {date} )
Michel Tollenaere SQL et relationnel16
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : Schéma de Base de données relationnelle
Le schéma d’une base de données est constituée par l’ensemble des schémas des relations qui la constituent.
CLIENT ( Num_client : entier long , Nom : chaine de 30 caractères,Prenom : chaine de 20 caractères,Code_postal : chaine de 5 chiffres ,Telephone : chaine de 10 chiffres )
COMMANDE Num_commande : entier long , date : date, montant : monétaire client : entier long )
ARTICLE ( Code_article : entier long,Désignation : chaine de 50 caractères,prix : monétaire )
LIGNECOMMANDE (code_article : entier long ,Num_commande : entier long ,quantité : entier)
Exemple :
Michel Tollenaere SQL et relationnel17
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Relationnel : opérateurs ensemblistes
• union T = (R1 R2) ou T = Union (R1, R2)• différence T = (R1 R2) ou T = Minus (R1, R2)• intersection T = (R1 R2) ou T = inter (R1, R2)
• Soient R1 et R2 deux relations, on peut définir entre R1 et R2 un certain nombre d’opérations
• produit cartésien T = (R1 R2) ou T = product (R1, R2)• jointure naturelle
T = (R1 R2)
R1 et R2 ont même schéma Opérations entre relations de schéma distinct
Michel Tollenaere SQL et relationnel18
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Relationnel : opérations unaires sur une relation
• projection de R sur les attributs Ai1, Ai2, Ai3, ... Aip avec p < nest une relation R’ de schéma (Ai1, Ai2, Ai3, ... Aip ) dont les n-uplets sont obtenus par élimination des attributs de R n’appartenant pas à R ’ et par suppression des doublons.On note T = Ai1, Ai2, Ai3, ... Aip (R)
ou T = proj Ai1, Ai2, Ai3, ... Aip (R) • restriction (ou sélection) de la relation R par une qualification Q est une relation R ’ de même schéma que R dont les n-uplets sont ceux de R satisfaisant Q.On note T = Q (R) ou T = selectQ (R)
• Soit R une relation de schéma (A1, A2, A3, ... An )
Michel Tollenaere SQL et relationnel19
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : opérateurs exemples
• union T = (R1 R2) ou T = Union (R1, R2)
• différence T = (R1 R2) ou T = Minus (R1, R2)
• intersection T = (R1 R2) ou T = inter (R1, R2)
• Soient R1 et R2 deux relations de même schémaR1 A B C
a c 10c d 15x y 20
R2 A B Cf g 10c d 15m p 12
T A B Ca c 10c d 15x y 20f g 10m p 12
T A B Ca c 10x y 20
T A B Cc d 15
Michel Tollenaere SQL et relationnel20
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : opérateurs exemples
• Soient R1 et R2 deux relations de schémas distincts, R1 A B C
a c 10c d 15x y 20
R2 M N Pfar 10 150car 15 1000min 8 1200
T A B C M N Pa c 10 far 10 150a c 10 car 15 1000a c 10 min 8 1200c d 15 far 10 150c d 15 car 15 1000c d 15 min 8 1200x y 20 far 10 150x y 20 car 15 1000x y 20 min 8 1200
• produit cartésien T = (R1 R2) ou T = product (R1, R2)
Michel Tollenaere SQL et relationnel21
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : opérateurs exemples
• Soient R1 et R2 deux relations de schémas distincts, R1 A B C
a c 10c d 15x y 20
R2 M C Pfar 10 150car 15 1000min 8 1200
T A B C M Pa c 10 far 150c d 15 car 1000
• jointure naturelle T = (R1 R2)T = R1 join (c=c) R2
Michel Tollenaere SQL et relationnel22
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : opérateurs exemples
• Soient R1 une relation, R1 A B Ca c 10c d 15x y 20c d 35x y 60
• restriction (ou sélection) de la relation R1 par une qualification Q = (C<30).T = ( C < 30) (R)
• projection de R1 sur les attributs A et B T = A, B, (R1)
T A Ba cc dx y
Attention à la suppression des doublons
T A B Ca c 10c d 15x y 20
Michel Tollenaere SQL et relationnel23
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : fonctions de calcul
Opération CALCULER R = CALCULER (R0, fonction1, fonction2, ...)
ou
N = CALCULER (R0, fonction)
R = fonction 1, fonction 2 (R)
N°BonCommande
CodeProduit
Quantité
PuHT
96008 A10 10 83
96008 B20 35 32
96009 A10 20 83
96010 A15 4 110
96010 B20 55 32
On désire obtenir le chiffre d'affaires total HT, ainsi que le nombre total de produits commandés :
R1 = CALCULER (LIGNE_COMMANDE, Somme (Quantité*PuHT), Somme (Quantité))
R1 = SUM Quantité*PuHt , SUM Quantité (LIGNE_COMMANDE)
Somme (Quantité*PuHT
)
Somme (Quantité)
5 810 124
ExempleR0 = LIGNE_COMMANDE
Les calculs et/ou comptage portent sur la relation R0.
La relation résultat ne comportera qu'une ligne avec autant de colonnes que de résultats demandés ou pourra simplement être considérée comme un nombre N utilisable ultérieurement en tant que tel dans le cas où un seul résultat est attendu.
Michel Tollenaere SQL et relationnel24
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012Définitions : fonctions
regrouper et calculer
R= REGROUPER_ET_CALCULER (R0, att1, att2, ..., fonction1, fonction2, ...)R = att1, att2, …, fonction 1, fonction 2,…
(R0)
N°BonCommande
CodeProduit
Quantité
PuHT
96008 A10 10 83
96008 B20 35 32
96009 A10 20 83
96010 A15 4 110
96010 B20 55 32
On désire obtenir le montant total HT de chaque bon de commande :
R2= REGROUPER_ET_CALCULER (LIGNE_COMMANDE, N°BonCommande, MontantHt : Somme (Quantité*PuHT))
R = N°BonCommande, MontantHt : SUM Quantité*PuHT
(LIGNE_COMMANDE)
N° BonCommand
e
Montant HT
96008 1 950
96009 1 660
96010 2 200
Le regroupement s'effectue sur un sous ensemble des attributs de la relation R0
La relation résultat comportera autant de lignes que de groupes de n-uplets, les fonctions s'appliquant à chacun des groupes séparément.
ExempleR0 = LIGNE_COMMANDE
Michel Tollenaere SQL et relationnel25
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : fonctions d’agrégation
Les Fonctions d'agrégation Elles sont utilisées dans les opérateurs : CALCULER et REGROUPER_ET_CALCULER.Les fonctions statistiques de base :Elles portent sur un ou plusieurs groupes de n-uplets et évidemment sur un attribut de type numérique.Somme (attribut) : total des valeurs d'un attributMoyenne (attribut) : moyenne des valeurs d'un attributMinimum (attribut) : plus petite valeur d'un attributMaximum (attribut) : plus grande valeur d'un attributRemarque : les valeurs "non renseignées" de l'attribut sont ignorées.La fonction de comptage : Compte ()La fonction de comptage donne le nombre de n-uplets d'un ou de plusieurs groupes de n-uplets. Il n'est donc pas nécessaire de préciser d'attribut.
Michel Tollenaere SQL et relationnel26
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : contraintes dans une BD
L’intérêt de l’usage de Base de données et que la BD permet la définition de « contraintes d’intégrité » qui seront nécessairement vérifiées à tout instant par la base : ces contraintes permettent de garantir la « cohérence » de la base. Elles sont de trois types :
1) contrainte de clé2) contrainte de type de données (date, intervalle, liste… entier)3) contrainte d’intégrité référentielle
Michel Tollenaere SQL et relationnel27
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : contrainte d’intégrité référentielle
Permet de vérifier la présence de données référencées dans des tables différentes. Une contrainte d ’intégrité référentielle peut s’utiliser dès qu’une clé primaire d’une table est utilisée comme référence dans une autre table. On
la nomme « clé étrangère » de la seconde table.
CLIENT (Num_client : entier long , Nom : chaine de 30 caractères,Prenom : chaine de 20 caractères,Code_postal : chaine de 5 chiffres ,Telephone : chaine de 10 chiffres )
COMMANDE Num_commande : entier long , date : date, montant : monétaire client : entier long )
ARTICLE (Code_article : entier long,Désignation : chaine de 50 caractères,prix : monétaire )
LIGNECOMMANDE (code_article : entier long ,Num_commande : entier long ,quantité : entier)
Michel Tollenaere SQL et relationnel28
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : 1ère Forme Normale
• PERSONNE (Num_securite_sociale, Nom , Prenom , Code_postal, Telephone)
On ne peut gérer des listes de prénom ou plusieurs adresses, dans la table PERSONNE ; par contre prénom peut être une chaine de nn caractères
Une relation est en PREMIERE FORME NORMALE ssi • les valeurs de tous les attributs qui la composent sont atomiques• la relation possède une « clé »
Exemple
Michel Tollenaere SQL et relationnel29
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : Dépendance fonctionnelle
Cette notion permet de capturer l’idée de dépendance entre informations en visant à limiter la redondance.
Soit R une relation et X et Y des groupes d’attributs de R, il existe une dépendance fonctionnelle entre X et Y (on dit que X détermine Y) si dans R chaque valeur de X détermine une et une seule valeur de Y.
Attention, cette propriété doit être vérifiée pour tous les n-uplets, y compris ceux à créer
Michel Tollenaere SQL et relationnel30
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : 2ème Forme Normale
• PRET (Num_etudiant, NumLivre, Nom_etud , Prenom_etud , NomLivre, Auteurs, date_emprunt)
Une relation est en DEUXIEME FORME NORMALE ssi • elle est en première forme normale• tout attribut n ’appartenant pas à une clé ne dépend pas d ’une partie de cette clé
Exemple
N ’est pas en 2ème FN car « Nom_etud » ne dépend que de Num_etudiant, et de même « NomLivre », et « Auteurs » ne dépend que de NumLivre
Michel Tollenaere SQL et relationnel31
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Définitions : 3ème Forme Normale
• EMPLOYE (Num_securite_sociale, Nom , Prenom , Service, Adresse_service)
Une relation est en TROISIEME FORME NORMALE (dite de Boyce Codd) ssi • elle est en deuxième forme normale• tout attribut n ’appartenant pas à une clé ne dépend pas d ’un autre attribut non clé
Exemple
Adresse_service dépend de service, la relation n’est pas en 3eme FN.
Michel Tollenaere SQL et relationnel32
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
SQL
Le SQL (Structured Query Language) permet d'interroger une base de données, d'en modifier des informations. C'est un langage universel d'interrogation des bases de données, qui permet à différents systèmes d'échanger des données entre eux.
ACCESS peut être interrogé en SQL via un macro langage qui “ cache ” le SQL (voir à ce sujet le Menu “ Requêtes ”, “ Spécifique SQL ” “ SQL direct ”).
Normalisation ISO :norme SQL1 (1986, 1989) norme SQL2 (1992) norme SQL3 (1999) implémentée dans Oracle
Dans la suite, le code SQL est représenté en ARIAL 12, les commentaires en Italique.
MySQL 5.1 http://dev.mysql.com/downloads/
Michel Tollenaere SQL et relationnel33
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2013
SQL comporte 3 parties
1) - Le DML (Data Manipulation Language)
Sélection d’information, création et mise à jour d’enregistrements
SELECT, INSERT, UPDATE, DELETE, JOIN
2) - Le DDL (Data Definition Language)
Création des tables, des attributs et des contraintes d’intégrité
CREATE, ALTER, DROP, RENAME
3) - Le DCL (Data Control Language)
Pour contrôler l’accès aux données
GRANT, REVOKE
Michel Tollenaere SQL et relationnel34
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Les requêtes simples
Soit 3 tables : Eleves (NomElv, AdrElv, VilleElv), Matieres (NomMat, Coef, Intitule), Notes (NomElv, NomMat, Date, Note).
Attribut souligné = clé primaire
Eleves
• NomElv • AdrElv • VilleElv
Matieres
• NomMat • Coef• Intitulé
Notes
• NomElv • NomMat• Date• Note
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel35
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Des enregistrements dans les tables
Eleves
• NomElv • AdrElv • VilleElv
Matieres
• NomMat • Coef• Intitulé
Notes
• NomElv • NomMat• Date• Note
Eleves
Nomelv Adresse Ville
Bastien Montmartre Paris
Clerget-Gurnaud Bastille Paris
Deltour Romain Bastille Grenoble
Denoual St Michel Paris
Le Bas Cointrin Geneve
Miguel Goyena Plaza de la Constitucíon
Mexico
Pelayo Menendez Garcia
Anáhuac Mexico
Pop Trocadero Paris
Simon-Suisse Jet d'eau Geneve
Thevenot Ile verte Grenoble
Viard Gare Grenoble
Matiere
NomMat Coef Intitulé
Gest-prod 3 Gestion de production
Gest-proj 2 Gestion de projets
MSI 3 Management des SI
Qualité 1 Qualité
Sports 2 Sports
Notes
Nomelv NomMat Date Valeur
Bastien Gest-prod 25/09/2004 15
Bastien MSI 09/09/2004 16
Bastien MSI 25/09/2004 15
Clerget-Gurnaud
Gest-prod 25/09/2004 12
Clerget-Gurnaud
MSI 09/09/2004 9
Clerget-Gurnaud
MSI 25/09/2004 12
Deltour Romain
Gest-prod 25/09/2004 17
Deltour Romain
MSI 09/09/2004 17
Deltour Romain
MSI 25/09/2004 20
Denoual Gest-prod 25/09/2004 8
Denoual MSI 09/09/2004 20
Denoual MSI 25/09/2004 10
Le Bas Gest-prod 25/09/2004 11
Le Bas MSI 09/09/2004 12
Le Bas MSI 25/09/2004 11
Miguel Goyena
Gest-prod 25/09/2004 15
Miguel Goyena
MSI 09/09/2004 15
Miguel Goyena
MSI 25/09/2004 18
Pelayo Menendez Garcia
Gest-prod 25/09/2004 13
Pelayo Menendez Garcia
MSI 09/09/2004 14
Pelayo Menendez Garcia
MSI 25/09/2004 13
Pop Gest-prod 25/09/2004 17
Pop MSI 09/09/2004 18
Pop MSI 25/09/2004 17
Simon-Suisse
Gest-prod 25/09/2004 12
Simon-Suisse
MSI 09/09/2004 10
Simon-Suisse
MSI 25/09/2004 12
Thevenot Gest-prod 25/09/2004 11
Thevenot MSI 09/09/2004 11
Thevenot MSI 25/09/2004 14
Viard Gest-prod 25/09/2004 13
Viard MSI 09/09/2004 13
Viard MSI 25/09/2004 16
Simon-Suisse
Qualité 30/09/2004 10
Le Bas Qualité 30/09/2004 17
Pelayo Menendez Garcia
Qualité 30/09/2004 10
Bastien Qualité 30/09/2004 10
Pop Qualité 30/09/2004 17
Denoual Qualité 30/09/2004 8
Clerget-Gurnaud
Qualité 30/09/2004 6
Thevenot Qualité 30/09/2004 4
Viard Qualité 30/09/2004 2
Miguel Goyena
Qualité 30/09/2004 13
Deltour Romain
Qualité 30/09/2004 15
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel36
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
1.1 L'interrogation simple Liste des élèves.
SELECT NomElv (ce qui doit être affiché ?)FROM Eleves; (dans quelle table rechercher l’information ?)
Liste des matières avec leurs coefficients.
SELECT NomMat, CoefFROM Matieres;
Toutes les notes classées par élèvesSELECT Notes.Nomelv, Notes.NomMat,
Notes.Date, Notes.ValeurFROM NotesORDER BY Notes.Nomelv;
Nomelv NomMat Date Valeur
Bastien Gest-prod 25/09/2004 15
Bastien MSI 09/09/2004 16
Bastien MSI 25/09/2004 15
Clerget-Gurnaud Gest-prod 25/09/2004 12
Clerget-Gurnaud MSI 09/09/2004 9
Clerget-Gurnaud MSI 25/09/2004 12
Deltour Romain Gest-prod 25/09/2004 17
Deltour Romain MSI 09/09/2004 17
Deltour Romain MSI 25/09/2004 20
Denoual Gest-prod 25/09/2004 8
Denoual MSI 09/09/2004 20
Denoual MSI 25/09/2004 10
Toutes-les-notes/eleves
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel37
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
1.1 L'interrogation simple (suite)
Toutes les notes moyenne de matière classées par élèvesSELECT [Toutes-les-notes/eleves].Nomelv, [Toutes-les-notes/eleves].NomMat,
Avg ([Toutes-les-notes/eleves].Valeur) AS MoyenneDeValeurFROM [Toutes-les-notes/eleves]GROUP BY [Toutes-les-notes/eleves].Nomelv, [Toutes-les-notes/eleves].NomMat;
Nomelv NomMat Date Valeur
Bastien Gest-prod 25/09/2004 15
Bastien MSI 09/09/2004 16
Bastien MSI 25/09/2004 15
Clerget-Gurnaud Gest-prod 25/09/2004 12
Clerget-Gurnaud MSI 09/09/2004 9
Clerget-Gurnaud MSI 25/09/2004 12
Deltour Romain Gest-prod 25/09/2004 17
Deltour Romain MSI 09/09/2004 17
Deltour Romain MSI 25/09/2004 20
Denoual Gest-prod 25/09/2004 8
Denoual MSI 09/09/2004 20
Denoual MSI 25/09/2004 10
Toutes-les-moyennes-mat/élèves
Nomelv NomMat MoyenneDeValeur
Bastien Gest-prod 15
Bastien MSI 15,5
Clerget-Gurnaud Gest-prod 12
Clerget-Gurnaud MSI 10,5
Deltour Romain Gest-prod 17
Deltour Romain MSI 18,5
Toutes-les-notes/eleves
On compose les requêtes
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel38
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
SELECT [Toutes-les-moyennes-mat/élèves].NomMat, Avg ([Toutes-les-moyennes-mat/élèves].MoyenneDeValeur)
AS MoyenneDeMoyenneDeValeurFROM [Toutes-les-moyennes-mat/élèves]GROUP BY [Toutes-les-moyennes-mat/élèves].NomMat;
Moyenne par matière
Moyennes par matière
NomMatMoyenne de la division
Gest-prod 13,09
MSI 14,22
Qualité 10,18
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel39
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
1.2 La close WHERE Elle permet de spécifier la ou les conditions que doivent remplir les lignes choisies.
Liste des élèves habitant Mexico.SELECT NomElvFROM ElevesWHERE VilleElv = ‘Mexico';
Liste des matières pour lesquelles l'élève "Simon-Suisse" a eu au moins une note.
SELECT NomMatFROM NotesWHERE NomElv = 'Simon-Suisse';
Remarque : Dans la close WHERE, on ne peut utiliser que des propriétés qui sont dans la table sélectionnée
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel40
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Les jointures
Matieres
• NomMat • Coef• Intitulé
Notes
• NomElv • NomMat• Date• Note
Toutes-les-moyennes-mat/élèves
• NomElv • NomMat• Moyenne
Tous les totaux/matiere Nomelv Total ds la matière Coef Intitulé
Bastien 45 3 Gestion de production
Bastien 46,5 3 Management des SI
Bastien 10 1 Qualité
Clerget-Gurnaud 36 3 Gestion de production
Clerget-Gurnaud 31,5 3 Management des SI
Clerget-Gurnaud 6 1 Qualité
Deltour Romain 51 3 Gestion de production
Deltour Romain 55,5 3 Management des SI
Deltour Romain 15 1 Qualité
Denoual 24 3 Gestion de production
Denoual 45 3 Management des SI
Denoual 8 1 Qualité
SELECT [Toutes-les-moyennes-mat/élèves].Nomelv, Matiere!Coef*[Toutes-les-moyennes-mat/élèves]!MoyenneDeValeur AS Expr1, Matiere.Coef, Matiere.IntituléFROM [Toutes-les-moyennes-mat/élèves] INNER JOIN Matiere ON [Toutes-les-moyennes-mat/élèves].NomMat
= Matiere.NomMat;
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel41
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
La somme des coefficients
Matieres
• NomMat • Coef• Intitulé
SELECT Sum(Matiere.Coef) AS SommeDeCoefFROM Matiere;
SommeDeCoef
11
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel42
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Les totaux puis les moyennes par élève,
Nom eleveMoyenne semestrielle
Deltour Romain 11,05
Pop 10,95
Miguel Goyena 9,77
Bastien 9,23
Pelayo Menendez Garcia 8,14
Viard 7,68
Le Bas 7,68
Simon-Suisse 7,18
Denoual 7,00
Thevenot 6,77
Clerget-Gurnaud 6,68
SELECT [Tous les totaux/matiere].Nomelv, Sum([Tous les totaux/matiere].Expr1) AS SommeDeExpr1FROM [Tous les totaux/matiere]GROUP BY [Tous les totaux/matiere].Nomelv;
SELECT [Total/eleve].Nomelv, [Total/eleve]!SommeDeExpr1/[Somme-coef]!SommeDeCoef AS Expr1FROM [Total/eleve], [Somme-coef]ORDER BY [Total/eleve]!SommeDeExpr1/[Somme-coef]!SommeDeCoef DESC;
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel43
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Toutes-les-moyennes-mat/élèves_Analyse croisée
Nomelv Gest-prod MSI Qualité
Bastien 15 15,5 10
Clerget-Gurnaud 12 10,5 6
Deltour Romain 17 18,5 15
Denoual 8 15 8
Le Bas 11 11,5 17
Miguel Goyena 15 16,5 13
Pelayo Menendez Garcia 13 13,5 10
Pop 17 17,5 17
Simon-Suisse 12 11 10
Thevenot 11 12,5 4
Viard 13 14,5 2
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel44
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
dans MS Access
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel45
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
dans MS Access
SELECT CLIENT.Telephone, COMMANDE.MontantFROM CLIENT INNER JOIN COMMANDE
ON CLIENT.Num_client = COMMANDE.Num_clientWHERE (((COMMANDE.Montant)>10000));
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel46
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
SELECT personne.Nom, personne.Prenom, stage.Titre, stage.[Date-debut], stage.D_type_stage
FROM personne INNER JOIN stage ON personne.Numéro = stage.Numéro;
Les jointures
Michel Tollenaere SQL et relationnel47
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
SELECT personne.Nom, personne.Prenom, stage.Titre, stage.[Date-debut], stage.D_type_stage
FROM personne INNER JOIN stage ON personne.Numéro = stage.Numéro;
!! La jointure a été faite sur l’attribut « numéro » !!!! personne.Numéro = stage.Numéro;
Les jointures
Michel Tollenaere SQL et relationnel48
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
SELECT personne.Nom, personne.Prenom, stage.Titre, stage.[Date-debut], stage.D_type_stage
FROM personne INNER JOIN stage ON personne.Num_securite_sociale = stage.Num_securite_sociale;
Les jointures
Michel Tollenaere SQL et relationnel49
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Les jointures
Michel Tollenaere SQL et relationnel50
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Les jointures
Michel Tollenaere SQL et relationnel51
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Les jointures
SELECT personne.Nom, personne.Prenom, stage.D_type_stage, stage.Titre, stage.[Date-debut]
FROM personne LEFT JOIN stage ON personne.Num_securite_sociale = stage.Num_securite_sociale;
Michel Tollenaere SQL et relationnel52
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
1.1 La close GROUP BY
Liste des élèves par ville.SELECT NomElv, VilleElvFROM ElevesGROUP BY VilleElv;
1.2 La close HAVINGElle ne s'utilise qu'avec le GROUP BY et permet de donner la ou les conditions quedoivent remplir ces groupes.
Liste des élèves regroupés par ville où habitent plus de 10 élèves.SELECT NomElv, VilleElvFROM ElevesGROUP BY VilleElvHAVING Count(NomElv) > 10;
Liste des matières où plus de 35 notes ont été données.SELECT NomMatFROM NotesGROUP BY NomMatHAVING Count(Note) > 35;
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel53
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
1.1 La close ORDER BYElle permet de spécifier l'ordre dans lequel vont être affichées les lignes.
Liste des matières dans l'ordre alphabétique.SELECT NomMatFROM MatieresORDER BY NomMat;
Liste des matières par ordre décroissant de coef., puis par ordre alpha. de nom.SELECT NomMatFROM MatieresORDER BY Coef Desc, NomMat Asc;
1.2 RécapitulatifSELECT noms des colonnes à afficherFROM nom de la table où se trouvent les colonnessusmentionnéesWHERE condition(s) à remplir par les lignesGROUP BY condition(s) de regroupement des lignesHAVING condition(s) à remplir par le groupeORDER BY ordre (Asc, Desc) d'affichage
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel54
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
1 Les requêtes multi-tables
Soit 4 tables : Eleves (RefElv, NomElv, PreElv, VilleElv, ClasseElv), Classes (NomCla, Niveau), Cours (NomCla, NomMat, NbHeure), Matieres (NomMat).
1.1 Requêtes où les données sélectionnées sont dans plusieurs tables
Liste des élèves avec leur niveau. SELECT NomElv, PreElv, Niveau FROM Eleves JOIN Classes ON ClasseElv = NomCla WHERE Eleves.ClasseElv = Classes.NomCla;
Liste des élèves et nom des cours qu'ils suivent pendant plus de 3 heures. SELECT NomElv, NomMat FROM Eleves JOIN Cours ON ClasseElv = NomCla WHERE (Eleves.ClasseElv = Cours.Nomcla) AND (Cours.NbHeure > 3)
(il faut faire d'abord les jointures puis les sélections)
DML
(Data Manipulation Language)
Michel Tollenaere SQL et relationnel55
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012DDL
(Data Definition Language)
2 – Création des tables, des attributs et des contraintes d’intégrité
Le DDL (Data Definition Language)CREATEALTERDROPRENAME
3 – Restreindre des droits d’accesGRANTREVOKE
Michel Tollenaere SQL et relationnel56
Cours MSI-2A filière ICLversion 1.4 du 5 novembre 2012
Schéma …. qui peut aussi se représenter
CLIENT
• Num_client : entier long , • Nom : chaine de 30 caractères,• Prenom : chaine de 20 caractères,• Code_postal : chaine de 5 chiffres ,• Telephone : chaine de 10 chiffres
COMMANDE
• Num_commande : entier long , • date : date, • montant : monétaire • client : entier long
ARTICLE
• Code_article : entier long,• Désignation: chaine de 50 caractères,• prix : monétaire
LIGNECOMMANDE
• code_article : entier long ,• Num_commande : entier long ,• quantité : entier