Initiation aux bases de donnes et la programmation
Initiation aux bases de données et à la programmation événementielle Cours N° 2 : Introduction au langage d’interrogation de données. Support de cours de Souheib BAARIR. Page web : pagesperso-systeme. lip 6. fr/Souheib. Baarir/bdvba/support. htm E-mail : souheib. baarir@u-paris 10. fr Université Paris Ouest Nanterre la Défense. 2009 -2010. 1
BD relationnelle • Relations et Algèbre relationnelle : Représentation symbolique (mathématique) de haut niveau des intentions de l’utilisateur. • Sur une machine… : Représentation informatique des Relations ? Les Tables. Langage exprimant les Opérations Relationnelles ? SQL : SELECT att 1, …, attn Requêtes de sélection FROM R 1, …, Rm de base WHERE Conditions 2
Relations tables A = {vert, jaune, rouge}, B = {allumé, éteint}, C = {(vert, allumé), (vert, éteint), (rouge, allumé)} Table B Table C B A B allumé vert éteint rouge allumé éteint Les valeurs d’une On parle de « colonne » « champ » appartiennent à un même domaine En-tête de colonne : le nom du champ Chaque On parle d’ « ligne » est « enregistrement » un n-uplet de la relation 3
Tables : rôles des champs Information (intrinsèque) : définit une donnée particulière. Identifiant (Clé primaire) : ensemble de champs dont les valeurs permettent de distinguer les enregistrements les uns aux autres. Il peut être simple (un seul champ) ou composé (plusieurs champs). Référence (Clé étrangère, Clé externe) : champ qui est clé primaire d’une autre relation. N° étudiant 105239 nom MARTIN BERNARD THOMAS MARTIN prénom Prénom Marie Louis Alice Bernard formation MMIA Gestion Anglais 105250 MARIE Philippe Gestion 105230 105234 105237 Référence adresse code adresse ville Dép. 1 Paris 75 2 Versailles 78 2 3 Nanterre 92 4 4 Suresnes 92 2 3 3 4
Structured Query Language (SQL) • Plusieurs types de requêtes : d’interrogation. de manipulation : insert, update, delete… de définition : create, alter, drop… SELECT [DISTINCT] liste de champs FROM liste de tables [WHERE prédicats] [GROUP BY ordre des groupes] [HAVING condition] [ORDER BY liste de colonnes] Une nouvelle Table : • mettant en relation plus tables, • exhibant de nouvelles données, • cachant des données inutiles, • …
SQL : produit Cartésien Table. R 1 Table. R 2 ville dept Région Rouen 76 28 Centre Lyon 69 69 Rhône-Alpes PRODUIT(Table. R 1, Table. R 2) Table. R 1 • Table. R 2 Table. R 1. dept Table. R 2. dept région Deux champs portent le même nom dans Table. R 1 et Table. R 2 : Rouen 76 28 Centre Lyon 69 28 Centre Rouen 76 69 Rhône-Alpes Différenciés par le nom de la table associé Lyon 69 69 Rhône-Alpes SQL ville SELECT * FROM Table. R 1, Table. R 2 6
SQL : Projection étudiant nom prénom formation adresse MARTIN Marie MMIA Versailles BERNARD Louis Gestion Nanterre THOMAS Alice Anglais Nanterre MARTIN Bernard Anglais Suresnes SQL PROJECTION (nom, prénom) (étudiant) le nom et prénom de tous les étudiants ? étudiant-proj nom prénom MARTIN Marie BERNARD Louis THOMAS Alice MARTIN Bernard SELECT nom, prénom FROM étudiant; 7
SQL : Restriction étudiant nom prénom formation adresse MARTIN Marie MMIA Versailles BERNARD Louis Gestion Nanterre THOMAS Alice Anglais Nanterre MARTIN Bernard Anglais Suresnes toutes les informations sur les étudiants Nanterrois ? SQL RESTRICTION (adresse = Nanterre ) (étudiant) Étudiant-nanterrois nom prénom formation adresse BERNARD Louis Gestion Nanterre THOMAS Alice Anglais Nanterre SELECT * FROM étudiant WHERE adresse = "Nanterre"; 8
SQL : Restriction et projection étudiant nom prénom formation adresse MARTIN Marie MMIA Versailles BERNARD Louis Gestion Nanterre THOMAS Alice Anglais Nanterre MARTIN Bernard Anglais Suresnes le nom et prénom des étudiants Nanterrois. SQL PROJECTION (Nom, prénom) (RESTRICTION(adresse = Nanterre ) (étudiant )) SELECT nom, prénom FROM étudiant WHERE résidence = "Nanterre"; identités étudiants nanterrois nom prénom BERNARD Louis THOMAS Alice 9
SQL : Produit Cartésien, restriction et projection étudiant N° étudiant adresse 105239 nom Nom MARTIN BERNARD THOMAS MARTIN prénom Marie Louis Alice Bernard formation MMIA Gestion Anglais 105250 MARIE Philippe Gestion 105230 105234 105237 Référence adresse code adresse ville Dép. 1 Paris 75 2 Versailles 78 2 3 Nanterre 92 4 4 Suresnes 92 2 3 3 le nom, le prénom et la ville des étudiants qui habitent le Haut-de-Seine. SELECT SQL PROJECTION (Nom, prénom)(RESTRICTION(référence=code adresse et département= 92) (PRODUIT(étudiant, adresse))) étudiant. nom, étudiant. prénom, adresse. ville FROM étudiant, adresse WHERE (adresse. [code adresse]=[référence adresse]) AND (adresse. département=92); Etudiants Hauts-de-Seine nom prénom ville BERNARD Louis Nanterre THOMAS Alice Nanterre MARIE Philippe Suresnes 10
Produit Cartésien, restriction et projection : détails des opérations (théoriquement) PROJECTION(Nom, prénom, ville) (RESTRICTION(référence=code adresse et département= 92) (PRODUIT(étudiant, adresse))) SELECT étudiant. nom, étudiant. prénom, adresse. ville FROM étudiant, adresse WHERE (adresse. [code adresse]=[référence]) AND (adresse. département=92); N° étudiant N° 105230 Nom étudiant nom prénom MARTIN prénom 105230 MARTIN Marie formation référence Référence MMIA Etudiants Hauts-de-Seine Marie MMIA 2 MMIA 105234 105230 BERNARD Louis nom Gestion MARTIN Marie 105237 THOMAS Alice BERNARD Anglais MARTIN Marie 105230 105239 MARTIN Bernard. THOMAS Anglais BERNARD Louis 105234 105250 MARIE Philippe. MARIE Gestion prénom 3 ville Louis 3 Nanterre 2 Nanterre MMIA Alice Gestion Philippe 4 Suresnes code adresse ville département code 1 adresse 2 2 Versailles 3 Nanterre 92 92 92 Suresnes 75 92 Paris 1 2 2 ville 75 78 Paris 75 Versailles 2 3 4 Suresnes 3 4 1 Paris Nanterre 105234 BERNARD Louis Gestion 3 2 Versailles 78 105234 BERNARD Louis Gestion 3 3 Nanterre 92 105234 BERNARD Louis Gestion 3 4 Suresnes 92 … adresse Dép. 2 78 11
Produit Cartésien, restriction et projection : problèmes le nom, le prénom et le nom du département des étudiants, qui habitent le Haut-de-Seine. PROJECTION(Nom, prénom, ville) (RESTRICTION(référence=code adresse et département= 92) (PRODUIT(étudiant, adresse))) SELECT étudiant. nom, étudiant. prénom, adresse. ville FROM étudiant, adresse WHERE (adresse. [code adresse]=[référence]) AND (adresse. département=92) • Relation intermédiaire : • Construction d’enregistrements inutiles ! • Relation finale : • On ne peut pas rajouter d’enregistrements dans la relation finale ! Solution : la jointure. 12
SQL : Jointure SELECT étudiant. nom, étudiant. prénom, adresse. ville FROM adresse, étudiant WHERE (adresse. [code adresse]=[référence]) AND (adresse. département=92); La première clause de restriction est presque équivalente à une jointure Ici, le nom de la table est obligatoire SELECT étudiant. nom, étudiant. prénom, adresse. ville FROM étudiant INNER JOIN adresse ON étudiant. référence = adresse. [Code adresse] WHERE adresse. département = 92; 13
Jointure : détails des opérations SELECT étudiant. nom, étudiant. prénom, adresse. ville FROM étudiant INNER JOIN adresse ON étudiant. référence = adresse. [Code adresse] WHERE adresse. département = 92; N° étudiant 105239 nom MARTIN BERNARD THOMAS MARTIN prénom Marie Louis Alice Bernard formation MMIA Gestion Anglais 105250 MARIE Philippe Gestion 105230 105234 105237 code adresse ville Dép. 1 Paris 75 2 Versailles 78 2 3 Nanterre 92 4 4 Suresnes 92 Référence 2 3 3 105230 MARTIN Marie MMIA 2 2 Versailles 78 105234 BERNARD Louis Gestion 3 3 Nanterre 92 105237 THOMAS Alice Anglais 3 3 Nanterre 92 105239 MARTIN Bernard Anglais 2 2 Versailles 78 105250 MARIE Philippe Gestion 4 4 Suresnes 92 14
- Slides: 14