Algèbre : suite et fin suivi du Chapitre 6

Documents pareils
Le langage SQL Rappels

1 Introduction et installation

Langage SQL : créer et interroger une base

Cours 4 : Agrégats et GROUP BY

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Les bases de données

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

SQL Historique

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Le Langage SQL version Oracle

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

TD n 10 : Ma première Base de Données

TP Bases de données réparties

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

16H Cours / 18H TD / 20H TP

Introduction aux Bases de Données 2004/2005

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Introduction au Système de Gestion de Base de Données et aux Base de Données

Vincent Augusto

Optimisation SQL. Quelques règles de bases

Cours SQL. Base du langage SQL et des bases de données

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

Systèmes de Gestion de Bases de Données

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

MySQL / SQL EXEMPLES

SOMMAIRE. Travailler avec les requêtes... 3

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Cours: Les Jointures 1

MODE OPERATOIRE OPENOFFICE BASE

FileMaker 13. Guide de référence SQL

Durée : 4 heures coefficient : 4 Le sujet se présente sous la forme de deux dossiers indépendants

Bases de données avancées Introduction

INTRODUCTION AU DATA MINING

Le Langage De Description De Données(LDD)

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

INTRODUCTION : Données structurées et accès simplifié

Session S12 Les bases de l optimisation SQL avec DB2 for i

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Introduction aux Bases de Données

Bases de Données relationnelles et leurs systèmes de Gestion

Excel avancé. Frédéric Gava (MCF)

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Oracle Décisionnel : Modèle OLAP et Vue matérialisée D BILEK

Bases de données Cours 4 : Le langage SQL pour ORACLE

Bases de Données Avancées

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Encryptions, compression et partitionnement des données

Information utiles. webpage : Google+ : digiusto/

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Les bases de l optimisation SQL avec DB2 for i

Les Entrepôts de Données

Quelques aspects du Relationnel-Objet du SGBD Oracle

Base de données relationnelle et requêtes SQL

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Auto-évaluation SQL. Document: f0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

L exclusion mutuelle distribuée

Les bases fondamentales du langage Transact SQL

Évaluation et optimisation de requêtes

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Exercices et solutions

LE LANGAGE SQL2 1. INTRODUCTION

Bases de Données. Plan

Bases de données et sites WEB

SQL pour. Oracle 10g. Razvan Bizoï. Tsoft, Groupe Eyrolles, 2006, ISBN : , ISBN 13 :

Bases de données. PTSI Lycée Eiffel. 28 février 2014

Bases de données relationnelles

Interpréteur d algèbre relationnelle

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Initiation à l algorithmique

Cours de Probabilités et de Statistique

SAP BusinessObjects Web Intelligence (WebI) BI 4

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

Année Universitaire 2009/2010 Session 2 de Printemps

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

CREATION WEB DYNAMIQUE

Thème : Gestion commerciale

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

1 Modélisation d une base de données pour une société de bourse

Business Intelligence

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

SUPPORT SQL. Thierry GRANDADAM

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

TP 8: LES OPERATEURS ENSEMBLISTES

TP Contraintes - Triggers

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

S8 - INFORMATIQUE COMMERCIALE

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Patrice BOURSIER. Professeur, Univ. de La Rochelle. Bases de Données. Notes de cours

Transcription:

Algèbre : suite et fin suivi du Chapitre 6 http://www.lri.fr/~cohen/bd/bd.html Requêtes avancées en algèbre relationnelle (1/3) Q1 : Quelles sont les tailles de disques durs qui sont utilisées par au moins 2 PCs? Q2 : Quels sont les constructeurs vendant l'ordinateur le plus rapide? Ces requêtes sont difficiles à exprimer en algèbre car il faut compter (Q1) ou calculer un maximum (Q2) On a besoin de comparer des lignes, on ne sait que comparer des colonnes! 1 2 Requêtes avancées (2/3) Comparer des colonnes Produit cartésien Q1 : Quelles sont les tailles de disques durs qui sont utilisées par au moins 2 PCs? PC PC 1 x PC 2 Modèle HD (renomage) 1001 1.6 1002 1.6 1003 2.5 On peut maintenant comparer les colonnes! PC1.Modèle PC1.HD PC2.Modèle PC2.HD 1001 1.6 1001 1.6 1001 1.6 1002 1.6 1001 1.6 1003 2.5 1002 1.6 1001 1.6 1002 1.6 1002 1.6 1002 1.6 1003 2.5 1003 2.5 1001 1.6 1003 2.5 1002 1.6 1003 2.5 1003 2.5 3 Requêtes avancées (3/3) Solution : Comparer des colonnes Produit cartésien Q1 : Quelles sont les tailles de disques durs qui sont utilisées par au moins 2 PCs? PC Modèle HD πpc1.hdσ PC1.modele PC2.modele (PC 1 x PC 2) 1001 1.6 1002 1.6 1003 2.5 On peut maintenant comparer les colonnes! PC1.HD = PC2.HD PC1.Modèle PC1.HD PC2.Modèle PC2.HD 1001 1.6 1001 1.6 1001 1.6 1002 1.6 1001 1.6 1003 2.5 1002 1.6 1001 1.6 1002 1.6 1002 1.6 1002 1.6 1003 2.5 1003 2.5 1001 1.6 1003 2.5 1002 1.6 1003 2.5 1003 2.5 4

Pouvoir expressif de l algèbre relationnelle (1/2) Ce que l algèbre sait exprimer Au moins 1, au moins 2, au moins 125 (classique, projection-selection-jointure) Tous, aucun (division, différence) Exactement 1, exactement 2,.., : difficile! Mais possible le plus rapide : difficile (différence + produit cartésien) NB : Pensez à exprimer la négation de la requête et utilisez la différence Spectateurs n aimant aucun des films qu ils ont vus l ens. des spectateurs ceux qui ont aimé au moins un film 5 Pouvoir expressif de l algèbre relationnelle (2/2) Ce que l algèbre ne sait pas exprimer (SQL!) Combien? au moins n (avec n dépendant d un calcul) Groupes de valeurs NB : Certaines requêtes ne peuvent pas être exprimées en SQL non plus (données graphes) La BD est alors interfacée avec un autre langage (C, JAVA) ou bien on fait du PL/SQL 6 Chapitre 6 SQL avancé Requêtes simples SELECT * * : liste de tous les attributs σ Acteur= Adjani FILM WHERE Acteur= Adjani SELECT Titre π Titre [σ Acteur= Adjani FILM] WHERE Acteur= Adjani Sémantique formelle cas mono-relation : SELECT distinct B1... Bk FROM R π WHERE C B1 Bk [σ C R] 7 8

Requêtes classiques Renomage des attributs du schéma cible SELECT Titre AS Adjani s movies WHERE Acteur= Adjani Valeur des attributs = expression arithmétique SELECT Titre, Durée*60 AS durée-en-minutes -durée 9 Conditions de la clause WHERE Comparateurs habituels, arithmétique, concaténation ( ),... Connecteurs : OR, AND et NOT SELECT Titre WHERE Acteur= Adjani OR réalisateur= Poirier Motifs pour la recherche de chaînes de caractères % : une chaîne quelconque SELECT Titre WHERE Titre LIKE %retour% Le retour du roi, Aliens le retour, 10 Chaînes de caractères (suite) Exercice 1 Majuscules / Minuscules Pas de distinction pour les mots clés Distinction pour les valeurs des conditions Divers les motifs comme les valeurs sont écrits entre négation possible : NOT LIKE condition d intervalle : att. BETWEEN val1 AND val2 Soit le schéma suivant CLIENT (N C, NomC, AdrC, CP, Ville, Tél, CondPart) PRODUIT (N P, Description, Prix, QtéP, Ville) COMMANDE (N Comm, N C, N P, QtéC, DateC) Répondez aux requêtes suivantes (Q1) Lister la description et le prix des produits dont le prix est compris entre 500 et 1000 euros (Q2) Lister les noms et adresses des clients dont le nom commence par un D 11 12

Exercice 1 (Correction) (Q1) SELECT Description, Prix FROM Produit WHERE Prix BETWEEN 500 AND 1000 Ou bien Prix >=500 AND Prix<=1000 (Q2) SELECT NomC, AdrC FROM Client WHERE NomC LIKE 'D%' Manipulation de dates format : aaaa-mm-jj DATE 2003-11-06 BETWEEN DATE 2003-09-25 AND DATE 2004-02-15 13 14 Sémantique formelle cas multi-relation SELECT B1,..., Bk FROM R1... Bp π B1 Bk [σ C R1 x x Bp] WHERE C Les cinémas qui projettent un film dans lequel M.F. Pisier est actrice (pour chaque cinéma donner le titre du film et l horaire) SELECT Nom-Cine, FILM.Titre, Horaire, PROG WHERE FILM.titre=PROG.titre AND Acteur= M-F. Pisier π[ Nom-Cine,Titre,Horaire [σ Acteur= M-F.Pisier [FILM X PROG]] =π[ Nom-Cine,Titre,Horaire [σ Acteur= M-F.Pisier [FILM X PROG]] ^ FILM.titre=PROG.titre 15 Introduction de variables Les films et tous les acteurs dans lesquels joue M-F Pisier [π F2.Titre, F2.Acteur [σ Acteur= M-F.Pisier F1.Titre = F2.Titre [FILM 1] X [FILM 2]]] SELECT F2.Titre, F2.Acteur AS F1, FILM AS F2 -- équiv. à FILM F1, FILM F2 WHERE F1.Titre = F2.Titre AND F1.Acteur= M-F. Pisier F1 et F2 sont des copies virtuelles de FILM F1 et F2 sont des variables utilisées pour désigner n importe quel couple de n-uplets de FILM Si la table FILM n est pas dédoublée, la seule actrice retournée est MF Pisier (les autres acteurs sont «perdus» car non sélectionnés dans F1, F2 les retrouve) 16

SQL : Union, Intersection, Différence Les titres des films dans lesquels joue M-F. Pisier et qui sont à l affiche SELECT Titre WHERE Acteur= M-F. Pisier INTERSECT SELECT Titre FROM PROG Les titres des films qui ne sont pas à l affiche SELECT Titre EXCEPT SELECT Titre FROM PROG SQL : ensembles et multi-ensembles {1, 2, 1, 3} est un multi-ensemble select-from-where (par défaut ALL, multi-ens) Union, Except,Intersect (DISTINCT par défaut, ensemble simple) Toutes les personnes ayant participées au tournage du film Marion SELECT Acteur AS Personne WHERE Titre = Marion UNION SELECT réalisateur AS Personne WHERE Titre = Marion 17 Élimination des dupliqués SELECT DISTINCT Titre 18 SQL : Agrégats SUM() : somme, AVG() : moyenne, MIN() : minimum, MAX() : maximum, COUNT() : cardinalité d un multiensemble Le nombre de films dirigés par Bergman SELECT COUNT(Titre) FROM PROG WHERE réalisateur = Bergman PB : si un même film de Bergman est plusieurs fois à l affiche, il est compté plusieurs fois! Éliminer les dupliqués SELECT COUNT (DISTINCT Titre) FROM PROG WHERE réalisateur = Bergman 19 Groupement Nombre d acteurs par film SELECT Titre, COUNT (distinct Acteur) GROUP BY Titre (1) Projection, (2) regroupement, (3) calcul de l agrégat (multi-ensemble) Film, réalisateur, acteur T R A r1 a1 r1 r1 a3 t2 r4 r2 a1 r2 r2 a3 T t2 A a1 a3 a1 a3 T 3 t2 1 20

Groupement - Importance du Distinct SELECT Titre, COUNT (Acteur) -- pas de distinct GROUP BY Titre Projection, regroupement, calcul de l agrégat (multi-ensemble) Film, réalisateur, acteur T R A r1 a1 r1 r1 a3 r2 a1 r2 r2 a3 t2 r4 T t2 A a1 a3 a1 a3 T 6 t2 1 21 SQL : Groupement et agrégat Ajout d un schéma Cinephile(NomPers, Nom-Cine) SELECT NomPers, COUNT (DISTINCT Titre) FROM Cinephile, PROG WHERE Cinephile.Nom-Cine = PROG.Nom-Cine GROUP BY NomPers Distinct : Cas où plusieurs salles projettent le même film! (1) jointure naturelle de Cinephile et PROG, (2) projection, (3) regroupement, et (4) calcul de l agrégat Les personnes et le nombre de films qu ils peuvent voir Clause SELECT en présence d agrégat SELECT liste1, agg(liste2) FROM liste-relations WHERE condition GROUP BY liste1 22 SQL : la clause HAVING Les titre de films et le nombre d acteurs des films de plus de 3 acteurs SELECT Titre, COUNT (DISTINCT Acteur) GROUP BY Titre HAVING COUNT(distinct acteur) >= 3 Élimination des groupes ne satisfaisant pas la condition Les films dirigés par plus de deux metteurs en scène SELECT Titre GROUP BY Titre HAVING COUNT(distinct realisateur) > 2 Exercice 2 Soit le schéma suivant CLIENT (N C, NomC, AdrC, CP, Ville, Tél, CondPart) PRODUIT (N P, Description, Prix, QtéP, Ville) COMMANDE (N Comm, N C, N P, QtéC, DateC) Répondez aux requêtes suivantes Combien de clients habitent Paris? Quel est le prix moyen des produits? Lister toutes les paires de numéros de Clients, tels que ces 2 Clients habitent dans la même ville 23 24

Correction (Exercice 2) (Q1) Combien de clients habitent Paris? SELECT COUNT (N C) FROM Client WHERE Ville = 'Paris Ou bien SELECT COUNT (*) La table Client a une clé simple : N C Les lignes de la table Client ont toutes des N C différents Compter les N C est équivalent à compter les lignes (*) Correction (Exercice 2) (Q2) Quel est le prix moyen des produits? SELECT AVG (Prix) FROM Produit (Q3) Lister toutes les paires de numéros de Clients, tels que ces 2 Clients habitent dans la même ville SELECT c1.n C, c2.n C FROM Client c1, Client c2 WHERE c1.ville = c2.ville AND c1.n C c2.n C NB : si on veut éviter les doublons (c1, c2) et (c2, c1), on peut choisir de dire c1.n C > c2.n C ou c1.n C < c2.n C 25 26 SQL : Sous-Requêtes et Imbrication Utilisation du résultat d un Select-From-Where FILM-DEB(Titre, Acteur) stocke le titre du premier film de chaque acteur. Les acteurs du premier film joué par M-F. Pisier? SELECT Acteur WHERE Titre = (SELECT Titre -DEB WHERE Acteur= M-F. Pisier ) SELECT FILM.Acteur, FILM-DEB WHERE FILM.Titre=FILM-DEB.Titre AND FILM-DEB.Acteur= M-F. Pisier 27 SQL : Sous-requête avec l opérateur IN Les titres des films dont les réalisateurs sont acteurs (pas forcément dans le même film) SELECT Titre WHERE réalisateur IN (SELECT Acteur ) Le résultat de la sous-requête est un ensemble de n- uplets SELECT F1.Titre AS F1, FILM AS F2 WHERE F1.réalisateur = F2.acteur 28

Sous-requêtes coûteuses! Soient 2 schémas de relation R(ABC) et S(BCD) Deux façons d exprimer une jointure entre R et S (et proj. s/a) (1) SELECT A FROM R WHERE (R.B, R.C) IN (SELECT B, C FROM S) (2) SELECT A FROM R AS R1 WHERE EXISTS (SELECT S2.B, S2.C FROM S WHERE R1.B = S.B AND R1.C = S2.C ) Attention : Les sous requêtes sont coûteuses, à éviter lorsque cela est possible 29 Exercice 5 Soit le schéma suivant CLIENT (N C, NomC, AdrC, CP, Ville, Tél, CondPart) PRODUIT (N P, Description, Prix, QtéP, Ville) COMMANDE (N Comm, N C, N P, QtéC, DateC) Répondez aux requêtes suivantes Quels sont les produits plus chers que le prix moyen? Quels sont les clients (numéro de client) ayant commandé au moins 1 produit dont le prix vaut 1000 euros Quel est le produit le moins cher? 30 Exercice 5 (correction 1/3) Produits plus chers que le prix moyen? SELECT N P FROM Produit WHERE Prix > (SELECT AVG (Prix) FROM Produit) Attention : impossible de faire sans requête imbriquée! Q2 : SELECT N P FROM Produit WHERE Prix > AVG(Prix)?????? NON : Q2 est fausse : AVG(Prix) ne peut pas être dans la clause WHERE Exercice 5 (correction 2/3) Les clients (num) ayant commandé 1 produit dont le prix = 1000 SELECT N C FROM Commande, Produit WHERE Prix = 1000 AND Commande.N P = Produit. N P Ou bien (inutilement complexe) SELECT N C FROM Commande WHERE N P IN (SELECT N P FROM Produit WHERE Prix = 1000) 31 32

Exercice 5 (correction 3/3) Produit le moins cher SELECT P1.N P FROM Produit P1 WHERE Prix = (SELECT min(p2.prix) FROM Produit P2) Trouver des objets atteignant des valeurs min et max sont des cas où ils faut utiliser des requêtes imbriquées Autre version correcte : SELECT P1.N P FROM Produit P1 WHERE NOT EXISTS (SELECT * FROM Produit P2 WHERE P2.Prix < P1.Prix) On cherche les numéros de produits de P1 tel qu il n existe pas de produit p2 moins cher que p1. 33 En plus ORDER BY, LIMIT On utilise la clause ORDER BY pour trier les résultats d une requête Ordre croissant par défaut (ASC) On utilise DESC pour trier par ordre décroissant On peut alors utiliser LIMIT n (n un entier fixé) pour extraire les n premiers résultats Attention : coût important du tri! SELECT * WHERE acteur= Adjani ORDER BY titre DESC LIMIT 20; // 20 films seront renvoyés au plus 34 En plus SQL : Valeurs nulles Une valeur nulle remplace une valeur d un attribut valeur inconnue, attribut inapproprié, valeur incertaine, valeur cachée... Comparaison avec une valeur nulle vrai=1, faux=0, inconnu=1/2 : logique tri booléene! x AND y =min(x,y), x OR y =max(x,y), Not x =1-x Attention : loi du tiers exclu n est plus valide p OR (NOT p) pour p=1/2 35 En plus Jointure externe Elle est obtenue en calculant la jointure de R et S puis en y ajoutant # les n-uplets de R non joingnables avec un n-uplet de S et complétés avec des valeurs nulles $ les n-uplets de S non joingnables avec un n-uplet de R et complétés avec des valeurs nulles R S Jointure externe de R et S A B 1 2 3 4 B C 2 5 2 7 6 8 A B C 1 2 5 1 2 6 3 4 Null Null 7 8 36

Quelques syntaxes raccourcis pour les jointures SQL2 propose une variété de formes de jointures : externe, naturelle R NATURAL JOIN S correspond exactement à la jointure algébrique (deux colonnes de même nom) R CROSS JOIN S équivaut à SELECT * FROM R, S R JOIN S ON R.B = S.B équivaut à SELECT * FROM R, S WHERE R.B = S.B R OUTER JOIN S (jointure + $ et #) R RIGHT OUTER JOIN S (seul $ est effectué) R LEFT OUTER JOIN S (seul # est effectué) 37