Langage d interrogation des Données LID Opérateurs ensemblistes et sousinterrogation

Documents pareils
Le Langage SQL version Oracle

Optimisation SQL. Quelques règles de bases

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

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

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

Le Langage De Description De Données(LDD)

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

Le langage SQL Rappels

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

Langage SQL : créer et interroger une base

TP 8: LES OPERATEURS ENSEMBLISTES

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

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

Support de cours «SGBD»

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

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

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

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

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

1 Introduction et installation

SAP BusinessObjects Web Intelligence (WebI) BI 4

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

Introduction : présentation de la Business Intelligence

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

MySQL / SQL EXEMPLES

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

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

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

16H Cours / 18H TD / 20H TP

FileMaker 13. Guide de référence SQL

AGRÉGATION «ÉCONOMIE ET GESTION»

Bases de Données. Plan

Systèmes de Gestion de Bases de Données

Les bases de données

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

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

Dans cette définition, il y a trois notions clés: documents, requête, pertinence.

Créer le schéma relationnel d une base de données ACCESS

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

LA RÉGULARISATION DES CHARGES EN FIN D EXERCICE

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

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

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 et sites WEB

TP Contraintes - Triggers

MODE OPERATOIRE OPENOFFICE BASE

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

Compétences Business Objects

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

Mysql. Les requêtes préparées Prepared statements

TP3 : Creation de tables 1 seance

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

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

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

Création de Sous-Formulaires

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

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

Intégrité des données

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

1. Introduction Création d'une requête...2

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

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

LibreOffice Calc : introduction aux tableaux croisés dynamiques

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

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Formation à l'administration de votre site E-commerce Page 1 sur 15

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

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

Chapitre 10. Architectures des systèmes de gestion de bases de données

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

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

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

Introduction aux Systèmes de Gestion de Bases de Données Relationnelles. Olivier Losson

Les tests logiques avec Excel

COURS de BASES de DONNEES

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

VOTRE RÔLE EN TANT QUE TRÉSORIER DE VOTRE ORGANISME

Gestion des utilisateurs et de leurs droits

COURS SQL. SQL*Plus PL/SQL

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

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

Olivier Mondet

Encryptions, compression et partitionnement des données

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

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

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Comment faire des étiquettes

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

OASIS Date de publication

Guide de configuration d'une classe

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

Chapitre Introduction : Notion de Bases de données. 2. Définition : BD Répartie. 3. Architecture des SGBD. 4. Conception des bases réparties

Transcription:

Année universitaire 2016/2017 LFIG 2 Langage d interrogation des Données LID Opérateurs ensemblistes et sousinterrogation Fahmi Ben Rejab 1

Les opérateurs ensemblistes Les opérateurs ensemblistes permettent de "joindre" des tables verticalement c'est-àdire de combiner dans un résultat unique des lignes provenant de deux interrogations. Les lignes peuvent venir de tables différentes mais après projection on doit obtenir des tables ayant même schéma de relation. Les opérateurs ensemblistes sont les suivants : l'union : UNION l'intersection : INTERSECT la différence relationnelle : MINUS 2

Les opérateurs ensemblistes La syntaxe d'utilisation est la même pour ces trois opérateurs : SELECT... {UNION INTERSECT MINUS } SELECT... Dans une requête utilisant des opérateurs ensemblistes : Tous les SELECT doivent avoir le même nombre de colonnes sélectionnées, et leur types doivent être un à un identiques. Les conversions éventuelles doivent être faites à l'intérieur du SELECT à l'aide des fonctions de conversion. Les doubles sont éliminés (DISTINCT implicite). Les noms de colonnes (titres) sont ceux du premier SELECT. La largeur des colonnes est la plus grande parmi tous les SELECT. Dans une requête on ne peut trouver qu'un seul ORDER BY. S'il est présent, il doit être mis dans le dernier SELECT et il ne peut faire référence qu'aux numéros des colonnes et non pas à leurs noms (car les noms peuvent être différents dans chacune des interrogations). 3

Les opérateurs ensemblistes On peut combiner le résultat de plus de deux SELECT au moyen des opérateurs UNION, INTERSECT, MINUS. SELECT... UNION SELECT... MINUS SELECT... Dans ce cas l'expression est évaluée de gauche à droite, mais on peut modifier l'ordre d'évaluation en utilisant des parenthèses. SELECT... UNION (SELECT... MINUS SELECT...) 4

Les opérateurs ensemblistes Opérateur UNION (U) Cet opérateur permet de fusionner deux sélections de tables afin d obtenir un ensemble de lignes représentant la réunion des lignes des deux sélections. Exemple: Afficher la liste de tous les employés même les retraités, supposez que la liste des employés retraités est stockée dans une table 'Retraité' ayant la même structure que la table Employé. SELECT * FROM Employé UNION SELECT * FROM Retraité; 5

Les opérateurs ensemblistes Opérateur INTERSECT ( ) Cet opérateur permet de générer les tuples communs à deux interrogations. Exemple: Afficher les employés qui ont eu leur retraite mais qui sont toujours dans la table employés. SELECT * FROM Employé INTERSECT SELECT * FROM retraité; 6

Les opérateurs ensemblistes Opérateur MINUS (-) Cet opérateur permet de supprimer d une sélection les lignes obtenues dans une deuxième sélection. Exemple : Afficher les employés et exclure ceux qui ont eu leur retraite mais demeurent toujours dans la table employés. SELECT * FROM Employé MINUS SELECT * FROM Retraité; 7

Les sous-interrogations (Imbrications & Corrélations) Une caractéristique puissante de SQL est la possibilité qu'un critère de recherche employé dans une clause WHERE (expression à droite d'un opérateur de comparaison) soit lui-même le résultat d'un SELECT ; c'est ce qu'on appelle une sous-interrogation. Sous-interrogation ramenant une seule valeur Exemple : Quels sont les employés ayant la même fonction que SMITH? SELECT ename FROM emp WHERE JOB = (SELECT job FROM emp WHERE ename= SMITH ); 8

Les sous-interrogations (Imbrications & Corrélations) Sous-interrogation ramenant plusieurs lignes Une sous-interrogation peut ramener plusieurs lignes à condition que l'opérateur de comparaison admette à sa droite un ensemble de valeurs. Les opérateurs permettant de comparer une valeur à un ensemble de valeurs sont : l'opérateur IN les opérateurs obtenus en ajoutant ANY ou ALL à la suite d'un opérateur de comparaison classique (=,!=, >, >=, <, <=) ANY: la comparaison est vraie si elle est vraie pour au moins un des éléments de l'ensemble. ALL: la comparaison sera vraie si elle est vraie pour tous les éléments de l'ensemble. Exemple : Quels sont les employés gagnant plus que tous les employés du département 30. SELECT ename, sal FROM emp WHERE sal > ALL (SELECT sal FROM emp WHERE deptno= 30); 9

Les sous-interrogations (Imbrications & Corrélations) Sous-interrogation ramenant plusieurs colonnes Il est possible de comparer le résultat d'un SELECT ramenant plusieurs colonnes à une liste de colonnes. La liste de colonnes figurera entre parenthèses à gauche de l'opérateur de comparaison. Exemple : Quels sont les employés ayant même fonction et même supérieur que SMITH? SELECT ename, job, mgr FROM emp WHERE (job, mgr) = (SELECT job, mgr FROM emp WHERE ename= SMITH ); 10

Les sous-interrogations (Imbrications & Corrélations) Sous-interrogation synchronisée avec l'interrogation principale Dans les exemples précédents, la sous-interrogation était évaluée d'abord, puis le résultat pouvait être utilisé pour exécuter l'interrogation principale. SQL sait également traiter une sousinterrogation faisant référence à une colonne de la table de l'interrogation principale. Le traitement dans ce cas est plus complexe car il faut évaluer la sous-interrogation pour chaque ligne de l'interrogation principale. Exemple : Quels sont les employés ne travaillant pas dans le même département que leur supérieur hiérarchique. SELECT ename FROM emp e WHERE deptno!= (SELECT deptno FROM emp WHERE e.mgr = empno) AND mgr IS NOT NULL; Il a fallu ici renommer la table emp de l'interrogation principale pour pouvoir la référencer dans la sous-interrogation. Mgr IS NOT NULL est nécessaire car dans le cas de président la colonne mgr est NULL et la sous-requête ne ramène alors aucune valeur. 11

Les sous-interrogations (Imbrications & Corrélations) Sous-interrogation ramenant au moins une ligne L'opérateur EXISTS permet de construire un prédicat vrai si la sous-interrogation qui suit ramène au moins une ligne. Exemple : Quels sont les employés travaillant dans un département qui a procédé à des embauches depuis le début de l'année 94. SELECT * FROM emp e WHERE EXISTS (SELECT * FROM emp WHERE hiredate >= '01-jan-94 AND deptno= e.deptno); Remarque : On peut inverser le sens de l'opérateur EXISTS en le faisant précéder de NOT. 12

Les sous-interrogations (Imbrications & Corrélations) Sous-interrogations multiples Un SELECT peut comporter plusieurs sous-interrogations, soit imbriquées, soit au même niveau dans différents prédicats combinés par des AND ou des OR. Exemple : Liste des employés du département 10 ayant même fonction que quelqu'un du département de SMITH. SELECT ename, job FROM emp WHERE deptno= 10 AND job IN (SELECT job FROM emp WHERE deptno = (SELECT deptno FROM emp WHERE ename= SMITH )); 13

Exemple Q1: liste de ceux qui gagnent plus qu'un employé du département 10 select ename,sal from emp where sal > ENAME SAL ---------- --------- ALLEN 1600 JONES 2975 BLAKE 2850 CLARK 2450 SCOTT 3000 KING 5000 TURNER 1500 FORD 3000 8 ligne(s) sélectionnée(s). any (select sal from emp where deptno=10); 14

Exemple Q2: liste des employes dont le manager est BLAKE select ename from emp where mgr = (select empno from emp where ename = 'BLAKE'); ENAME ----- ALLEN WARD MARTIN TURNER JAMES 15

Exemple Q3 :Liste de ceux qui gagnent plus que n'importe lequel des managers select ename from emp where sal > all (select sal from emp where job = 'MANAGER'); ENAME ----- SCOTT KING FORD 16

Exemple Q4 : liste des employés dont le salaire (incluant leur éventuelle commission) dépasse celui d'un chef SELECT ename, sal + NVL(comm,0) FROM emp WHERE sal+nvl(comm,0) > ( select max(sal) FROM emp WHERE job = 'MANAGER' ) 17

Exemple Q5: liste des employés dont le salaire (incluant leur éventuelle commission) dépasse celui DE LEUR chef SELECT ename, sal + NVL(comm,0) FROM emp x WHERE sal+nvl(comm,0) > ( select SAL FROM emp WHERE empno = x.mgr ) 18

Exemple Q6: Afficher les employés dont le salaire est le plus élevé de leur département. Select from where sal = empno, ename, deptno, sal EMP E (Select max(sal) from EMP where e.deptno = deptno ) EMPNO ENAME DEPTNO SAL ----- ----- ------ --- 7698 BLAKE 30 2850 7788 SCOTT 20 3000 7839 KING 10 5000 7902 FORD 20 3000 19

Exemple Q7: liste des départements ayant des employés (40 n'en a pas!) select deptno from emp intersect select deptno from dept; DEPTNO ------- 10 20 30 20