Le langage de requêtes

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

Le langage SQL Rappels

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

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

16H Cours / 18H TD / 20H TP

Langage SQL : créer et interroger une base

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

1 Introduction et installation

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

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

Support de cours «SGBD»

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

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

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

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

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

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

Cours 4 : Agrégats et GROUP BY

SQL Historique

Les bases de données

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

INTRODUCTION AU DATA MINING

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

Le Langage De Description De Données(LDD)

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

Oracle : SQL. Denis Roegel roegel@loria.fr IUT Nancy / Introduction 2

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

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

Vincent Augusto

FileMaker 13. Guide de référence SQL

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

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

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

COURS SQL. SQL*Plus PL/SQL

Mejdi BLAGHGI & Anis ASSÈS

Bases de données relationnelles

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

Thierry Spriet Version rééditée au format PDF et remise en page

MySQL / SQL EXEMPLES

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

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

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

MODE OPERATOIRE OPENOFFICE BASE

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

Bases de Données. Plan

Bases de données élémentaires Maude Manouvrier

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

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

Excel avancé. Frédéric Gava (MCF)

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

Bases de données. Mihaela Mathieu

Bases de données Outils de gestion

TP Bases de données réparties

A QUOI SERVENT LES BASES DE DONNÉES?

TP 8: LES OPERATEURS ENSEMBLISTES

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

TP Contraintes - Triggers

Compétences Business Objects

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

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

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

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

- ORS - Optimisation de Requêtes SQL sous Oracle

Interpréteur d algèbre relationnelle

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

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

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

Olivier Mondet

COURS de BASES de DONNEES

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

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

LE LANGAGE SQL2 1. INTRODUCTION

Bases de données avancées Introduction

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

Bases de données multidimensionnelles et mise en œuvre dans Oracle

Quelques aspects du Relationnel-Objet du SGBD Oracle

Oracle. SQL 2 & SQL*Plus. Auteur : Clotilde Attouche. Version 1.1. Du 6 Mars 2010

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

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

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Bases de Données Avancées

Les Entrepôts de Données

TP 1. Prise en main du langage Python

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

Rappel sur les bases de données

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

Initiation à Excel. Frédéric Gava (MCF)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

SAP BusinessObjects Web Intelligence (WebI) BI 4

Transcription:

1. La base de données...2 2. L algèbre relationnelle...3 2.1. La projection... 3 2.2. La sélection (ou restriction)... 3 2.3. La jointure... 4 2.4. L union... 4 2.5. L intersection... 5 2.6. La différence... 6 2.7. La division... 6 Le langage SQL...7 2.8. La projection... 7 2.9. La sélection (ou restriction)... 7 2.10. La jointure... 8 2.11. Les expressions et fonctions... 9 2.11.1. les opérateurs arithmétiques : +, -, *, /... 9 2.11.2. les fonctions arithmétiques... 9 2.11.3. Les fonctions sur les chaînes de caractères... 9 2.11.4. Les fonctions sur les dates... 9 2.11.5. Les fonctions de conversion... 10 2.12. Les fonctions d agrégat :... 10 2.13. Les requêtes imbriquées... 11 2.14. La clause GROUP BY...Erreur! Signet non défini. 2.15. La clause HAVING...Erreur! Signet non défini. Rappels : Un système de gestion de bases de données relationnel (SGBDR) rassemble une ou plusieurs bases de données ainsi que l ensemble des outils nécessaires à la manipulation des données. Il permet de : - décrire les données et leur structure (type de données) grâce à un langage de définition de données (LDD), - manipuler les données par des requêtes d interrogation et des instructions de mise à jour grâce au langage de manipulation de données (LMD). Le langage SQL est pratiquement devenu une norme dans le cadre de la gestion des données. 1

1. La base de données La base de données EMP-DEPT utilisée en exemple dans ce cours décrit les caractéristiques des employés d une entreprise : Table EMP : les employés empno ename job mgr hiredate sal comm deptno 7369 SMITH CLERK 7902 17/12/80 800 20 7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30 7521 WARD SALESMAN 7698 22/02/81 1250 500 30 7566 JONES MANAGER 7839 02/04/81 2975 20 7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30 7698 BLAKE MANAGER 7839 01/05/81 2850 30 7782 CLARK MANAGER 7839 09/06/81 2450 10 7788 SCOTT ANALYST 7566 09/11/81 3000 20 7839 KING PRESIDENT 17/11/81 5000 10 7844 TURNER SALESMAN 7698 08/09/81 1500 0 30 7876 ADAMS CLERK 7788 23/09/81 1100 20 7900 JAMES CLERK 7698 03/12/81 950 30 7902 FORD ANALYST 7566 03/12/81 3000 20 7934 MILLER CLERK 7782 23/01/82 1300 10 Signification des colonnes: - empno : numéro identifiant un employé, - ename : nom d employé, - job : fonction, - mgr : numéro du responsable (manager) d un employé, - hiredate : date d embauche, - sal : salaire, - comm : commissions perçues (uniquement pour les vendeurs, les représentants), - deptno : numéro de département. Table DEPT: les départements (au sens service) deptno dname loc 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON Signification des colonnes: - deptno : numéro identifiant un département, - dname : nom du département, - loc : localisation (la ville). Contraintes d intégrité référentielle : - deptno de emp référence deptno de dept - mgr de emp référence empno de emp 2

2. L algèbre relationnelle L algèbre relationnelle est un outil mathématique permettant de réaliser des calculs (appelés requêtes) sur des relations. 2.1. La projection L opération de projection permet de retenir uniquement certaines colonnes (champs) d une relation. R = Proj (<nom relation> ; <nom des attributs>) résultat = proj(emp, {ename, empno}) ename empno SMITH 7369 ALLEN 7499 WARD 7521 JONES 7566 MARTIN 7654 BLAKE 7698 CLARK 7782 SCOTT 7788 KING 7839 TURNER 7844 ADAMS 7876 JAMES 7900 FORD 7902 MILLER 7934 empno ename job mgr hiredate sal comm deptno 7369 SMITH CLERK 7902 17/12/80 800 20 7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30 7521 WARD SALESMAN 7698 22/02/81 1250 500 30 7566 JONES MANAGER 7839 02/04/81 2975 20 7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30 7698 BLAKE MANAGER 7839 01/05/81 2850 30 7782 CLARK MANAGER 7839 09/06/81 2450 10 7788 SCOTT ANALYST 7566 09/11/81 3000 20 7839 KING PRESIDENT 17/11/81 5000 10 7844 TURNER SALESMAN 7698 08/09/81 1500 0 30 7876 ADAMS CLERK 7788 23/09/81 1100 20 7900 JAMES CLERK 7698 03/12/81 950 30 7902 FORD ANALYST 7566 03/12/81 3000 20 7934 MILLER CLERK 7782 23/01/82 1300 10 2.2. La sélection (ou restriction) La restriction permet d'extraire d'une table les lignes qui satisfont une ou plusieurs conditions. R = Resctrict (<nom relation> ; <condition>) résultat = restrict(emp, deptno=20) 3

empno ename job mgr hiredate sal comm deptno 7369 SMITH CLERK 7902 17/12/80 800 20 7566 JONES MANAGER 7839 02/04/81 2975 20 7788 SCOTT ANALYST 7566 09/11/81 3000 20 7876 ADAMS CLERK 7788 23/09/81 1100 20 7902 FORD ANALYST 7566 03/12/81 3000 20 empno ename job mgr hiredate sal comm deptno 7369 SMITH CLERK 7902 17/12/80 800 20 7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30 7521 WARD SALESMAN 7698 22/02/81 1250 500 30 7566 JONES MANAGER 7839 02/04/81 2975 20 7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30 7698 BLAKE MANAGER 7839 01/05/81 2850 30 7782 CLARK MANAGER 7839 09/06/81 2450 10 7788 SCOTT ANALYST 7566 09/11/81 3000 20 7839 KING PRESIDENT 17/11/81 5000 10 7844 TURNER SALESMAN 7698 08/09/81 1500 0 30 7876 ADAMS CLERK 7788 23/09/81 1100 20 7900 JAMES CLERK 7698 03/12/81 950 30 7902 FORD ANALYST 7566 03/12/81 3000 20 7934 MILLER CLERK 7782 23/01/82 1300 10 2.3. La jointure La jointure agit sur deux tables ou plus. Elle permet de rapprocher les informations issues de 2 tables ayant un attribut commun (qui ne porte pas forcément le même nom dans les deux tables). R = Join (<relation1>, <relation2>, <condition de jointure>) résultat = join(emp, dept, emp.deptno = dept.deptno) empno ename job mgr hiredate sal comm deptno Deptno Dname loc 7369 SMITH CLERK 7902 17/12/80 800 20 20 RESEARCH DALLAS 7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30 30 SALES CHICAGO 7521 WARD SALESMAN 7698 22/02/81 1250 500 30 30 SALES CHICAGO 7566 JONES MANAGER 7839 02/04/81 2975 20 20 RESEARCH DALLAS 7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30 30 SALES CHICAGO 7698 BLAKE MANAGER 7839 01/05/81 2850 30 30 SALES CHICAGO 7782 CLARK MANAGER 7839 09/06/81 2450 10 10 ACCOUNTING NEW YORK 7788 SCOTT ANALYST 7566 09/11/81 3000 20 20 RESEARCH DALLAS 7839 KING PRESIDENT 17/11/81 5000 10 10 ACCOUNTING NEW YORK 7844 TURNER SALESMAN 7698 08/09/81 1500 0 30 30 SALES CHICAGO 7876 ADAMS CLERK 7788 23/09/81 1100 20 20 RESEARCH DALLAS 7900 JAMES CLERK 7698 03/12/81 950 30 30 SALES CHICAGO 7902 FORD ANALYST 7566 03/12/81 3000 20 20 RESEARCH DALLAS 7934 MILLER CLERK 7782 23/01/82 1300 10 10 ACCOUNTING NEW YORK 2.4. L union L'union de deux tables R et S, notée R U S ou UNION(R,S), est une table T de même schéma (les domaines associés aux colonnes de R sont identiques aux domaines associés aux colonnes de S), contenant les enregistrements appartenant à R ou à S ou aux deux tables. R = Union (<relation1>, <relation2>) 4

Relation R1 : 7839 KING 10 7934 MILLER 10 Relation R2 : 7788 SCOTT 20 7876 ADAMS 20 7902 FORD 20 résultat = union(r1, R2) 7839 KING 10 7934 MILLER 10 7788 SCOTT 20 7876 ADAMS 20 7902 FORD 20 2.5. L intersection L'intersection de deux tables R et S, notée R S ou INTERSECT(R,S), est une table T de même schéma, contenant les enregistrements appartenant à la fois à R et S. Relation R1 : R = Intersect (<relation1>, <relation2>) Relation R2 : 7839 KING 10 7934 MILLER 10 7788 SCOTT 20 7876 ADAMS 20 7902 FORD 20 résultat = intersect(r1,r2) 5

2.6. La différence La différence de deux tables R et S, notée R - S ou MINUS(R,S), est une table T de même schéma, contenant les enregistrements appartenant à R mais pas à S. Relation R1 : R = Minus (<relation1>, <relation2>) Relation R2 : 7839 KING 10 7934 MILLER 10 7788 SCOTT 20 7876 ADAMS 20 7902 FORD 20 Résultat = minus(r1, R2) 7839 KING 10 7934 MILLER 10 2.7. La division La division agit sur deux tables R et S ayant un attribut commun (qui ne porte pas forcément le même nom dans les deux tables). Elle est constituée des enregistrements de R qui sont accouplés à chacune des valeurs de S. Relation Conduit : R = <nom relation> (<attribut 1> / <attribut 2>) <nom relation> Relation Avions : npilote numavion 1 1 1 2 1 3 2 1 2 2 3 1 navion description 1 Boeing 747 2 Airbus A320 3 Tupolev Résultat = Conduit(numavion / navion) Avions Npilote 1 On obtient dans la relation résultat les numéros des pilotes qui conduisent tous les avions répertoriés dans la relation Avions. 6

Le langage SQL Le langage SQL est un outil d interrogation des SGBDR qui s appuie sur l algèbre relationnelle. Les mots réservés du langage sont écrits en majuscule. 2.8. La projection SELECT [DISTINCT] (<nomattribut1>, [<nomattribut2, ] ) * FROM <nom de table> ; La clause DISTINCT permet d éliminer les doublons : si dans le résultat plusieurs lignes sont identiques, une seule sera conservée. Le symbole * permet d obtenir tous les attributs sans avoir à tous les citer. Exemples : Liste des numéros et noms d employés Select ename, empno from emp ; Liste de tous les employés Select * from emp ; Liste des fonctions occupées dans l entreprise Select job from emp ; Remarque : la requête renvoie plusieurs lignes identiques. Liste des fonctions occupées dans l entreprise (avec suppression des lignes identiques) Select distinct job from emp ; La clause ORDER BY : Elle permet de trier les résultats suivant différentes expressions (souvent des noms de colonnes) par ordre croissant (ASC) ou décroissant (DESC). L option ASC est prise par défaut pour chacune des expressions citées. Liste des employés par salaires décroissants Select ename, sal from emp order by sal desc; 2.9. La sélection (ou restriction) SELECT [DISTINCT] (<nomattribut1>, [<nomattribut2, ] ) * FROM <noms des tables> WHERE <condition de recherche> [ AND <condition de recherche> ]; Une condition de recherche est de la forme : argument1 opérateur argument2 7

Les différents opérateurs d une condition de recherche : Opérateur Description = Egal!= Différent <> Différent > Supérieur >= Supérieur ou Egal < Inférieur <= Inférieur ou Egal Between... AND... Entre... et... In Dans Like Comme Is Null Est indéfini Any Au moins 1 All Tout Exemples : Liste des employés appartenant au département 20 Select ename, empno from emp where deptno = 20 ; Liste des employés occupant la fonction de vendeur ou analyste Select ename, empno from emp where job in ("SALESMAN", "ANALYST") ; Liste des employés embauchés au mois de septembre 1981 Select ename, empno, hiredate from emp where hiredate between "01/09/81 and "30/09/81 ; Liste des employés dont le salaire est compris entre 2000 et 3000 Select * from emp where sal between 2000 and 3000 ; Liste des employés dont le nom commence par un J Select * from emp where ename like "J%"; 2.10. La jointure SELECT [DISTINCT] (<nomattribut1>, [<nomattribut2, ] ) * FROM <noms des tables> WHERE <condition de recherche> [ AND <condition de recherche> ]; Liste des employés ainsi que le nom de leur département Select ename, dname from emp, dept where emp.deptno = dept.deptno Il est possible d utiliser un alias pour renommer les tables. Select ename, dname 8

from emp E, dept D where E.deptno = D.deptno 2.11. Les expressions et fonctions Elles sont utilisables après les clauses SELECT, WHERE, HAVING et ORDER BY. 2.11.1. les opérateurs arithmétiques : +, -, *, / Select ename, sal + com from emp where comm is not null and comm > 0.25*sal; 2.11.2. les fonctions arithmétiques ABS(n) valeur absolue CEIL(n) le plus petit entier inférieur qui dépasse n FLOOR(n) le plus grand entier inférieur à n MOD(n,m) reste de la division de m par n POWER(n,m) m est élevé à la puissance n ROUND(n, [m]) n est arrondi à m décimales (m=0 si omis) TRUNC(n, [m]) n est tronqué à m décimales (m=0 si omis) SQRT(n) racine carrée LEAST(n1,n2 ) la plus faible valeur parmis n1, n2 GREATEST(n1,n2 ) la plus forte valeur parmis n1, n2 Select ename, greatest(sal, comm) from emp; Select empno, ename, least(round(sal), round(comm)) From emp Where round(sal) > 2000; 2.11.3. Les fonctions sur les chaînes de caractères LENGTH(c) longueur de la chaîne UPPER(c), LOWER(c) conversion en majuscules, minuscules SUBSTR(c,p [,l]) extrait la sous-chaine de c à partir du p-ième caractère, ayant pour longueur l GREATEST(c1,c2 ) LEAST(c1,c2 ) c1 c2 concatène les chaînes c1 et c2 2.11.4. Les fonctions sur les dates Deux dates peuvent être comparées entre elles avec les opérateurs de comparaison (<, > ). Une date peut être cherchée dans un intervalle (d between d1 and d2). Le nombre de jours entre deux dates peut être obtenu par : d1-d2. 9

LEAST(d1,d2 ) GREATEST(n1,n2 ) ADD_MONTHS(d,n) MONTHS_BETWEEN(d1,d2) NEXT_DAY(d, jour) ajoute n mois à la date d et renvoie une date exprime la différence de mois entre d1 et d2 donne la première date qui suit la date d et qui Correspond au jour de la semaine donné Ex : next_day(d, Monday ) SYSDATE est une variable donnant la date système (la date courante). select * from emp Where sysdate-hiredate < 30; Elle peut être affichée par : select sysdate from dual; 2.11.5. Les fonctions de conversion Le format par défaut d une date est : DD/MON/YY qui correspond à 2 chiffres (jours), 3 lettres (mois), 2 chiffres (année), les champs étant séparés par le symbole / Par exemple : 20/AUG/93 La fonction TO_CHAR(d, format) convertit une date ou une expression de type date en une chaîne dont le format est précisé. Par exemple : to_char(d, dd/mm/yy ) renvoie 20/08/93 select ename, to_char(hiredate, DD/MONTH ) from emp Where to_char(hiredate, yyyy ) = 1993 ; La fonction TO_DATE(c, format) convertit une chaîne associée à une date dont le format est précisé en un objet de type date. Par exemple : to_date( 89/16/07, YY/DD/MM ) retourne la date du 16 juillet 1989. La fonction TO_NUMBER(c) convertit une chaîne de caractères numériques en un objet de type numérique. 2.12. Les fonctions d agrégat : Les fonctions d agrégat permettent d'obtenir des informations relatives à un ensemble de données. Elles s appliquent à un ensemble de lignes et renvoient une valeur. count avg sum min max dénombre les occurrences d'un attribut calcule la moyenne d'un attribut calcule la somme sur un attribut détermine la plus petite occurrence d'un attribut détermine la plus grande occurrence d'un attribut Toutes ces fonctions d'agrégats ignorent les valeurs nulles mais peuvent avoir des valeurs qui se répètent. Pour préciser qu'il faut tenir compte de toutes les valeurs ou 10

seulement de celles qui sont distinctes, il faut préciser ALL ou DISTINCT ( par défaut, c'est ALL). Nombre d employés appartenant au département 20 Select count(*) from emp where deptno = 20 ; Salaire le plus élevé Select max(sal) from emp ; Nombre de fonctions Select count(distinct job) from emp; Select ename, max(sal) Requête mal construite! From emp; 2.13. Les requêtes imbriquées Exemple de requête ; Liste des employés appartenant au département des Ventes Select ename from emp, dept where emp.deptno = dept.deptno and dept.dname = "SALES" Un requête imbriquée est composée de deux ou plusieurs select. Le premier est appelé requête principale, le ou les suivants, sous-requêtes. L exécution se fait en deux temps : - d abord les sous-requêtes qui extraient les valeurs intermédiaires - puis la requête principale s exécute sur les valeurs intermédiaires Le lien entre deux Select est réalisé par : - IN si la sous-requête fournit plusieurs valeurs - = si la sous-requête ne fournit qu une seule valeur Exemples ; Liste des employés appartenant au département des Ventes Select ename from emp where deptno = ( select deptno from dept where dname = "SALES"); Liste des départements comportant au-moins un employé Select dname from dept where deptno in (select deptno from emp); 11