INFORMATIQUE IUT G.E.A. ¨Deuxième Année¨

Slides:



Advertisements
Présentations similaires
REFERENTIEL DE LA SERIE STG
Advertisements

Modèle Conceptuel des données
Material/Sources: Daniel Bardou, Julie Dugdale &
Bases de données : modèlisation et SGBD
Introduction Pour concrétiser l’enseignement assisté par ordinateur
Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
Formation au référentiel 1 STG (Sciences et technologie de la gestion)
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
Initiation au système d’information et aux bases de données
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les contraintes d’integrité
Initiation au système d’information et aux bases de données
LMD: Langage de Manipulation de Données
Contrôles d'accès aux données
Rappel sur les bases de données et le vocabulaire
BASE DE DONNEES RELATIONNELLES
Initiation à la conception de systèmes d'information
Introduction à la conception de Bases de Données Relationnelles
Les bases de données Cours assuré par: Mlle Smii imen
Chap 4 Les bases de données et le modèle relationnel
Bases de données et SGBD relationnels
Conception des données
L’utilisation des bases de données
Modèle Logique de Données
SQL Partie 3 : (LID : Langage d'interrogation de données)
SYSTEMES D’INFORMATION
MODELE RELATIONNEL concept mathématique de relation
Cours de Base de Données & Langage SQL
Les concepts et les méthodes des bases de données
Manipulation des données Requêtes simples
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Initiation à la conception des systèmes d'informations
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Optimisation de requêtes
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
DOSSIER G10 – La base de données Relationnelle
Bases de données : modèlisation et SGBD
Sélection de colonnes (la projection)
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
Les bases de données Séance 8 Jointures.
Séance /10/2004 SGBD - Approches & Principes.
INTRODUCTION AUX BASES DE DONNEES
INTRODUCTION AUX BASES DE DONNEES Modèle entités-relations
Introduction aux Bases de Données et au langage SQL
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Cours n°2 Implémentation et exploitation
Introduction Module 1.
Le Langage d ’ Interrogation des donn é es (LID) Module 2.
Bases de données – Cours 3
CONCEPTS BD - Synthèse journée 1 :
Cours 11 Entrepôts de données
Modélisation et utilisation Aurélien Marion1 Aurélien Marion
De Arnault Chazareix :
Les bases de données Séance 3 Construction du Modèle Conceptuel de Données.
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
Schéma de base de données Présentation. Conception du schéma logique  Transformation du schéma conceptuel en structures de données supportées par les.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
Transcription de la présentation:

INFORMATIQUE IUT G.E.A. ¨Deuxième Année¨ Jean louis Martineau

Plan du cours 1. Introduction aux bases de données 2. Conception d’un système d’information 3. Interrogation d’une base de données

Plan du cours Chap. 1- introduction

1. Organisation Systémique Le système de gestion : système de pilotage (cerveau de l'entreprise) : il régule et contrôle le système opérant en décidant de son comportement en fonction des objectifs fixés

1. Organisation Systémique Le système d’informations : Ensemble des informations utiles à la vie de l’entreprise Partie la moins visible, mais la plus fondamentale Interface entre le système de gestion et le système opérant

1. Organisation Systémique Système de gestion Informations traitées Informations de décision Système d'information Informations externes Informations vers l'extérieur Informations de représentation Informations d'interactions règlements des fournisseurs règlements des clients Système opérant Produits achetés Produits vendus

Chap. 2 - Conception d’un système d’information 1. Le modèle Entité/Association (E/A) 2. Méthode de construction du modèle E/A 3. Le modèle logique des données

Objectif du chapitre Méthode de conception d’un schéma de base de données : - éviter les redondances de données - démarche méthodique - support graphique

2. Méthode de construction du modèle E/A Construction d’un modèle Entité/Association depuis un problème réel : approche descendante - beaucoup d’entités et d’associations - tâche trop complexe pour être effectuée sans méthode Des erreurs dans le modèle Autre méthode de conception envisageable : - approche ascendante (MERISE) : - des données détaillées vers le modèle E/A - regroupement pour constituer les entités et les associations

2. Méthode de construction du modèle E/A Dictionnaire des données Analyse des dépendances entre les données Constitution des entités et des associations (par regroupement) Établissement schéma Entité-Association final Méthode ascendante : (approche MERISE) Des outils (4) Des règles d'utilisation des outils

2.1. Le dictionnaire des données Objectif : recenser toutes les données qui seront stockées dans le système d’information Pour chaque donnée il existe : - un nom - un type (calculé ou non calculé) - un domaine de définition - une règle de gestion (si le type est calculé) Regroupement de ces informations dans un tableau appelé : le dictionnaire des données

2.1. Le dictionnaire des données Exemple de dictionnaire des données R1 est une règle de gestion permettant de calculer l’attribut MONTTTC depuis d’autres données contenues dans le dictionnaire

2.2. Les dépendances fonctionnelles Exemples de D.F. entre deux attributs : Un numéro de sécurité social implique un, et un seul assuré social Une référence de produit implique un prix NumSecu NomAssuré Par contre l’inverse n’est pas vrai car des personnes homonymes n’ont pas le même numéro de sécu. Pdt Prix Par contre l’inverse n’est pas vrai car plusieurs produits peuvent avoir le même prix

2.2. Les dépendances fonctionnelles Exemples de D.F. avec plusieurs attributs : Jour,Mois,Année Date NuméroProduit,BonCommande QuantitéCommandée NuméroProduit,NumEntrepot QuantitéStock Une valeur d’un identifiant détermine une et une seule occurrence de l’entité

2.2. Les dépendances fonctionnelles Notation : Soient A,B et C des attributs A B On peut écrire de façon équivalente A B,C A C Exemple : NuméroClient NomClient, PrénomClient Les dépendances fonctionnelles portent sur des ensembles d’attributs

2.2. Les dépendances fonctionnelles Construction du graphe des dépendances fonctionnelles : Etape 1 : utiliser tous les attributs non calculés du dictionnaire des données Etape 2 : déterminer les D.F. simples et composées

2.3. Construction du schéma E/A Construction du schéma E/A depuis le graphe des D.F. - 3 règles permettent d’établir une esquisse du schéma E/A Présentation des règles sur un exemple : Numéro commande Référence produit Prix unitaire désignation Qté Numéro client Adresse client Nom client Date commande Code représentant Nom représentant

2.3. Construction du schéma E/A Règle 1 : Les dépendances fonctionnelles sans successeur sont regroupées en entités. Les origines des arcs désignent les attributs identifiants de ces entités. Application sur l’exemple : Numéro commande Référence produit Prix unitaire désignation Qté Numéro client Adresse client Nom client Date commande Code représentant Nom représentant

2.3. Construction du schéma E/A Les deux autres règles gèrent les associations et les attributs isolés : Règle 2 : Les arcs restants mettent en évidence les associations. Les attributs restants dans le graphe des dépendances fonctionnelles sont les attributs des associations. Règle 3 : les attributs isolés constituent des entités isolées. Les règles de gestion permettent de trouver les cardinalités.

2.3. Construction du schéma E/A Résultat de l’application de la règle 1 sur l’exemple Commande Numéro Commande Date commande Produit Référence produit Désignation Prix unitaire Client Numéro Client Nom client Adresse client Représentant Code représentant Nom représentant Qté

2.3. Le modèle Entité/Association Définition L'information permet de représenter des connaissances. Une information se décompose en trois niveaux : - l'entité concernée par l'information. C'est l'objet, le concept ou l'individu dont il est question. - les attributs (ou propriétés): ce sont les propriétés et les caractéristiques utilisées pour décrire l'entité. - les valeurs d'un attribut permettent de définir une entité donnée.

2.3. Le modèle Entité/Association Définition : l'occurrence d'une entité est l'ensemble des valeurs des attributs de cette entité. Entité Facture Attributs : Nom Qté, Désignation Montant Date « Définition des informations » Format d’une facture « occurrences d’une entité » liste des factures (valeurs)

2.3 Le modèle Entité/Association Définition : Une entité est un concept, un objet ou une personne du monde réel. Elle possède : une existence propre des occurrences multiples au moins un attribut identifiant (souligné). Nom Entité Attribut Identifiant 1 …. Attribut Identifiant n Attribut 1 … Attribut m Représentation graphique d’une entité dans le modèle E/A

2.3. Le modèle Entité/Association Exemple d’entité : Un fournisseur Attributs : liste des informations utiles à la gestion d’un fournisseur Fournisseur Numéro Nom Fournisseur Adresse Fournisseur Nom Contact Numéro Téléphone Numéro Fax Adresse e-mail Attribut identifiant : Numéro - code créé par l’entreprise - détermine un et un seul fournisseur

2.3 Le modèle Entité/Association Concept d’Association : toutes les informations n’ont pas d’existence intrinsèque Elles ne peuvent pas être regroupées dans une entité Exemple : affectation d’un salarié dans un service Salariés Numéro salarié Nom Fonction Rémunération Service Numéro service Localisation Affectation

2.3. Le modèle Entité/Association Exemple (suite) Affectation d’un salarié dans un service : Problème : action dépendant de deux entités : - salarié - service La notion d’association va permettre de représenter les dépendances entre les entités

2.3. Le modèle Entité/Association Définition : Une association regroupe les informations relatives à une ou plusieurs entités définies par : absence d'existence intrinsèque, au moins une occurrence, le nombre d'entités associées, - un nom traduisant généralement une action. Nom Association Attribut 1 … Attribut m Nom Association Représentation graphique des associations

2.3 Le modèle Entité/Association Exemple : Salariés Numéro salarié Nom Fonction Rémunération Service Numéro service Localisation Travaille dans Participation de l’entité à l’association L'identifiant d'une association est implicitement constitué par tous les identifiants des entités qui participent à l'association.

2.3. Le modèle Entité/Association Règles de construction du modèle Entité-Association : Deux entités ne sont jamais reliées ensembles, Deux associations ne sont jamais reliées ensembles. Participation Autorisée Nom Entité 1 Identifiant 1 Attribut 1.1 Attribut 1.m Nom Entité 2 Identifiant 2 Attribut 2.1 Attribut 2.m Nom Association Nom Association Participations interdites

2.3. Le modèle Entité/Association Exemple (suite) : modélisation de la hiérarchie entre salariés Salariés Numéro salarié Nom Fonction Rémunération Service Numéro service Localisation Travailler dans Hiérarchique de Est dirigé par Est le chef de Rôle de la participation: explication pour lever les ambiguïtés

2.3. Le modèle Entité/Association Permet Permet pas de représenter le lien entre les entités Connaître le nombre d’occurrences concernées par l’association Une association Solution : indiquer le nombre d’occurrences de l’association concernées par la participation Les cardinalités

2.3. Le modèle Entité/Association Définition : Cardinalité La Cardinalité précise pour chaque arc du modèle E/A - le nombre minimum d'occurrences d'une association liées à une occurrence d'entité. - le nombre maximum d'occurrences d'une association liées à une occurrence d'entité. Remarque : si le nombre n'est pas connu précisément, une variable est utilisée (par exemple N ou M). Entité Association Min,Max Représentation graphique

2.3. Le modèle Entité/Association Exemple : commande de produits par des clients 0,N Combien de commandes au minimum peut faire un client donné : 0 Combien de commandes au maximum peut faire un client donné : N Client Numéro Nom Adresse Produit Référence Désignation Prix unitaire  HT Commander Qté 0,N Combien de commandes au minimum peut contenir un produit donné : 0 Combien de commandes au maximum peut contenir un produit donné : N

2.3. Le modèle Entité/Association Exemple 2: Salariés Numéro salarié Nom Fonction Rémunération Encadre Est dirigé par Est le chef de (0,1) (0,N) Explications des cardinalités dans un tableau séparé du modèle E/A

2.3. Le modèle Entité/Association Exemple 3 : Client NumClient Nom Adresse Dépôt NumDépôt Livrer Nb colis (0,N)

2.3. Le modèle Entité/Association Définition : Contrainte d'Intégrité Fonctionnelle (CIF) Une cardinalité (1;1) est appelée une Contrainte d'Intégrité Fonctionnelle CIF Salariés Numéro salarié Nom Fonction Rémunération Service Numéro service Nom Localisation 1,1 Travailler dans 1,N A chaque occurrence de « salarié » correspond une, et une seule, occurrence de « travailler dans »

2.3. Construction du schéma E/A Résultat de l’application des règles 2 et 3 sur l’exemple : Commande Numéro Commande Date commande Produit Référence produit Désignation Prix unitaire Client Numéro Client Nom client Adresse client Représentant Code représentant Nom représentant Compose Qté Obtient Passer 0,N 1,N 1,1

2. Le modèle Entité/Association Exercice : Compléter les cardinalités Produits NumProd Désignation PrixHT Etat Stock Qté Stock Stock Mini Stocker (?,?) 1,1 (?,?) 1,1 Atelier NumAtel Nom Mission Produit NumProd Désignation Stocker (?,?) 0,N (?,?) 0,N

2. Le modèle Entité/Association Exercice (suite) : Produit NumProd Machine NumMach Désignation Maintenance Fabrique (?,?) 1,N (?,?) 1,N Formation NumFour Désignation Date Salarié NumSal Nom Adresse Participe (?,?) 0,N (?,?) 0,N

2. Le modèle Entité/Association Exercice (suite) : Matière NumMat Libellé Année Profs NumProf Nom Spécialité (?,?) 1,N Enseigne Date Salle (?,?) 1,N (?,?) 1,N Etudiant NumEtd Nom Age

2. Le modèle Entité/Association Guide Gastronomique (?,?) Proposer Vin Prix RESTAURANT Code Nom Adresse VIN Récolte Région JOUR Ouvrir Horaire Midi Horaire Soir COULEUR Est Proposer Plat PLAT PlaceRepas Recommander Accompagner 0,N (?,?) 0,N Complétez les Cardinalités (?,?) 1,N (?,?) 1,1 1,N (?,?) (?,?) 0,N (?,?) 0,N (?,?) 1,N 0,1 (?,?) (?,?) 0,N (?,?) 0,N (?,?) 0,1

2. Le modèle Entité/Association Compagnie aérienne AVION Numéro DateRévision Qualifier TYPE AVION Type Capacité Rayon Action PILOTE DESC. VOLS Horaire VilleDépart VilleArrivée Vols Est un (?,?) 1,1 (?,?) 1,N a) Complétez les Cardinalités b) modifiez ce schéma pour tenir compte des escales (?,?) 0,N (?,?) 0,N (?,?) 1,1 (?,?) 1,N (?,?) 0,N

2. Le modèle Entité/Association Entreprise de Maintenance Règle de Gestion : Une réparation concerne une intervention Une réparation peut concerner plusieurs salariés Une intervention peut nécessiter plusieurs réparations Un salarié est responsable d’une intervention Un salarié est affecté à un atelier et éventuellement à plusieurs services

2. Le modèle Entité/Association Entreprise de Maintenance Atelier NumAtelier LibelAtelier Service NumService NbEmploy Spécialité Client NumClient NomClient AdresseCli CpClient VilleClient Matériel NumMat NomMat TypeMat Salarié NumSal NomSal AdresseSal CpSal VilleSal TélSal Fonction Réparation NumRepa CoutRepa Intervention NumInter Nature Date Demande Responsable Travaille Regroupe Chef de Utilise Concerne Effectue Compose (?,?) 1,N (?,?) (?,?) 1,N 1,1 Complétez les cardinalités (?,?) 0,N (?,?) 0,N (?,?) 0,N 0,N (?,?) (?,?) 0,N (?,?) 0,N 0,N (?,?) 0,N (?,?) (?,?) 1,N (?,?) 0,N (?,?) 1,1 (?,?) 1,N (?,?) 1,1 (?,?) 1,1 1,N (?,?)

2.4. Le modèle logique des données Dictionnaire des données indépendant de l’organisation informatique des données Etablissement schéma Entité-Association final Choix d’une organisation (relationnelle) Modèle Logique des données

2.4. Le modèle logique des données Le modèle logique des données relationnel (Codd, 1970): Les données des entités et des associations sont mémorisées dans des relations : RELATION(Attribut 1, …, Attribut n) attribut Nom de la relation Attribut identifiant

2.4. Le modèle logique des données Principe de transformation des entités et des associations : schéma Entité/Association 4 règles de passage Modèle logique de données relationnel

2.4. Le modèle logique des données Règle 1 : Transformation des entités - Toutes les entités deviennent des relations ; - Les identifiants deviennent des clés primaires. Règle 2 : Transformation des associations binaires (?;1) - (?;N) Placer l'attribut clé de la relation (?;N) dans la relation (?;1), ainsi que tous les attributs de l'association.

2.4. Le modèle logique des données Exemple d’application des règles 1 et 2 : Salarié NumSal Nom Fonction Service NumServ Spécialité Application règle 2 : Regoupe DateArrivée (1,1) (1,N) Application règle 1 : SERVICE(NumServ, Spécialité) SALARIE(NumSal,Nom,Fonction, NumServ) )

2.4. Le modèle logique des données Règle 3 : Transformation les associations n-aires (?;N) - (?;N) Transformer l'association en une relation contenant : - les clés primaires des deux entités reliées par l'association les attributs de l'association Commande NumCmde DateCmde Article RefArticle Libellé PrixUnitaire Concerner Qté Cmdée (0,N) (1,N) COMMANDE(NumCmde, DateCmde) ARTICLE(RefArticle,Libellé, PrixUnitaire) Règle 1 CONCERNER(NumCmde,RefArticle,Qté Cmdée) Règle 3

2.4. Le modèle logique des données Règle 4 : Transformation des associations réflexives Une association réflexive, si elle ne correspond pas avec la règle 2, se transforme en une relation avec deux attributs qui sont la duplication de la clé de l'entité, et toutes les deux renommées. Les attributs de l'association deviennent des attributs de la relation ainsi créée. Parent Personne NumPers Nom Prénom (0,N) Est Parent (0,N) Enfant PERSONNE(NumPers, Nom, Prénom) ESTPARENT(NumParent,NumEnfant) Règle 1 Règle 4

Tables Relationnelles Illustration : Création d’une table avec Access Nom Attribut Clé Domaine de l’attribut

Tables Relationnelles Visualisation du contenu d’une table Access

Cohérence des données Représentation des liens avec Access (attention : lien=relation) Liens dessinés avec la souris

Cohérence des données Avec Access : double clic sur un lien pour définir les contraintes Contraintes

Cohérence des données Contrainte d’entité avec Access : à la création de la table Attribut clé sélectionné Null Interdit

Cohérence des données Contrainte de domaine avec Access : à la création de la table Attribut sélectionné Assertion logique définissant une contrainte de domaine

Chap. 3 - Langages de requêtes 2. QBE 3. SQL 4. Les transactions

Principales Caractéristiques : 3. Introduction Langages de requêtes : partie d ’un SGBD permettant d’interroger une base de données Principales Caractéristiques : simplicité : accessible à des non informaticiens complet : doit permettre toutes les interrogations et manipulation de la base efficace : fournir les résultats dans un temps raisonnable

Principaux langages pour les SGBD relationnels 3. Introduction Principaux langages pour les SGBD relationnels SQL : Structured Query Language QBE : Query By Example - Ecriture des requêtes sous la forme d’un texte en anglais - la référence dans le domaine - Support graphique sous la forme de tableau - présentation des requêtes en construisant la relation résultat - moins complet que SQL

3. QBE QBE : Query By Example (Interroger par un exemple) Formulation de la requête en spécifiant la forme de la réponse - Formulation graphique (à la souris) - supporté par ACCESS

3. QBE QBE est une sur couche graphique à SQL Requête équivalente SQL Ecrire requête QBE Traduction automatique Exécution Relation résultat Vu par l’utilisateur SGBD avec QBE

3. QBE Relations utilisées (FROM) Attributs du résultat (SELECT) Attributs avec une condition (WHERE) SELECT Nom,Prénom FROM Client WHERE NumClient<100

3. QBE Expression des jointures : Jointure entre les tables Client et Facture

3. SQL SQL : Structured Query Language Langage Normalisé : supporté par de nombreux SGBD Normes 1989 et 1992 Access supporte partiellement ces deux normes

3. Éléments de base Les valeurs logiques peuvent prendre trois états différents : - VRAI (TRUE) - FAUX (FALSE) - INCONNUE (NULL) Incidence sur les tables de vérité Exemple : l’opérateur ET logique

3. Éléments de base (Opérateurs logiques ...suite) Opérateur OU logique : Opérateur Complémentation :

3. Éléments de base Types de requêtes SQL : - Recherche de données : clause SELECT...FROM...WHERE - modification de données : clause UPDATE - Ajout de données : clause INSERT - ...

3. Recherche de données Requête de recherche de données : - Manipule des tables ou des relations (résultats d’autres requêtes) - résultat : relation Table  Relation Enregistrement permanent dans la base de données Enregistrement temporaire

3. Recherche de données Structure générale d’une requête de recherche de données : Exemple : NOMCLIENT Mr Robert Mr Marcel ... Exécution SELECT NOMCLIENT FROM FACTURE Texte de la Requête Relation résultat

3. Recherche de données Sélectionner un attribut d’une relation de la clause FROM SELECT NomRelation.NomAttribut Sélectionner tous les attributs d’une relation de la clause FROM SELECT NomRelation.* Sélectionner tous les attributs des relations utilisées dans la clause FROM SELECT *

3. Recherche de données SELECT Relation.Attribut Relation.Attribut .... Relation.Attribut Renommer le nom d’un colonne du résultat (clause AS) : SELECT Relation.Attribut AS MonAttribut .... MonAttribut

3. Recherche de données A) PROJECTION (éliminer des colonnes du résultat) SELECT <liste des attributs à présenter dans la relation résultat> FROM <Nom de la relation utilisée> Exemple : en SQL : SELECT Nom,Couleur FROM PeintureVoiture

3. Recherche de données B) SELECTION (éliminer des lignes du résultat) FROM <Nom de la relation> WHERE <conditions> Exemple : SELECT * FROM CouleurVoiture WHERE Moteur="Essence" SQL

3. Recherche de données B1) SELECTION dans un texte Recherche du type : "*cice" mot se terminant par "cice". "exer* " mot commençant par "exer" "ex*ce" mot débutant par "ex" et se terminant par "ce". Utilisation de la clause LIKE (comme) SELECT NomClient FROM Client WHERE NomClient LIKE "DUR*"

3. Recherche de données B2) SELECTION dans une liste Vérifier l’appartenance à un mot d’une liste : Clause IN WHERE Attribut IN ( <liste de valeurs>) Exemple : SELECT Modele,Moteur,Couleur FROM Voiture WHERE Couleur IN ("Verte","Grise")

3. Recherche de données B3) SELECTION dans un intervalle Vérifier l’appartenance à un intervalle de valeurs: Clause BETWEEN WHERE attribut BETWEEN val_debut AND Val_fin Exemple : SELECT NomClient, Montant FROM Client WHERE Montant BETWEEN 10 AND 1000

3. Recherche de données C) Produit Cartésien Produit cartésien : R1R2 ... Rn SELECT * FROM R1,R2,....,Rn Exemple : SQL SELECT * FROM Voiture,OptionPeinture

3. Recherche de données D) Jointure C’est une sélection sur le produit cartésien : SELECT * FROM R1,R2 WHERE <condition rapprochement R1.Attribut = R2.attribut> Exemple : SELECT * FROM Fournisseur,Historique WHERE Fournisseur.Four=Historique.Four

3. Recherche de données La norme SQL2 (1992) apporte une nouvelle formulation Les jointures sont exprimées dans la clause FROM SELECT * FROM R1 INNER JOIN R2 ON R1.attribut=R2.Attribut Exemple précédent : SELECT * FROM Fournisseur INNER JOIN Historique ON Fournisseur.Four=Historique.Four

3. Recherche de données E) Requête d’UNION de deux relations SELECT * FROM Client1 UNION SELECT * FROM Client2 SQL Formulation générale d’une requête UNION : SELECT … FROM … WHERE UNION

3. Recherche de données F) Trier les lignes du résultat Clause ORDER BY <liste ordonnée attributs > [ASC;DESC] Ordre croissant Ordre décroissant Extension de la clause select from where : SELECT ... FROM ... WHERE ... ORDER BY .... [ASC;DESC]

3. Recherche de données Exemple : liste des noms des clients par ordre alphabétique SELECT Nom,Prénom FROM Client ORDER BY Nom,Prénom ASC Exemple : même question dans l’ordre inverse SELECT Nom,Prénom FROM Client ORDER BY Nom,Prénom DESC

3. Recherche de données Exemples de requêtes : Modèle relationnel et contrainte d’intégrité référentielle: Client(numcli,nom,prenom,rue,CodePostal,Ville) Facture(numfac,numcli,montant,date) Requête : Liste des clients (Nom,Prenom) SELECT nom,prenom FROM Client

3. Recherche de données Liste de numéro des montants des factures du client DUPONT : SELECT numfac,montant FROM FACTURE,CLIENT WHERE FACTURE.numcli=CLIENT.numcli Autre formulation (SQL2-1992) : SELECT numfac,montant FROM FACTURE INNER JOIN CLIENT ON FACTURE.numcli=CLIENT.numcli

3. Recherche de données Liste des factures d’un montant supérieur à 20000F SELECT * FROM Facture WHERE montant > 20000 Même question avec les noms des clients dans la liste résultat : SELECT Client.nom, Facture.* FROM Facture INNER JOIN Client ON Client.numcli=Facture.numcli WHERE montant > 20000

3. Recherche de données Même question pour les clients de la vienne et par ordre alphabétique SELECT Client.nom, Facture.* FROM Facture INNER JOIN Client ON Client.numcli=Facture.numcli WHERE montant > 20000 AND CodePostal LIKE "86* » ORDER BY Client.nom ASC

3. Fonctions et agrégats Dans ce qui précède Select From Where... permet : - Extraction de données - mais pas de calculs Deux types de calculs sont envisageables : - en ligne : utilisation de fonctions pour créer des colonnes - en colonne : agrégats pour regrouper des lignes et faire des calculs

3. Fonctions et agrégats A) Fonctions (calculs en ligne) Exemple : MONTANT_TTC=MONTANT_HT  20.6 Constante Colonnes existantes Nouvelle colonne liée au calcul Solution SQL : SELECT MONTANT_HT*TVA AS MONTANT_TTC FROM ...

3. Fonctions et agrégats Exemple : Compléter la relation en calculant le montant TTC Facture(numfac,numcli,montant_ht) Solution : SELECT *, montant_ht*20.6 AS montant_ttc FROM Facture

3. Fonctions et agrégats B) Agrégats (calculs en colonne) Agrégats : Ensemble d’attributs d’une relation, utilisé pour regrouper des enregistrements durant des calculs sur les colonnes n’appartenant pas à cet ensemble. Exemple : calcul de la somme des montants des factures par client Facture ... Numcli Montant 1 1000 1 2000 2 4000 Regroupement client 1 Regroupement client 2

3. Fonctions et agrégats Après regroupement par numéro de client et cumul des montants Facture Numcli Montant 1 3000 2 4000 Il faut donc préciser dans la requête SQL : - les attributs utilisés pour le regroupement (agrégats) - les opérations utilisés

3. Fonctions et agrégats Préciser les agrégats : clause GROUP BY SELECT A1,A2,A3,fonctions de calcul FROM .... GROUP BY A1,A2,A3 Listes identiques d’attributs

3. Fonctions et agrégats Les fonctions de calculs sur les attributs non agrégats: Descriptif SQL SOMME(Attribut) SUM (Attribut) MOYENNE(Attribut)  AVG (Attribut) MNIMUM(Attribut) MIN(Attribut) MAXIMUM(Attribut)  MAX(Attribut) COMPTE  COUNT(*) Exemple : SELECT numcli,SUM(Montant) FROM Facture GROUP BY numcli

3. Fonctions et agrégats a) sélection avant regroupement (clause Where) b) sélection après regroupement (clause Having) SELECT ... FROM ... WHERE <sélection avant regroupement> GROUP BY ... SELECT ... FROM ... GROUP BY ... HAVING <sélection après regroupement>

3. Fonctions et agrégats Exemples : a) clients avec cumuls des factures de plus de 2000 F SELECT numcli,SUM(Montant) FROM Facture WHERE montant>2000 GROUP BY numcli b) clients avec un cumul de facture de plus de 100000F SELECT numcli,SUM(Montant) FROM Facture GROUP BY numcli HAVING SUM(Montant)>100000

3. Synthèse sur SELECT FROM WHERE La clause SELECT permet de tout combiner ! SELECT <liste d’attributs>,fonctions FROM relations et jointure INNER JOIN ... ON condition rapprochement WHERE <sélection avant regroupement> GROUP BY <attributs agrégats> HAVING <sélection après regroupement> ORDER BY <attributs pour le tri> C’est très puissant - mais il faut réfléchir

3. Synthèse sur SELECT FROM WHERE Enregistrement de la relation résultat dans une nouvelle table (si elle existe déjà elle sera effacée !) SELECT <liste d’attributs>,fonctions INTO NomTable FROM relations et jointure INNER JOIN ... ON condition rapprochement WHERE <sélection avant regroupement> GROUP BY <attributs agrégats> HAVING <sélection après regroupement> ORDER BY <attributs pour le tri> À ajouter à la fin du SELECT

3. Les sous-requêtes SQL autorise l’imbrication des requêtes SELECT après un comparateur =,<,>,>=,<= dans une expression IN dans une expression EXISTS La sous-requête est une relation avec une colonne (liste de valeurs possibles) Sous-requête quelconque Intérêt : Avoir des écritures très concises pour traiter des requêtes complexes.

3. Les sous-requêtes a) Sous-requête après un comparateur La clause WHERE s’écrit alors de la façon suivante : Comparateur (< requête SELECT … FROM … WHERE > ) Exemple :requête qui retourne de le nom d'un produit et son prix, parmi les produits ayant un prix de produit du Marché numéro 1 Sous-requête SELECT NomProduit, Prix FROM Produits WHERE Prix = (SELECT PrixUnitaire FROM Produit WHERE NumMarche = 1) 

3. Les sous-requêtes b) Sous-requête après l'instruction IN La clause WHERE s'écrit de la façon suivante: IN (< requête SELECT … FROM … WHERE > ) Exemple : recherche les produits dont les couleurs appartiennent à la relation NouvelleCouleur et sont du type 'Nacré'. SELECT NumProduit, NomProduit FROM Produit WHERE Couleur IN (SELECT Couleur FROM NouvelleCouleur WHERE TypeCouleur='Nacré')

3. Les sous-requêtes c) Sous-requête après l'instruction EXISTS But : Tester l’existence (on non) d’enregistrements dans le résultat de la sous-requête WHERE [NOT] EXISTS (< requête SELECT … FROM … WHERE > ) Remarques Le NOT permet de tester l’inexistence Il doit exister une jointure entre les relations de la requête principal et la sous-requête

3. Les sous-requêtes Exemple : la liste des vendeurs de l'entreprise n'ayant pas passé des commandes. Liens entre les deux requêtes SELECT Prénom, Nom FROM Vendeur WHERE NOT EXISTS (SELECT NumCmde FROM Commandes WHERE Commandes.NumVendeur= Vendeur.NumVendeur)

3. Sous-requêtes Sous-Requête et Jointure : SELECT R1.* FROM R1,R2 WHERE R1.a=R2.b Jointure SELECT R1.* FROM R1 WHERE EXISTS (SELECT * FROM R2 WHERE R1.a=R2.b) Sous-Requête Ces deux requêtes ont le même résultat

3. Jointures externes Dans une jointure classique : - tous les enregistrements ne vérifiant pas la condition de rapprochement ne sont pas dans la relation résultat. Une jointure externe va permettre de conserver tout ou partie de ces informations. Les informations manquantes seront représentées par la valeur NULL Lorsque la condition de rapprochement est vérifiée, l’opération est identique à la jointure classique

3. Jointures externes La condition de rapprochement Fournisseur.Four = Historique.Four est vérifiée pour chaque couple d’enregistrements des deux relations

3. Jointures externes jointure externe à gauche : Syntaxe dans la clause FROM : Relation1 LEFT JOIN Relation2 ON condition_rapprochement Résultat : les enregistrements de Relation1 sans correspondance dans Relation2 sont conservés

3. Jointures externes Exemple de jointure externe à gauche : Table1 Table 2 NumFacture Fournisseur Montant NumFour NomFour 1 1 1000 1 TotoSA 2 2 5000 Select * From Table1 LEFT JOIN Table 2 ON Fournisseur=NumFour NumFacture Fournisseur Montant NumFour NomFour 1 1 1000 1 TotoSA 2 2 5000 NULL NULL

3. Jointures externes jointure externe à droite : Syntaxe dans la clause FROM : Relation1 RIGHT JOIN Relation2 ON condition_rapprochement Résultat : les enregistrements de Relation2 sans correspondance dans Relation1 sont conservés

3. Jointures externes Exemple de jointure externe à gauche : Table1 Table2 NumFacture Fournisseur Montant NumFour NomFour 1 1 1000 1 TotoSA 2 2 5000 Select * From Table2 RIGHT JOIN Table1 ON Fournisseur=NumFour NumFour NomFour NumFacture Fournisseur Montant 1 TotoSA 1 1 1000 NULL NULL 2 2 5000

3. Jointures externes Tester la valeur NULL dans une relation : Clause IS NULL ou bien IS NOT NULL dans la clause WHERE Exemple : trouver les factures sans fournisseur SELECT Table1.* FROM Table1 LEFT JOIN Table2 ON Fournisseur=NumFour WHERE Table2.NumFour IS NULL

3. Jointures externes Jointure externe avec ACCESS : Dans l’assistant double-clic sur la jointure LEFT JOIN RIGHT

3. Requête INSERT Insertion d’enregistrement dans une table : clause INSERT L ’exécution de la requête va insérer des enregistrements depuis : le résultat d’une requête SELECT...FROM...WHERE la liste des valeurs d’un enregistrement

3. Requête INSERT Insertion depuis la liste des valeurs des attributs : INSERT INTO <nom de la table>(<Attribut1,…, Attribut n) VALUES (Attribut1,…, Attribut n) Eventuellement sous-ensemble des attributs de la table Même ordre dans les listes des attributs

3. Requête INSERT Exemple : INSERT INTO Client (Nom,Prénom,Adr) VALUES (C,c,3) Client Nom Prénom Adr A a 1 B b 2 Client Nom Prénom Adr A a 1 B b 2 C c 3 Avant Après

3. Requête INSERT Insertion depuis une requête SELECT : INSERT INTO <nom de la relation R1> SELECT <liste des attributs renommés comme dans la relation R1> FROM <liste des relations utilisées> WHERE <conditions> Exemple : insertion des nouveaux clients INSERT INTO Clients SELECT * FROM ClientsNouveaux 

3. Requête UPDATE Requête de mise-à-jour (modification) d’enregistrements UPDATE <nom de la relation> SET <Attribut> = <expression> WHERE <condition> Exemple : augmentation de 15% des produits de luxe et baisse de 500 F des coûts d’expédition UPDATE Produit SET PrixVente = PrixVente * 1.15 , Expedition=Expedition-500 WHERE TypeProduit = 'LUXE';

3. Requête DELETE Suppression d’enregistrements dans une table DELETE FROM <nom de la table> WHERE <condition de recherche> Exemple : Suppression des factures antérieures à 1990 DELETE FROM HistoriqueFacture WHERE Annee<1990