BASES DE DONNÉES : COMPLÉMENTS



Documents pareils
Le langage SQL Rappels

1 Introduction et installation

Langage SQL : créer et interroger une base

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

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

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

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

Cours 4 : Agrégats et GROUP BY

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

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

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

Le Langage SQL version Oracle

Optimisation SQL. Quelques règles de bases

MODE OPERATOIRE OPENOFFICE BASE

16H Cours / 18H TD / 20H TP

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

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

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

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

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

Vincent Augusto

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

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

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

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

Les bases de données

Encryptions, compression et partitionnement des données

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

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

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

Bases de données relationnelles

TP Bases de données réparties

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

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

FileMaker 13. Guide de référence SQL

Devoir Data WareHouse

TP 8: LES OPERATEURS ENSEMBLISTES

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

MySQL / SQL EXEMPLES

S8 - INFORMATIQUE COMMERCIALE

OLAP : Mondrian + Pentaho. Maguelonne Teisseire Hugo Alatrista Salas hugo.alatrista- salas@teledetec9on.fr Flavien Bouillot

Introduction aux Bases de Données 2004/2005

SQL Server et Active Directory

Les bases fondamentales du langage Transact SQL

INTRODUCTION AU DATA MINING

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

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

Bases de données et sites WEB

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

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

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Bases de données cours 1

Le Langage De Description De Données(LDD)

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

Dossier I Découverte de Base d Open Office

Interpréteur d algèbre relationnelle

Mysql avec EasyPhp. 1 er mars 2006

Bases de données avancées Introduction

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

CATALOGUE FORMATIONS DOMAINE Bases de données

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

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

Quelques aspects du Relationnel-Objet du SGBD Oracle

Évaluation et optimisation de requêtes

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

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Les Entrepôts de Données

Ecole Polytechnique de Louvain INGI Fichiers et bases de données

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

Jean-François Boulicaut & Mohand-Saïd Hacid

Cours: Les Jointures 1

Modules ICI relais & EXAPAQ Predict v4.0

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

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

Nouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

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

Gestion des utilisateurs et de leurs droits

Information utiles. webpage : Google+ : digiusto/

Support de Cours REQUÊTES TRANSACT-SQL DANS MICROSOFT SQL SERVER Stéphane N GUESSAN Groupe Pigier Abidjan Version 1.

I4 : Bases de Données

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

Programmes des classes préparatoires aux Grandes Ecoles

«Un tableau de bord médical en temps- réel à moindre coût»

CREATION WEB DYNAMIQUE

A QUOI SERVENT LES BASES DE DONNÉES?

Mejdi BLAGHGI & Anis ASSÈS

Compte-rendu de projet de Système de gestion de base de données

OpenPaaS Le réseau social d'entreprise

Corrigés détaillés des exercices

Transcription:

: personne pe eleve enseigne personne pp prof num_p num_p num_classe pe.prenom = pp.prenom num_pro f = pp.num_p pe.nom pe.prenom Objectifs A la fin de la séquence d enseignement l élève doit pouvoir : utiliser une application offrant une interface graphique pour créer une base de données et l alimenter utiliser une application offrant une interface graphique pour lancer des requêtes sur une base de données distinguer les rôles respectifs des machines client, serveur, et éventuellement serveur de données traduire dans le langage de l algèbre relationnelle des requêtes écrites en langage courant concevoir une base constituée de plusieurs tables, et utiliser les jointures symétriques pour effectuer des requêtes croisées Table des matières 1 Compléments de SQL 2 1.1 Relation d ordre.......................................................................... 2 1.2 Fonction de sous-requêtes..................................................................... 2 1.2.1 Sous-requête renvoyant un unique élément....................................................... 2 1.2.2 Sous-requête renvoyant plusieurs éléments....................................................... 2 1.2.3 Cas de l existence.................................................................... 3 1.2.4 Cas de la division..................................................................... 3 1.3 Regroupements avant agrégation................................................................. 4 1.3.1 Regroupement par attributs communs.......................................................... 4 1.3.2 Conditions sur les regroupements par attributs communs................................................ 5 1.3.3 Agrégation sur deux niveaux............................................................... 5 1.4 Bloc de qualification....................................................................... 6 2 Représentations graphiques 6 2.1 Modèle entités-associations.................................................................... 6 2.2 Éléments graphiques associés à l algèbre relationnel....................................................... 6 GERMAIN GONDOR

1. DE SQL 2/6 1 Compléments de SQL Ne faisant pas partie de l algèbre relationnel, des commandes viennent compléter les requêtes SQL, par exemple pour trier les résultats ou effectuer des opérations des groupes de tuples. 1.1 Relation d ordre La clause ORDER BY permet de trier les résultats. Par défaut l ordre est ascendant ASC mais avec DESC on peut spécifier l ordre descendant du tri. Quand plusieurs attributs sont sélectionnés, le tri des colonnes se fait d abord selon la colonne du premier attribut, puis selon les suivantes en cas d égalité des premières. SELECT * FROM R1 ORDER BY a t t 1 DESC, a t t 2 ASC ; EXEMPLE : faire apparaître les départements triés ordre décroissant dans chaque département les numéros de station triés par ordre croissant : SELECT d e p a r t e m e n t, num_sta FROM radome ORDER BY d e p a r t e m e n t DESC, num_sta ASC ; La clauseorder BY se positionne en fin de requête SQL puisqu elle permet de trier le résultat final et doit figurer d une seule fois après la clauseselect. 1.2 Fonction de sous-requêtes 1.2.1 Sous-requête renvoyant un unique élément Grâce aux fonctions d agrégation, nous avons vu (cours précédent) qu il était possible d effectuer des opérations qui, sur l ensemble des valeurs d un attribut d une relation, renvoie un résultat composé d un unique élément. Il est alors possible d utiliser ce résultat dans une sélection : SELECT... FROM... WHERE machin = (SELECT... FROM.... ) ; EXEMPLE : déterminer le nom et l altitude de la plus haute station météo de la relationradome : SELECT nom_usuel, a l t i t u d e FROM radome WHERE a l t i t u d e =(SELECT max ( a l t i t u d e ) FROM radome ) ; 1.2.2 Sous-requête renvoyant plusieurs éléments Si la sous-requêtes renvoie plusieurs éléments, on peut alors appliquer une sélection avec : IN... c est appartenance NOT IN... c est la non appartenance op ANY c est l existence associée à un opérateurop oùop est un opérateur comme par exemple=,!=,<... op ALL c est le quelque soit associé à un opérateurop oùop est un opérateur comme par exemple=,!=,<...

1. DE SQL 3/6 REMARQUES: IN produit le même effet que= ANY NOT IN produit le même effet que!= ALL EXEMPLE : quelles sont les noms de villes dont la température était supérieure à 297 K le jour de la mesure? SELECT nom_usuel FROM radome WHERE id_omm IN (SELECT id_omm FROM synop WHERE t > 2 9 5 ) ; qui donne le même résultat que : SELECT nom_usuel FROM radome r a JOIN synop sy ON r a. id_omm=sy. id_omm WHERE t >295; EXEMPLE : quelles sont les villes non situées en Bourgogne? SELECT nom_usuel FROM radome WHERE d e p a r t e m e n t NOT IN ( 2 1, 5 8, 7 1, 8 9 ) ; SELECT nom_usuel FROM radome WHERE d e p a r t e m e n t NOT IN (SELECT d e p a r t e m e n t FROM radome WHERE r e g i o n =" Bourgogne " ) ; 1.2.3 Cas de l existence La requêteexists sous-req donne un résultat vrai si la sous requêtesous-req retourne au moins une ligne. SELECT... FROM... WHERE EXISTS (SELECT... ) ; Par ailleurs, la requêtenot EXISTS sous-req donne un résultat vrai si la sous requêtesous-req ne retourne pas de ligne. SELECT... FROM... WHERE NOT EXISTS (SELECT... ) ; EXEMPLE : quels sont les noms des élèves n étant pas seuls issus d un lycée? SELECT nom FROM p e r s o n n e p JOIN e l e v e e ON e. num_p = p. num_p WHERE EXISTS (SELECT * FROM e l e v e WHERE l y c é e _ o r i g i n e = e. l y c é e _ o r i g i n e AND num_p!= e. num_p ) ; ou bien SELECT nom FROM p e r s o n n e p JOIN e l e v e e ON e. num_p = p. num_p WHERE 1 < (SELECT COUNT( * ) FROM elevewhere l y c é e _ o r i g i n e = e. l y c é e _ o r i g i n e ) ; ou encore avec deux jointures : SELECT nom FROM p e r s o n n e p JOIN e l e v e e1 ON e1. num_p = p. num_p JOIN e l e v e e2 ON e2. l y c é e _ o r i g i n e = e1. l y c é e _ o r i g i n e WHERE e1. num_p!= e2. num_p ; 1.2.4 Cas de la division Nous avons vu dans le cours précédent que le division ne fait pas actuellement partie de la norme SQL. Cependant, comment répondre à la question : PROBLÉMATIQUE : Quels sont les numéros des professeurs enseignant à tous les étudiants? On peut reformuler le problème sous la forme : PROBLÉMATIQUE : Quels sont les numéros des professeurs tels que quelque soit l étudiant, cet étudiant est dans une des classes du professeur?

1. DE SQL 4/6 Hélas, nouveau problème, si EXISTS ( ) existe, FORALL ( ) n existe pas! On s en sort alors avec deux NOT EXIST imbriqués. En effet : t R 1 R 2 t R 2, (t, t ) R 1 t R 2 t R 1 ; t = (t, t ) ce qui revient à dire : PROBLÉMATIQUE : Quels sont les numéros des professeurs tels qu il n existe pas d étudiants tel qu il n existe pas de cours de ce professeur suivi par cet étudiant SELECT num_p FROM p r o f WHERE NOT EXISTS ( SELECT * FROM e l e v e e WHERE NOT EXISTS (SELECT * FROM e n s e i g n e WHERE num_prof = num_p AND num_classe = e. num_classe ) ) ; Quels sont les numéros des professeurs tels qu il n existe pas d étudiants qui ne soit pas dans l une des classes de ce professeur? SELECT num_p FROM p r o f WHERE NOT EXISTS (SELECT * FROM e l e v e e WHERE num_classe NOT IN (SELECT num_classe FROM e n s e i g n e WHERE num_prof = num_p ) ) ; ce qui pourra se faire de façon simple avec : PROBLÉMATIQUE : Quels sont les numéros des professeurs tels que le nombre d étudiant qui suivent un cours de ce professeur est le nombre total d étudiants. SELECT num_p FROM p r o f WHERE (SELECT COUNT( * ) FROM e l e v e e ) = (SELECT COUNT ( * ) FROM e l e v e e JOIN e n s e i g n e en ON e. num_classe = en. num_classe WHERE en. num_ prof = num_p ) ; 1.3 Regroupements avant agrégation 1.3.1 Regroupement par attributs communs OBJECTIF : La clause GROUP BY permet de regrouper les tuples ayant certains attributs en commun en vue d utiliser une fonction d agrégat. Elle ne renvoie qu une seule ligne par groupe. SELECT... FROM... WHERE... GROUPE BY... ; ATTENTION! il faut que le contenu duselect soit cohérent, i.e. : soit composé des attributs dugroup BY ou qui sont identiques pour chaque élément du groupe soit des fonctions d agrégat (qui porteront sur chaque groupe) EXEMPLE : Quels sont les nombres de cours dispensés par chaque enseignant? SELECT nom, prénom, COUNT ( * ) FROM e n s e i g n e en JOIN p e r s o n n e pe ON en. num_prof=pe. num_p GROUP BY nom, prénom ;

1. DE SQL 5/6 EXEMPLE : Quel est le nombre moyen d élèves pour chaque professeur? SELECT nom, " E f f e c t i f moyen " FROM p e r s o n n e pe JOIN (SELECT num_prof, AVG( e f f e c t i f ) AS " E f f e c t i f moyen " FROM c l a s s e JOIN e n s e i g n e ON num_classe = no GROUP BY num_prof ) gr ON pe. num_p= gr. num_prof ; ATTENTION! si des professeurs n ont pas d élèves, ils n apparaîtront pas. On peut les ajouter avec uneunion. SELECT nom, " E f f e c t i f moyen " FROM p e r s o n n e pe JOIN (SELECT num_p, 0 AS " E f f e c t i f moyen " FROM p r o f WHERE num_p NOT IN (SELECT num_prof from e n s e i g n e ) UNION SELECT num_prof, AVG( e f f e c t i f ) AS " E f f e c t i f moyen " FROM c l a s s e JOIN e n s e i g n e ON num_classe = no GROUP BY num_prof ) gr ON pe. num_p= gr. num_p ; 1.3.2 Conditions sur les regroupements par attributs communs OBJECTIF : La clausehaving permet d imposer une condition sur les groupes définis pargroup BY. C est l équivalent de la clausewhere après la clauseselect. C est pour cela qu elle se place aprèsgroup BY : SELECT... FROM... WHERE... GROUPE BY... HAVING... ; REMARQUE: Le prédicat dans la clausehaving suit les mêmes règles de syntaxe qu un prédicat figurant dans une clause WHERE. Cependant, il ne peut porter que sur les caractéristiques du groupe : soit sur les fonctions d agrégation (mais pas nécessairement celles qui figurent dans la clausewhere) soit sur des expressions (généralement des colonnes) figurant dans la clausegroup BY. EXEMPLE : Quels sont les nom et nombre moyen d élèves de chaque professeur qui enseigne dans au moins deux classes : SELECT p. nom, AVG( e f f e c t i f ) FROM e n s e i g n e JOIN c l a s s e ON num_classe = no JOIN p e r s o n n e p ON num_prof = num_p GROUP BY num_prof HAVING COUNT( DISTINCT num_classe ) > 1 ; 1.3.3 Agrégation sur deux niveaux La clause GROUP BY renvoyant plusieurs résultats, on peut appliquer une fonction d agrégation sur une sélection obtenue avec un regroupement. EXEMPLE : Quelle est la moyenne du nombre total d élèves par professeur (ayant des élèves... ). SELECT AVG( " somme" ) FROM ( SELECT SUM( e f f e c t i f ) AS "somme" FROM c l a s s e c JOIN e n s e i g n e en ON en. num_classe = c. no GROUP BY en. num_prof ) ;

2. REPRÉSENTATIONS GRAPHIQUES 6/6 1.4 Bloc de qualification Après avoir vu les principales clauses d une requête SQL, la structure de base est un bloc de qualification où la syntaxe impose l ordre suivant : 1 SELECT Ai,..., An c o l o n n e s e t a g r e g a t i o n s 2 FROM R r e l a t i o n 3 WHERE F a s s e r t i o n 4 GROUP BY A r e g r o u p e m e n t 5 HAVING H a s s e r t i o n 6 ORDER BY T t r i 7 ; 2 Représentations graphiques 2.1 Modèle entités-associations A l aide d un diagramme de classe d UML, un schéma relationnel appelé diagramme entités-associations peut être représenté : 2.2 Éléments graphiques associés à l algèbre relationnel Pour raisonner sur le papier ou traduire visuellement une requête voici quelques éléments de langage graphique : Projection Selection Jointure Produit cartésien R R A x1,..., A xp A 3 < cond R 1.X= R 2.U Union Intersection Différence Division