INSIA - ING 1 Bases de données Piscine MySQL Cours et TP n 07

Documents pareils
Le Langage SQL version Oracle

Optimisation SQL. Quelques règles de bases

Les bases de données

Le langage SQL Rappels

TP Bases de données réparties

Le Langage De Description De Données(LDD)

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

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

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

Bases de données et sites WEB

TP Contraintes - Triggers

1 Introduction et installation

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

Langage SQL : créer et interroger une base

INTRODUCTION AU DATA MINING

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

A QUOI SERVENT LES BASES DE DONNÉES?

Systèmes de Gestion de Bases de Données

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

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

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

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

Administration des bases de données. Jean-Yves Antoine

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

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

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

Bases de données relationnelles

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

MODE OPERATOIRE OPENOFFICE BASE

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

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

Intégrité des données

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Compétences Business Objects

Introduction aux Bases de Données 2004/2005

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

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

TP 8: LES OPERATEURS ENSEMBLISTES

Rappel sur les bases de données

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

Bases de Données. Plan

Vincent Augusto

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

Bases de données élémentaires Maude Manouvrier

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

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

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

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

Support de cours «SGBD»

Master Exploration Informatique des données DataWareHouse

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

SQL Server et Active Directory

Cours Bases de données 2ème année IUT

Partie II Cours 3 (suite) : Sécurité de bases de données

MySQL / SQL EXEMPLES

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

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

SQL Historique

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

FileMaker 13. Guide de référence SQL

A QUOI SERVENT LES BASES DE DONNÉES?

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

Les bases de l optimisation SQL avec DB2 for i

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Cours 4 : Agrégats et GROUP BY

Java DataBaseConnectivity

Dossier I Découverte de Base d Open Office

Administration de Bases de Données : Optimisation

16H Cours / 18H TD / 20H TP

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Installation d'un serveur FTP géré par une base de données MySQL

Bases de données réparties: Fragmentation et allocation

Gestion des transactions et accès concurrents dans les bases de données relationnelles

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

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

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Notes de cours : bases de données distribuées et repliquées

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

CREATION WEB DYNAMIQUE

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

Gestion de base de données

CESI Bases de données

Mysql avec EasyPhp. 1 er mars 2006

Cours 4. Gestion de la performance. DBA - Maîtrise ASR - Université Evry

Bases de Données Avancées PL/SQL

L objet de cet article est de présenter succinctement ces possibilités.

COURS SQL. SQL*Plus PL/SQL

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

Schéma relationnel et contraintes d intégrité : le cas ConduiteAuto

UNE EXPERIENCE, EN COURS PREPARATOIRE, POUR FAIRE ORGANISER DE L INFORMATION EN TABLEAU

COURS de BASES de DONNEES

Gestion des utilisateurs et de leurs droits

Introduction à la B.I. Avec SQL Server 2008

Transcription:

INSIA - ING 1 Bases de données Piscine MySQL Cours et TP n 07 Jointure artificielle, imbrication de select, opérations ensemblistes Equivalences entre ces opérations Vue LA BIBLE : MySQL 5.0 Reference Manual http://dev.mysql.com/doc/refman/5.0/fr/index.html Site officiel MySql : http://www-fr.mysql.com/ Documentation MySQL : http://mysql.org/ La Base de Données Open Source la plus Populaire au Monde Bertrand LIAUDET SOMMAIRE SOMMAIRE 1 SQL : CONSULTATION DE LA BD - SUITE 2 1. Les jointures artificielles 2 2. Les requêtes imbriquées 5 3. Transformation des select imbriqués en jointure artificielle 9 4. Opérations ensemblistes : tables ayant les mêmes attributs 10 5. La notion de «Vue» 12 TP N 7 : JOINTURE ARTIFICIELLE, IMBRICATION DE SELECT, OPERATIONS ENSEMBLISTES 14 Exercice 1 : BD employés et départements 14 Exercice 2 : BD biblio 15 Exercice 3 : BD ecoling 16 Première édition : septembre 2007 Deuxième édition : octobre 2008 INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 1/17 - Bertrand LIAUDET

SQL : CONSULTATION DE LA BD - SUITE Jointure artificielle Opération ensembliste EXISTS, NOT EXISTS UNION PRINCIPALES NOTIONS Requête imbriquée ANY, ALL IN, NOT IN MINUS, INTERSECT 1. Les jointures artificielles Classification générale Il y a trois sortes d'opérations s'appliquant à plusieurs tables : les jointures les opérations ensemblistes les sous interrogations Les jointures se divisent en 2 cas : Les jointures naturelles Les jointures artificielles Opérations élémentaires constituant une jointure Une jointure est constituée de : Un produit cartésien Une restriction de jointure Produit cartésien Définition Le produit cartésien de deux tables est l opération de base de la jointure. Le produit cartésien est l opération qui va permettre de réunir les attributs de deux tables dans une nouvelle table. Il produit une table constituée de la concaténation de tous les attributs des deux tables de départ et de tous les tuples formés par la concaténation de chaque tuple de la première table à tous ceux de la deuxième. Syntaxe SQL Clé primaire Select * from table_1, table_2 ; INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 2/17 - Bertrand LIAUDET

La clé primaire est constituée de la concaténation des clés primaires des tables du produit cartésien. Nombre de tuples CP = CP1, CP2 Si la première table contient T1 tuples et la deuxième T2 tuples, le produit cartésien est une table qui contient : Nombre d attributs N1 * N2 tuples Si la première table contient A1 attributs et la deuxième A2 attributs, le produit cartésien est une table qui contient : Usage du produit cartésien A1 + A2 attributs. Fondamentalement, le produit cartésien est l opération qui permet de : réunir les attributs de deux tables dans une nouvelle table. On utilise le produit cartésien dès qu une requête met en jeu deux attributs qui appartiennent à deux tables différentes. Signification Le produit cartésien de deux tables n'a jamais de signification. Il devient significatif quand on l'associe à une restriction qui met en jeu un attribut de la première table et un attribut de la seconde : on l'appelle alors jointure. Jointure Définition On peut considérer la jointure comme le concept central de l'algèbre relationnelle et donc des bases de données relationnelles en général. Comprendre ce qu'est une jointure, c'est probablement comprendre ce qu'est une base de données relationnelle. La jointure de deux tables c'est leur produit cartésien et la restriction consistant à comparer un attribut de la première table à un attribut de la deuxième table. Select * from table_1, table_2 where table_1.attribut_1 opérateur table_2.attribut_2; La clause where d'une jointure peut faire intervenir n'importe quel opérateur de l'algèbre booléen. En général, la jointure utilise l'opérateur "=". On distingue deux types de jointures : les jointures naturelles INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 3/17 - Bertrand LIAUDET

les jointures artificielles. Jointure naturelle La jointure naturelle est celle qui permet de regrouper deux tables ayant un attribut en commun particulier : celui de la première table est une clé étrangère, celui de la deuxième est la clé primaire pour sa table, clé correspondant à la clé étrangère de la première table. La comparaison entre les deux attributs est une égalité : opérateur "=" Select * from table_1, table_2 where table_1.clé_étrangère = table_2.clé_primaire ; ou encore avec NT2 clé primaire de la table_2 : Jointure artificielle Exemple Select * from table_1, table_2 where table_1.nt2 = table_2.nt2; La jointure artificielle est une jointure dont la restriction n a pas la forme de celle d une jointure naturelle : soit elle met en jeu d autres opérateurs que celui d égalité, soit elle met en jeu un couple d attribut qui n est pas clé-étrangère et clé-primaire correspondante. Tous les employés ayant le même job que JONES : Explications Select distinct e1.ne, e1.nom, e2.job from emp e1, emp e2 where e1.job = e2.job -- restriction de jointure and e2.ename = 'JONES' -- restriction spécifique 1 and e1.ename <> 'JONES' -- restriction spécifique 2 Chaque employé est croisé avec tous les employés (produit cartésien). On ne s intéresse qu aux employés de e2 qui s appelle JONES (restriction spécifique 1) La restriction de jointure artificielle est faite sur job : on ne garde que les employés de e1 qui ont le même job que les JONES. On supprime JONES de la liste des employés de e1 (pour éviter d avoir JONES dans la réponse). Pour finir, on projette les employés de e1. On met un distinct pour le cas où il y ait plusieurs JONES. INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 4/17 - Bertrand LIAUDET

2. Les requêtes imbriquées Présentation Dans une requête imbriquée, on trouve un ou plusieurs select utilisés dans le select principal (le premier de la requête). On distingue entre le select imbriquant et le ou les select imbriqués. On peut avoir autant de niveau d imbrication qu on veut. Il y a deux types de select imbriqués : Les select imbriqués dans le «from» : le select imbriqué remplace une table. Les select imbriqués dans le «where» : le select remplace une valeur ou une liste de valeurs possibles dans une restriction. Dans le cas des select imbriqués dans le where, on peut distinguer deux types de select imbriqués selon la restriction effectuée : Soit on compare chaque tuple du select imbriqué aux tuples du select principal Soit on demande si le select imbriqué fournit une table vide ou pas. On arrive donc à trois catégories de requêtes imbriqués : 1. Les select imbriqués à la place d une table 2. Les requêtes imbriquées avec comparaison entre le select principal et le select imbriqué : ALL et ANY 3. Les requêtes imbriquées avec test de la cardinalité vide ou pas du select imbriqué : EXISTS et NOT EXISTS Select imbriqué à la place d une table Toute table d un select peut être remplacée par un autre select. Exemple : nombre moyen d employés par département Select avg(nb) from ( select count(*) nb from emp group by nd ) tnb ; Remarques Il faut obligatoirement renommer la table construite par le select imbriqué. Dans l exemple, elle est renommée «tnb». Les attributs projetés dans le select imbriqué sont renommés quand il s agit de fonction de groupe. INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 5/17 - Bertrand LIAUDET

Comparaison entre le select principal et le select imbriqué : ALL et ANY Présentation La comparaison de chaque tuple résultant d'un premier select aux tuples d'une table résultant d'un deuxième select a comme syntaxe générale : Select * from table where liste 1 d'attributs opérateur (select liste 2 d'attributs from... L'opérateur c est un opérateur de comparaison booléen classique : =,!=, >, >=, <, <=, suivi d'un opérateur spécial : ANY ou ALL. Les listes d attributs Elles doivent avoir la même forme dans le where du select principal et dans la projection du select imbriqué : même nombre d attributs et même type pour les attributs. Habituellement, ce sont les même attributs dans le select principal et dans le select imbriqué. Opérateur ANY La comparaison booléenne est vraie si elle est vraie pour au moins un tuple du select imbriqué (le deuxième select). Autrement dit, «= any» vérifie l appartenance à la liste des tuples du deuxième select. Exemple : tous les employés ayant le même job que les employés du département 10 Select NE, nom, job from emp where job = any ( select job from emp where ND = 10 Opérateur ALL La comparaison booléenne est vraie si elle est vraie pour tous les tuples du select imbriqué (le deuxième select). Autrement dit, «!= all» vérifie la non-appartenance à la liste des tuples du deuxième select. INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 6/17 - Bertrand LIAUDET

Opérateurs IN et not IN L opérateur «in» remplace «= any». L opérateur «not in» remplance «!= all» Select NE, nom, job from emp where job in ( select job from emp where ND = 10 Cas où on peut se passer de ANY et de ALL Si le deuxième select fournit un seul tuple, on peut se passer de l opérateur spécial. On peut par exemple écrire "=" à la place de "= any". C est le cas particulièrement quand le select imbriqué renvoit une fonction de groupe. Test de la cardinalité vide ou pas du select imbriqué : EXISTS et NOT EXISTS Si on s'interroge sur l'existence ou la non-existence de tuples dans la table résultant du select imbriqué, on écrira : Select * from table where opérateur ( select... L'opérateur peut prendre deux valeurs : exist ou not exist. En général, le select imbriqué utilise un attribut du select principal qui rend variable son résultat en fonction du tuple en cours du select principal. Opérateur EXISTS Les tuples du select principal sont sélectionnés si le select imbriqué produit au moins un tuple. Exemple : tous les employés travaillant dans un département qui contient au moins un 'ANALYST' (c'est un métier) : Explication Select NE, nom, ND, job from emp where exists ( select * from emp e1 where job = 'ANALYST' and e1.nd = emp.nd On regarde s il existe un ANALYST dont le département est égal à celui du tuple en cours. Si oui, on garde le tuple en cours. INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 7/17 - Bertrand LIAUDET

Opérateur not EXISTS Les tuples du select principal sont sélectionnés si le select imbriqué ne produit aucun tuples. Equivalence entre IN et EXISTS et entre NOT IN et NOT EXISTS A la place de l exemple précédent avec un IN, on pourrait écrire avec un EXISTS : Select NE, nom, ND, job from emp e where ND in ( select ND from emp where = 'ANALYST' INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 8/17 - Bertrand LIAUDET

3. Transformation des select imbriqués en jointure artificielle Cas où la transformation est possible On peut très souvent transformer les select imbriqués en jointure artificielle : Exemple : tous les employés ayant le même job que les employés du département 10 Select NE, nom, job from emp where job = any ( select job from emp where ND = 10 équivaut à : Select empno, ename, job from emp e1, emp e2 where e1.job = e2.job and e2.nd = 10 and e1.nd!= 10 ; Du bon usage On choisira toujours la jointure de préférence à un select imbriqué. Cas où le select imbriqué est obligatoire Quand le select imbriqué porte sur un résultat statistique, on ne peut pas la transformer en jointure. Par contre on peut transformer un select imbriqué dans le from en un select imbriqué dans le where. Exemple : tous les employés gagnants plus que la moyenne Version avec select imbriqué dans le where : Select NE, nom, sal from emp where sal > ( select avg(sal) from emp Version avec select imbriqué dans le from : Select NE, nom, sal, moysal from emp, (select avg(sal) as moysalfrom emp) tmoy where sal > moysal; INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 9/17 - Bertrand LIAUDET

4. Opérations ensemblistes : tables ayant les mêmes attributs Principe général des opérations ensemblistes Les opérations ensemblistes s appliquent à deux tables qui ont les mêmes attributs (où plus précisément des attributs de mêmes types). Les opérations ensemblistes sur ces deux tables consistent soit regrouper tous les tuples (union), soit extraire les tuples en commun (intersection), soit prendre les tuples d'une table qui ne sont pas dans l'autre (différence). Pour que ces opérations soient significatives, il ne suffit pas que les attributs aient le même type, encore faut-il qu'ils aient la même signification. Dans le cas le plus général, ils seront identiques. Union L'union de deux tables ayant des attributs de mêmes types est une table constituée des attributs de la première table et de tous les tuples des deux tables de départ. La syntaxe est la suivante : Select liste_1 d'attributs from table_1 union select liste_2 d'attributs from table 2; Les listes d attributs Elles doivent avoir la même forme dans le where du select principal et dans la projection du select imbriqué : même nombre d attributs et même type pour les attributs. Habituellement, ce sont les même attributs dans les deux select. Remarque : Les deux tables de départ (table_1 et table_2) peuvent avoir des attributs différents. Ce sont les tables projetées qui doivent avoir des attributs de mêmes types pour pouvoir être unies. Différence La différence de deux tables ayant des attributs de mêmes types est une table constituée des attributs de la première table et des tuples de la première table n'appartenant pas à la deuxième : Select liste_1 d'attributs from table_1 minus select liste_2 d'attributs from table 2; Exemple Tous les numéros des départements vides de la société (c'est-à-dire les numéros des départements dans lesquels aucun employé ne travaille) : Select deptno from dept minus select distinct deptno from emp; INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 10/17 - Bertrand LIAUDET

On soustrait de la table des numéros de tous les départements la table des numéros des départements non vides (ceux dans lesquels travaille au moins un employé). Intersection L'intersection de deux tables ayant des attributs de mêmes types est une table constituée des attributs de la première table et des tuples de la première table appartenant aussi à la deuxième : Select liste_1 d'attributs from table_1 intersect select liste_2 d'attributs from table_2; Equivalence entre MINUS, INTERSECT et les requêtes imbriquées MySQL ne propose que l opérateur UNION. Equivalence entre MINUS et NOT IN tous les numéros des départements vides de la société (c'est-à-dire les numéros des départements dans lesquels aucun employé ne travaille) : Select deptno from dept minus select distinct deptno from emp; équivaut à : Select ND from dept Where ND not in ( select ND from emp Equivalence entre INTERSECT Select listeatt1 from table1 intersect Select listeatt1 from table2 équivaut à : Select listeatt1 from table1 Where listeatt1 in ( Select listeatt1 from table2 INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 11/17 - Bertrand LIAUDET

5. La notion de «Vue» Présentation Une commande select peut être conservée dans une variable appelée "vue". Une vue est une table virtuelle : elle n'a pas d'existence physique ; elle est recalculée à chaque utilisation ; elle est équivalente à une requête. Création d une vue La syntaxe de la création d'une vue est la suivante : CREATE VIEW nom_vue AS select ou Utilisation d une vue CREATE or REPLACE VIEW nom_vue AS select Une vue s utilise comme une table. Consultation du code d une vue mysql> SHOW CREATE VIEW nom_vue; Suppression d une vue Exemple Pour supprimer une vue, on écrira : DROP VIEW nom_vue ; Tous les départements contenant au moins un ANALYST (c est un job) : CREATE or REPLACE VIEW deptavecanalyste as Select distinct nd from emp where job = 'ANALYST' order by nd; Les 2 usages des vues Décomposer les requêtes en sous-requêtes On peut traiter les requêtes en les décomposant en sous requêtes. Exemple INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 12/17 - Bertrand LIAUDET

Tous les employés travaillant dans un département qui contient au moins un 'ANALYST' (c'est un métier). On commence par créer la vue correspondant à la requête : «tous les départements contenant au moins un ANALYST (cf. exemple précédent). En suite on traite la requête principale en exploitant la nouvelle vue : Select ne, nom from emp where nd in (select nd from deptavecanalyste ou : Select distinct e.ne, e.nom from emp e, deptavecanalyste d where e.nd =d.nd; Faciliter et sécuriser l accès aux données par les utilisateurs On peut créer des vues et ne donner des droits d accès que sur ces vues : ça favorise la sécurisation et ça facilite l accès, les vues étant orientées «usage». INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 13/17 - Bertrand LIAUDET

TP N 7 : JOINTURE ARTIFICIELLE, IMBRICATION DE SELECT, OPERATIONS ENSEMBLISTES Travail à faire Dans un fichier texte à votre nom+tpx, écrire les questions et les réponses les unes à la suite des autres. Après chaque requête, on met, en commentaire, le nom de l attribut clé primaire de la table résultat Mettez le résultat obtenu dans le fichier (copier-coller). Méthode de travail A partir du fichier «rapport de TP», faire des copier-coller dans la calculette SQL ou dans un fichier de test et lancer le script de test. Ordre de projection des attributs Requête sans fonction de groupe Attributs de tri, Cle Primaire, Clé Significative, Attributs demandés, Attributs de restriction Requête avec fonctions de groupe Attributs de tri, attributs du group by, fonctions de groupe demandées, fonctions de groupe de restriction (du having). Exercice 1 : BD employés et départements Présentation On travaillera sur les tables suivantes : EMPLOYES(NE, NOM, JOB, DATEMB, SAL, COMM, #ND, *NEchef) NE numéro de l employé. Clé primaire. NOM nom de l employé. JOB intitulé du poste occupé. DATEMB date d embauche. SAL salaire de l employé. COMM commission (part de salaire variable). #ND n du département dans lequel travaille l employé. Clé étrangère. INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 14/17 - Bertrand LIAUDET

*NEchef n d employé du chef de l employé. Clé étrangère réflexive. DEPARTEMENTS(ND, NOM, VILLE) ND numéro des départements de l entreprise. Clé primaire. NOM nom des départements de l entreprise. VILE nom des villes où sont situés les départements. Interrogation de la BD 1. Télécharger le script de création de la BD : employes.sql. 2. Lancer ce script de création de la BD. 3. Tous les employés travaillant dans un département qui contient au moins un 'ANALYST' (c'est un métier). Ecrire une version avec jointure et une version imbriquée. 4. Tous les employés ayant le même job que les employés du département 30. 5. Tous les noms et dates d embauche des employés embauchés avant BLAKE. 6. Tous les employés embauchés avant tous les employés du département 10. 7. Tous les employés ayant le même chef que CLARK. 8. Tous les employés ayant le même job et le même chef que TURNER. 9. Tous les employés du département RESEARCH embauchés la même année que quelqu un du département SALES. 10. Tous les employés de Chicago ayant le même job et le même salaire que JONES. 11. Tous les employés n ayant pas de subordonnées. 12. Tous les départements vides avec leurs noms et villes. 13. Quels sont les jobs communs aux départements 10 et 30. 14. Tous les employés qui gagnent plus que la moyenne. Exercice 2 : BD biblio Présentation On travaillera sur les tables suivantes : OEUVRES(NO, TITRE, AUTEUR) NO numéro de l œuvre. Clé primaire. LIVRE titre de l oeuvre AUTEUR auteur de l oeuvre ADHERENTS(NA, NOM, VILLE) NA numéro d adhérent. Clé primaire. NOM nom de l adhérent. INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 15/17 - Bertrand LIAUDET

PRENOM prénom de l adhérent. ADR adresse de l adhérent. TEL téléphone de l adhérent. LIVRES (NL, EDITEUR, #NO) NL numéro du livre. Clé primaire. EDITEUR éditeur du livre NO numéro de l oeuvre. Clé étrangère. EMPRUNTER(#NL, DATEMP, DATRETMAX, DATRET, #NA) #NL numéro de livre. Clé primaire. Clé étrangère. DATEMP date d emprunt du livre. Clé primaire. DATRETMAX date limite de retour autorisée. DATRET date de retour effectif du livre. #NA numéro d adhérent. Clé étrangère. Interrogation de la BD 1. Utiliser le script corrigé de création de la BD : BiblioTP06.txt 2. Le titre : «Narcisse et Goldmund» est-il disponible? On commencera par afficher tous les exemplaires. Combien d exemplaires sont disponibles? On traitera la requêtes avec vues puis sans vues. 3. Pour le titre «Au cœur des ténèbres» afficher le nombre d exemplaire total, le nombre d exemplaires disponibles et le nombre d exemplaires actuellement empruntés, avec le titre. 4. Quelle est la moyenne du nombre de livres empruntés par adhérent. On traitera la requêtes avec vues puis sans vues. Exercice 3 : BD ecoling Présentation On travaille sur les tables suivantes : Modèle relationnel Etudiants (NET, nom, prenom, email) Examens (NEX, matiere, prof, session, annee, niveau, type, durée) Groupe (NGR, nom, niveau) Epreuves (NEP, (#NGR, dateheure), salle, #NEX) INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 16/17 - Bertrand LIAUDET

Evaluer (#NEP, #NET, note) Les étudiants sont évalués dans une épreuve (qui correspond à un examen): il y a une note. En cas d absence, ils ne sont pas dans la table. Participer (#NET, #NGR) Les étudiants participent à un groupe. Dans la table Epreuves, (#NGR, dateheure) est une clé secondaire. Interrogation de la BD 1. Télécharger le script de création de la BD : Ecoling.txt 2. Faire le graphe des tables. Combien y a-t-il de tables verbes? Que signifie la boucle dans le graphe? 3. Lancer ce script de création de la BD. 4. Consulter le contenu de toutes les tables : faire des select * 5. A partir des tables verbes, faire toutes les jointures possibles pour avoir des tables surinformées au maximum. Pour faciliter la lecture, on projettera tous les attributs des tables verbes et les clés primaires et significatives des tables noms. 6. Quelles sont les durées des épreuves orales? 7. Quels sont les noms des groupes passant des épreuves dans la salle 301? 8. Quels sont les noms des groupes passant une épreuve de maths? 9. Quels sont les noms et prénoms des élèves de la promo 2009? 10. Quels sont les étudiants n ayant pas passé l épreuve numéro 2? On commencera par traiter les requêtes : Tous les étudiants ayant passé l épreuve 2 Tous les étudiants d un groupe donné 11. Quels sont les étudiants de SIGL 2, promo 2009 n ayant pas passé toutes les épreuves de leur groupe? 12. Quels sont les numéros des étudiants n ayant pas passé les épreuves de leur groupe? On commencera par traiter les requêtes : Tous les étudiants évalués par groupe et par épreuve (le groupe étant celui de l épreuve) Tous les étudiants prévus par épreuves, par groupe et par épreuve 13. Quelle sont les moyennes générales de l étudiant n 1624 par année? 14. Quelle est la salle dans laquelle se déroule la plus longue épreuve? 15. Quelle est la moyenne des groupes pour les examens 4, 5 et 6 16. Quels sont les étudiants ayant plus que la moyenne des étudiants pour l épreuve n 1? 17. Quelle est l épreuve dans laquelle on a la meilleure moyenne? 18. Pour chaque épreuve, quels sont les élèves qui ont la meilleure note? 19. Par promo, quels sont les élèves dont la moyenne par matière est toujours supérieure à 10? INSIA - BASES DE DONNÉES ING 1 Piscine Cours 07 - page 17/17 - Bertrand LIAUDET