50
1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Michel Tollenaere SQL et Cours de Management des Systèmes d’Information http://www.g-scop.inpg.fr/ ~tollenam/msi/ Objectifs : Programmation Évaluation :

Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

Embed Size (px)

Citation preview

Page 1: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

1

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

Cours de Management des Systèmes d’Information

http://www.g-scop.inpg.fr/~tollenam/msi/

Objectifs :

Programmation

Évaluation :

Page 2: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

2

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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 - 2007ORACLE (Oracle corp.)SQL Server (Microsoft)Ingres (Computer Associates)

http://cerig.efpg.inpg.fr/tutoriel/bases-de-donnees/sommaire.htm

Page 3: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

3

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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 ?

• Consulter• Ajouter• Modifier• Supprimer

Page 4: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

4

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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}

Page 5: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

5

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

• 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 54 ansné à l’étranger

12-10-200910-12-2009588 DGA 3806-07-37-78-72+33-6-07-37-78-7215605991310881 500,231500.28

588 DGA 38Immatriculation :un véhicule récent immatriculé dans l’Isère

Page 6: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

6

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 7: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

7

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 8: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

8

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 9: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

9

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 10: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

10

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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 )

Page 11: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

11

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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} )

Page 12: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

12

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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 :

Page 13: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

13

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

Page 14: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

14

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 15: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

15

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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 )

Page 16: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

16

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 17: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

17

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 18: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

18

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 19: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

19

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 20: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

20

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 21: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

21

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 22: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

22

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 23: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

23

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 24: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

24

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 25: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

25

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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.

Page 26: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

26

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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/

Page 27: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

27

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 28: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

28

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 29: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

29

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 30: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

30

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 31: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

31

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 32: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

32

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 33: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

33

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 34: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

34

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 35: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

35

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

La somme des coefficients

Matieres

• NomMat • Coef• Intitulé

SELECT Sum(Matiere.Coef) AS SommeDeCoefFROM Matiere;

SommeDeCoef

11

DML

(Data Manipulation Language)

Page 36: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

36

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 37: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

37

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 38: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

38

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

dans MS Access

DML

(Data Manipulation Language)

Page 39: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

39

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 40: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

40

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 41: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

41

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 42: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

42

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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

Page 43: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

43

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

Les jointures

Page 44: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

44

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

Les jointures

Page 45: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

45

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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;

Page 46: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

46

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 47: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

47

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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)

Page 48: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

48

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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, NiveauFROM Eleves, ClassesWHERE Eleves.ClasseElv = Classes.NomCla;

Liste des élèves et nom des cours qu'ils suivent pendant plus de 3 heures.SELECT NomElv, NomMatFROM Eleves, CoursWHERE (Eleves.ClasseElv = Cours.Nomcla) AND (Cours.NbHeure > 3)

(il faut faire d'abord les jointures puis les sélections)

DML

(Data Manipulation Language)

Page 49: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

49

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

DDL

(Data Definition Language)

2 – Création des tables, des attributs et des contraintes d’intégrité

Le DDL (Data Definition Language)CREATE, ALTER, DROP, RENAME

3 – Restreindre des droits d’accesGRANTREVOKE

Page 50: Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation tollenam/msi

50

Cours MSI-2A filière ICLversion 1.1 du 2 novembre 2010

Michel Tollenaere SQL et relationnel

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