Cours 5: Sous requetes Exploitation des données. 3.2.1. Présentation  Supposez que vous voulez écrire une requête pour trouver qui a un salaire plus.

Slides:



Advertisements
Présentations similaires
PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Advertisements

STS2 - Révision des requêtes de sélection2/9/2003 Forme d'une requête de Sélection nSELECT nFROM nWHERE nGROUP BY nHAVING nORDER BY.
Techniques dindexation Implémentation du modèle relationnel ~ LIF10: Fondements des bases de données relationnelles.
Les fonctions.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Les contraintes d’integrité
LMD: Langage de Manipulation de Données
Regrouper les Données avec les Fonctions de Groupe
T ECHNOLOGIES O RACLE Manipulation des données © sebvita.com.
Copyright Oracle Corporation, Tous droits réservés. 9 Écriture de Sous- Interrogations Synchronisées.
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.
Les requêtes Les requêtes permettent dinterroger une base de données suivant 3 opérateurs : La projection Affiche le contenu dun champ complet En langage.
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL PHILIPPE BANCQUART.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Cours N°2 Base de Données & Langage SQL
Manipulation des données Requêtes simples
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 CSI 2532 Lab3 6 Février 2012 Programmation avancée SQL.
Initiation aux bases de données et à la programmation événementielle
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Structures alternative et répétitive
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Dans la barre des messages, cliquez sur Activer la modification,
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
Linq & les expressions lambda. L Language In Integrated Q Query.
SIO SLAM1: Exploitation d’un schéma de données
Access Les requêtes Table médias Table (*) Requêtes simples.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Rerate Player Manager Step by Step. Rerate Player Manager Tool Sélectionner le Rerate Player Menu afin d’accéder au menu réservé au ‘Rerate’
Réalisé par VISAGE JONATHAN (aidé par SLUYS DIDRIC) 2 NSSE.
 Syntaxe du langage PHP
 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 ◦
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Sous-Interrogations.
Module 7 : Utilisation de requêtes élaborées
Sélection de colonnes (la projection)
Les structures conditionnelles en PHP
SQL : Langage de Manipulation des données
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.
Le langage SQL. Voir polycopié: Introduction à SQL SQL.
Le Langage de Manipulation de Données LMD. 2 Les ordres SQL de manipulation INSERT –Insertion (ajout) de ligne(s) dans une table –Utiliser SQL*LOAD pour.
MANIPULATION DES DONNEES : mise à jour des n-uplets.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
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.
SYSTÈMES d’équations MATHS 3E SECONDAIRE
Le Langage de Manipulation de Données LMD Module 6.
SQL Partie 2. SQL est un langage de manipulation de données SQL est un langage de manipulation de données (LMD), cela signifie qu'il permet de sélectionner,
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
Les fonctions et les regroupements B.T.S. S.I.O – SI3 – 1.
Les sous-requêtes ou requêtes imbriquées B.T.S. S.I.O – SI3 – 1.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
Langage de manipulation de données (LMD)
Corrigé du TP SQL 2 Énoncé -Rappel Requête 1 :
Langage d’interrogation des Données LID
Manipulation D’Une Base De Données
Langage d’interrogation des Données LID
4 Copyright © 2004, Oracle. Tous droits réservés. Afficher des données agrégées à l'aide des fonctions de groupe.
6 Copyright © 2004, Oracle. Tous droits réservés. Utiliser des sous-interrogations pour résoudre des interrogations.
Transcription de la présentation:

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 important que celui d’Abel. Pour résoudre ce problème, vous avez besoin de deux requêtes : une pour trouver combien gagne Abel et une deuxième trouver qui gagne plus que ce montant.  Vous pouvez résoudre ce problème en combinant les deux requêtes, c’est-à-dire en plaçant une requête à l’intérieure d’une autre requête.

Qui gagne plus qu’Abel ? La requête à l’intérieure (ou la sous-requête) retourne une valeur qui est utilisée par la requête extérieure (ou la requête principale). Utiliser une sous-requête est équivaut à combiner deux requêtes séquentielles en utilisant le résultat de la première comme la valeur de recherche dans la seconde requête.

Syntaxe des sous-requêtes  Une sous-requête est une clause SELECT contenue dans une autre clause SELECT. Vous pouvez construire des requêtes plus poussées que les requêtes simples en utilisant les sous-requêtes.  Elles peuvent être très utiles quand vous avez besoin de sélectionner les lignes d’une table avec une condition qui dépend des données de la table elle-même.  Vous pouvez inclure les sous-requêtes dans de nombreuses clauses SQL dont celles qui suivent :  Clause WHERE  Clause HAVING  Clause FROM

SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); Dans la syntaxe : operator inclut une condition de comparaison tel que >, =, ou IN. Remarque : Les conditions de comparaisons sont réparties en deux catégories :  Les opérateurs single-row (>, =, >=,, <= ).  Les opérateurs multiple-row ( IN, ANY, ALL ).

Utiliser une sous-requête  Exemple : La requête intérieure récupère le salaire de l’employé Abel. La requête extérieure prend le résultat de la requête intérieure et l’utilise pour afficher tous les employés qui gagnent plus que ce montant.

Guide d’utilisation des sous- requêtes  Une sous-requête doit être délimitée par des parenthèses.  Placez la sous-requête du côté droit de la condition de comparaison pour la meilleure visibilité.  Deux classes de condition de comparaison sont utilisées dans les sous-requêtes : les opérateurs single-row et les opérateurs multiple- row.  Utilisez un opérateur single-row avec les sous-requêtes single-row et les opérateurs multiple-row avec les sous-requêtes multiple-row.  Une clause ORDER BY peut être utilisée et est nécessaire dans la sous-requête pour réaliser des analyses Top-N.

Types de sous-requêtes  Une sous-requête multiple-row est une sous-requête qui retourne plus d’une ligne.  Une sous-requête single-row est une sous-requête qui retourne seulement une ligne. Remarque : Il existe également des sous-requêtes multi-colonne qui sont des sous- requêtes qui retournent plus d’une colonne.

Sous-requête Single-Row  Une sous-requête single-row est une requête qui retourne une ligne de la requête interne SELECT. Ce type de sous-requête utilise un opérateur single-row. Voici la liste des opérateurs single-row : OpérateurSignification = Égale à > Plus grand que >= Plus grand ou égal à < Plus petit que <= Plus petit ou égal à <> Different de

Exemple (Single-Row)

Exemple 2 (Single-Row)  Une requête SELECT peut être considérée comme un bloc de requête. Cet exemple affiche les employés qui ont le même identifiant de poste que l’employé 141 et dont le salaire est supérieur à celui de l’employé 143.  Cet exemple est composé de trois blocs de requête : une requête principale et deux sous-requêtes.  Les sous-requêtes sont exécutées en premier, produisant les résultats recherchés, respectivement ST_CLERK et La requête principale est alors traitée et utilise les valeurs qui sont retournées par les sous- requêtes pour compléter les conditions de recherche.  Chacune des deux requêtes internes retourne une valeur (ST_CLERK et 2600 respectivement), donc chaque sous-requête SQL est appelée sous-requête single-row.

Exemple 2 (Single-Row)

les fonctions de groupe dans les sous-requêtes  Vous pouvez afficher les données d’une requête principale en utilisant une fonction de groupe dans une sous-requête ne retournant qu’une seule ligne. La sous-requête est entre parenthèse et est placée après la condition de comparaison.  Cet exemple affiche le nom de l’employé, l’identifiant de poste et le salaire pour tous les employés qui ont un salaire égal au salaire minimum. La fonction de groupe MIN retourne une seule valeur ( 2500 ) à la requête principale.

La clause HAVING avec les sous-requêtes  Vous pouvez utiliser les sous-requêtes non seulement dans la clause WHERE mais aussi dans la clause HAVING.L’ordre SQL affiche tous les départements qui ont un salaire plus grand que ceux du département 50

Exemple (Having single row):  Trouver le job avec le salaire moyen le moins élevé.  Le serveur exécute en premier la sous-requête.  Le serveur retourne les résultats dans la clause HAVING de la requête principale.

Les erreurs avec les sous- requêtes  Une erreur commune arrive lorsque plus d’une ligne est retournée pour une sous-requête single- row.  Un autre problème commun arrive avec les sous- requêtes quand aucune ligne n’est retournée par la sous-requête.

Sous-requêtes Multiple-Row  Les sous-requêtes qui retournent plus d’une ligne sont appelés les sous-requêtes multiple-row.  Vous devez utiliser un opérateur multiple-row au lieu d’un opérateur single-row avec les sous-requêtes single-row. Les opérateurs multiple-row attendent une ou plusieurs valeurs. Voici la liste des opérateurs Multi-row : : OpérateursSignification IN Égale à n’importe quel membre de la liste ANY Compare la valeur à chaque valeur retournée par la sous-requête ALL Compare la valeur à toutes les valeurs retournées par la sous-requête

Exemple 1 Multi-row  Trouvez les employés qui gagnent le même salaire que le salaire minimum de chaque département.  La sous-requête est exécutée en premier. La requête principale est alors traitée et utilise les valeurs qui sont retournés par la sous-requête pour compléter la condition de la recherche

Exemple 1 Multi-row En fait, la requête principale apparaît au serveur de la manière suivante :

Multi-row (Any)  L’opérateur ANY (et son synonyme l’opérateur SOME ) compare une valeur à chaque valeur retournée par la sous-requête. Ainsi, pour qu’une ligne soit retournée, la condition doit être validée avec une des valeurs retournées par la sous-requête.  L’exemple suivant affiche les employés qui ne sont pas des IT_PROG et dont le salaire est inférieur au salaire de n’importe quel IT_PROG. Le salaire maximal d’un programmeur ( IT_PROG ) est 9 000$.  <ANY signifie plus petit que le maximum.  >ANY signifie plus grand que le minimum  =ANY est équivalent à la clause IN.

Exemple Multi-row (Any)

Multi-row (ALL)  L’opérateur ALL compare une valeur à toutes les valeurs retournées par la sous-requête. Ainsi, pour qu’une ligne soit retournée, la condition doit être validée avec toutes les valeurs retournées par la sous-requête.  L’exemple suivant affiche les employés qui ne sont pas des IT_PROG et dont le salaire est inférieur aux salaires de tous les IT_PROG. Le salaire minimal d’un programmeur ( IT_PROG ) est 4 200$.  >ALL signifie plus grand que le maximum  <ALL signifie plus petit que le minimum

Exemple Multi-row (ALL) 9000, 6000, 4200 SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary < ALL (SELECT salary FROM employees WHERE job_id = 'IT_PROG') AND job_id <> 'IT_PROG';

Multi-row (NOT)  L’opérateur NOT peut être utilisé avec les opérateurs IN, ANY, et ALL.  Afficher tous les employés qui n’ont pas de subordonnés :