Langage d’interrogation des Données LID

Slides:



Advertisements
Présentations similaires
Copyright Oracle Corporation, Tous droits réservés. 9 Écriture de Sous- Interrogations Synchronisées.
Advertisements

Les fonctions de groupes Gestion des transactions
Bases de données et SGBD relationnels
2 Ils associent les rangées de 2 requêtes UNION [ALL] INTERSECT MINUS.
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
OPTIMISATION DE BASE DE DONNEES ORACLE
Cours 5: Sous requetes Exploitation des données Présentation  Supposez que vous voulez écrire une requête pour trouver qui a un salaire plus.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
 C'est une fenêtre par laquelle les informations d'une table peuvent être visualisées et changées.  C'est une table virtuelle: ◦ elle n'existe pas ◦
Sous-Interrogations.
Sélection de colonnes (la projection)
BASES DE DONNÉES RELATIONNELLES
Afficher des Données Issues de Plusieurs Tables
Copyright  Oracle Corporation, Tous droits réservés. 2 Sélection et Tri des Lignes Retournées par un SELECT.
Création et Gestion de Tables
Le langage SQL. Voir polycopié: Introduction à SQL SQL.
Copyright  Oracle Corporation, Tous droits réservés. 11 Extraction Hiérarchique.
Complément sous-requêtes
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Le Langage d ’ Interrogation des donn é es (LID) Module 2.
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
Le Langage de Manipulation de Données LMD Module 6.
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
Les sous-requêtes ou requêtes imbriquées B.T.S. S.I.O – SI3 – 1.
A la fin de ton année de 4 ème, tu dois être capable d’utiliser parfaitement un Mais d’abord qu’est-ce qu’un TABLEUR ? ???? TABLEUR- GRAPHEUR Page suivante.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
SQL partie 5 1 LMD create – update – primary key secondary key.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
SQL query - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes.
IRIDOC 2 : tutoriel de formation à la recherche documentaire Outils méthodologiques > Les opérateurs logiques.
Construire des requêtes
Environnement du développement de BD ORACLE REPORTS 10g
Intégration du P7 dans l’épreuve E41
Initiation aux bases de données et à la programmation événementielle
Université Stendhal - Grenoble
Langage de manipulation de données (LMD)
Collecte de données CAPI
Généralité sur les bases de données
Les bases de données et le modèle relationnel
Corrigé du TP SQL 2 Énoncé -Rappel Requête 1 :
Langage de Manipulation des Données LMD
DESSIN TECHNIQUE Té de dessin Collège technique Sousse Collège technique Sousse.
Outils méthodologiques
Langage d’interrogation des Données LID
SQL LID – INTERROGATIN DES DONNEES
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
SQL LMD FICHE 4.6.
Manipulation D’Une Base De Données
Structure D’une Base De Données Relationnelle
Calcul Scientifique Initiation à SCILB
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
2 Copyright © 2004, Oracle. Tous droits réservés. Restreindre et trier les données.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
4 Copyright © 2004, Oracle. Tous droits réservés. Afficher des données agrégées à l'aide des fonctions de groupe.
5 Copyright © 2004, Oracle. Tous droits réservés. Afficher des données de plusieurs tables.
6 Copyright © 2004, Oracle. Tous droits réservés. Utiliser des sous-interrogations pour résoudre des interrogations.
7 Copyright © 2004, Oracle. Tous droits réservés. Utiliser les opérateurs ensemblistes.
Préface Introduction Objectifs du chapitre I-2 Objectifs du cours I-3 Oracle10g I-4 Oracle Database 10g I-6 Oracle Application Server 10g I-7 Oracle Enterprise.
C Copyright © 2004, Oracle. Tous droits réservés. Syntaxe des jointures Oracle.
Langage d’interrogation des Données Les fonctions de groupes
Algèbre relationnelle
© Robert Godin. Tous droits réservés.
SQL InfoBanque 16/11/2018 Halim M'SILTI.
Semaine 3 Retour sur la semaine 2 Plan de séance
Définition : 2 Les structures de contrôle conditionnelles permettent à un programme de modifier son traitement en fonction d’une condition.
Principes de programmation (suite)
Systèmes d’Information et Application
Opérateurs Ensemblistes
Transcription de la présentation:

Langage d’interrogation des Données LID Année universitaire 2017/2018 LFIG 2 Langage d’interrogation des Données LID Opérateurs ensemblistes et sous-interrogation Fahmi Ben Rejab

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

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).

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 ...)

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é;

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é;

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é;

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’);

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);

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’);

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 sous-interrogation 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.

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.

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’));

Exemple Q1: liste de ceux qui gagnent plus qu'un employé du département 10 select ename,sal from emp where sal > any (select sal where deptno=10); 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).

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

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

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) WHERE job = 'MANAGER' )

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 )

Exemple Q6: Afficher les employés dont le salaire est le plus élevé de leur département. Select empno, ename, deptno, sal from EMP E where sal = (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

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