2. LE LANGAGE SQL DML (1) Version 2 - Janvier 2012

Slides:



Advertisements
Présentations similaires
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
Advertisements

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.
1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 6 Support de cours rédigé par Bernard COFFIN Université.
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 : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
Chapitre 3: SQL-ORACLE. Concepts de SQL SQL est un langage d’interrogation de base de données relationnelles pour  Définir les données (LDD)  Interroger.
UE2 - M22 Licence acoustique
Nouveautés Version 4.1 et mai 2017.
Utilisation des Gammes La chaîne numérique en Productique
Environnement du développement de BD ORACLE REPORTS 10g
Recherche des contradictions techniques
LES TABLEAUX EN JAVA.
Intégration du P7 dans l’épreuve E41
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Initiation aux bases de données et à la programmation événementielle
Langage de manipulation de données (LMD)
Algèbre relationnelle
Plateforme CountrySTAT Aperçu global de la préparation des tableaux dans la nouvelle plateforme CountrySTAT FORMATION DES POINTS FOCAUX SUR LE SYSTEME.
Les Bases de données Définition Architecture d’un SGBD
Structured Query Language
Initiation aux bases de données et à la programmation événementielle
Généralité sur les bases de données
Technologies d’intelligence d’affaires
Langage d’interrogation des Données LID
Implantation d’un îlot ou d’une Chaîne de Production
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Notion De Gestion De Bases De Données
Création Et Modification De La Structure De La Base De Données
SQL LMD FICHE 4.6.
Manipulation D’Une Base De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Langage d’interrogation des Données LID
SQL Structured Query Language
4. LE LANGAGE SQL AVANCE 1re partie
6. PRODUCTION DU CODE DE LA BASE DE DONNEES
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.
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.
2. CONCEPTS DES BASES DE DONNEES
Langage d’interrogation des Données Les fonctions de groupes
Base de données relationnelle et requêtes SQL
6. CONCEPTION PHYSIQUE RELATIONNELLE
3. LE LANGAGE SQL DML (2) Version 2 - Janvier 2012
Révision du format des données
SQL InfoBanque 16/11/2018 Halim M'SILTI.
SIO SI3 : Exploitation des données
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
NUMERATION et REPRESENTATION DES NOMBRES
7 Contraintes d’intégrité en SQL
5 Introduction au modèle relationnel 5.1 Concepts de base
Semaine 3 Retour sur la semaine 2 Plan de séance
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
4. LE LANGAGE SQL AVANCE 2e partie
Présentation du Portail Client
La recherche avancée.
Chapitre 8 : Organisation et gestion de données
2. CONCEPTS DES BASES DE DONNEES
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
PROGRAMMATION ET ENSEIGNEMENT
SQL Structured Query Language
Présentation des nouveaux programmes de mathématiques de première des séries technologiques Jessica Parsis.
Exploitation de vos données
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
Systèmes d’Information et Application
Python Nicolas THIBAULT
Transcription de la présentation:

2. LE LANGAGE SQL DML (1) Version 2 - Janvier 2012 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2. LE LANGAGE SQL DML (1) Version 2 - Janvier 2012 modifié le 18/9/2013 Support du chapitre 7, Le langage SQL DML (1) de l'ouvrage Bases de données, J-L Hainaut, Dunod 2009. II. Utilisation des bases de données

2. LE LANGAGE SQL DML (1) 2.1 Introduction 2.2 Extraction simple 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2. LE LANGAGE SQL DML (1) 2.1 Introduction 2.2 Extraction simple 2.3 Conditions plus complexes 2.4 Données extraites et données dérivées 2.5 Les fonctions agrégatives 2.6 Les sous-requêtes 2.7 Les quantificateurs ensemblistes Contenu II. Utilisation des bases de données

1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.1 Introduction Le sous-langage DML de SQL permet de consulter le contenu des tables et de les modifier. Il comporte 4 verbes. La requête select extrait des données des tables La requête insert insère de nouvelles lignes dans une table La requête delete supprime des lignes d'une table La requête update modifie les valeurs de colonnes de lignes existantes Chapitres 2 et 3 : étude limitée à SQL2 II. Utilisation des bases de données

Ce chapitre étudie la requête select opérant sur une seule table 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.1 Introduction Ce chapitre étudie la requête select opérant sur une seule table Toute requête select renvoie un résultat sous la forme d'une table En principe, une requête select peut opérer sur le résultat d'une autre requête select; vrai en SQL3 mais limité en SQL2 SQL est un langage imparfait, mais c'est tout ce dont on dispose : quand on n'a pas ce que l'on aime, il faut aimer ce que l'on a ! II. Utilisation des bases de données

2.2 Extraction simple 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.2 Extraction simple II. Utilisation des bases de données

2.2 Extraction simple select NCLI, NOM, LOCALITE from CLIENT; select * 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.2 Extraction simple select NCLI, NOM, LOCALITE from CLIENT; NCLI NOM LOCALITE B062 B112 B332 B512 C003 C123 C400 D063 F010 F011 F400 K111 K729 L422 S127 S712 GOFFIN HANSENNE MONTI GILLET AVRON MERCIER FERARD TOUSSAINT PONCELET JACOB VANBIST NEUMAN FRANCK VANDERKA GUILLAUME Namur Poitiers Genève Toulouse Bruxelles Lille Paris select * from CLIENT; * = liste des colonnes II. Utilisation des bases de données

2.2 Extraction simple select NCLI, NOM from CLIENT 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.2 Extraction simple select NCLI, NOM from CLIENT where LOCALITE = 'Toulouse'; NCLI NOM B512 C003 D063 F011 K729 GILLET AVRON MERCIER PONCELET NEUMAN II. Utilisation des bases de données

2.2 Extraction simple select LOCALITE from CLIENT where CAT = 'C1'; 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.2 Extraction simple select LOCALITE from CLIENT where CAT = 'C1'; LOCALITE Poitiers Namur lignes en double LOCALITE Namur Poitiers select distinct LOCALITE from CLIENT where CAT = 'C1'; II. Utilisation des bases de données

2.3 Conditions plus complexes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.3 Conditions plus complexes II. Utilisation des bases de données

2.3 Conditions plus complexes - les valeurs null 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.3 Conditions plus complexes - les valeurs null NCLI select NCLI from CLIENT where CAT = null; null ne peut être comparé à rien, même pas à lui-même ! NCLI D063 K729 select NCLI from CLIENT where CAT is null; select NCLI from CLIENT where CAT is not null; II. Utilisation des bases de données

2.3 Conditions plus complexes - in et between 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.3 Conditions plus complexes - in et between select NCLI from CLIENT where CAT in ('C1','C2','C3'); select NCLI from CLIENT where LOCALITE not in ('Toulouse','Breda'); select NCLI from CLIENT where COMPTE between 1000 and 4000; II. Utilisation des bases de données

2.3 Conditions plus complexes - Les masques 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.3 Conditions plus complexes - Les masques select NCLI from CLIENT where CAT like 'B_'; '_' = un caractère quelconque masques select NPRO from PRODUIT where LIBELLE like '%SAPIN%'; '%' = une chaîne quelconque Un masque définit une famille de chaînes de caractères : 'B_'  'B1' 'Bd' 'B ' '%SAPIN%'  'PL. SAPIN 200x20x2' 'Boite en SAPIN' 'SAPIN VERNI' 'B_'  'xB' 'B' 'B12' '%SAPIN%'  'Boite en Sapin' 'Achetez S A P I N !' II. Utilisation des bases de données

2.3 Conditions plus complexes - Combinaisons logiques 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.3 Conditions plus complexes - Combinaisons logiques select NOM, ADRESSE, COMPTE from CLIENT where LOCALITE = 'Toulouse' and COMPTE < 0; select NOM, ADRESSE, COMPTE from CLIENT where COMPTE > 0 and (CAT = 'C1' or LOCALITE = 'Paris') II. Utilisation des bases de données

2.4 Données extraites et données dérivées 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.4 Données extraites et données dérivées II. Utilisation des bases de données

2.4 Données extraires et données dérivées - expressions de calcul 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.4 Données extraires et données dérivées - expressions de calcul select 'TVA de ', NPRO, ' = ',0.21*PRIX*QSTOCK from PRODUIT where QSTOCK > 500; TVA de NPRO = 0,21*PRIX*QSTOCK 67788 12789 37770.6 47397 TVA de CS264 PA45 PH222 PS222 = select NPRO as Produit, 0.21*PRIX*QSTOCK as Valeur_TVA from PRODUIT where QSTOCK > 500; "Produit" est un alias de colonne Produit Valeur_TVA 67788 12789 37770.6 47397 CS264 PA45 PH222 PS222 II. Utilisation des bases de données

2.4 Données extraires et données dérivées - Fonctions SQL 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.4 Données extraires et données dérivées - Fonctions SQL Les fonctions SQL Outre les 4 opérations arithmétiques, SQL offre une large gamme de fonctions Chaînes de caractères trim(both ' ' from ADRESSE)||' '||upper(LOCALITE) position('NEUVE' in upper(ADRESSE)) > 0 upper(ADRESSE) like '%'||upper(LOCALITE)||'%' Conversion de type cast(DATECOM as char(12)) CLI.COMPTE - cast(QCOM*PRIX as decimal(9,2)) Fonctions temporelles extract(year from DATECOM) + 1 extract(hour from current_time) > 18 II. Utilisation des bases de données

2.4 Données extraires et données dérivées - Fonctions SQL 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.4 Données extraires et données dérivées - Fonctions SQL Fonction de sélection select NCLI, case substring(CAT from 1 for 1) when 'A' then 'bon' when 'B' then 'moyen' when 'C' then 'occasionnel' else 'inconnu' end, LOCALITE from CLIENT; Registres du système current_user : identification de l’utilisateur courant ; current_date : date courante ; current_time : instant courant ; current_timestamp : date + instant courant. II. Utilisation des bases de données

2.5 Les fonctions agrégatives (statistiques) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.5 Les fonctions agrégatives (statistiques) II. Utilisation des bases de données

2.5 Les fonctions agrégatives (statistiques) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.5 Les fonctions agrégatives (statistiques) select 'Namur',avg(COMPTE) as Moyenne, max(COMPTE)-min(COMPTE) as Ecart_max, count(*) as Nombre from CLIENT where LOCALITE = 'Namur'; Namur Moyenne Ecart_max Nombre 4 Namur -2520 4580 le résultat ne comprend qu'une seule ligne select sum(QSTOCK*PRIX) from PRODUIT where LIBELLE like '%SAPIN%'; II. Utilisation des bases de données

2.5 Les fonctions agrégatives (statistiques) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.5 Les fonctions agrégatives (statistiques) Attention aux valeurs dupliquées select count(NCLI) from COMMANDE; count(NCLI) 7 select distinct count(NCLI) from COMMANDE; count(NCLI) 7 select count(distinct NCLI) from COMMANDE; count(NCLI) 5 II. Utilisation des bases de données

2.5 Les fonctions agrégatives (statistiques) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.5 Les fonctions agrégatives (statistiques) select count(NCLI) as Numeros, count(NOM) as Noms, count(LOCALITE) as Localites, count(CAT) as Categories from CLIENT; Numeros Noms Localites Categories 14 16 select count(distinct NCLI) as Numeros, count(distinct NOM) as Noms, count(distinct LOCALITE) as Localites, count(distinct CAT) as Categories from CLIENT; Numeros Noms Localites Categories 4 16 15 7 II. Utilisation des bases de données

2.5 Les fonctions agrégatives (statistiques) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.5 Les fonctions agrégatives (statistiques) Attention aux ensembles vides select count(*) as Nombre, sum(COMPTE) as Somme, max(CAT) as Max from CLIENT where LOCALITE = 'Alger'; Nombre Somme Max <null> II. Utilisation des bases de données

2.6 Les sous-requêtes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.6 Les sous-requêtes II. Utilisation des bases de données

2.6 Les sous-requêtes - Principe 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.6 Les sous-requêtes - Principe Les numéros des clients de Namur : select NCLI from CLIENT where LOCALITE = 'Namur'; NCLI B062 C123 L422 S127 II. Utilisation des bases de données

2.6 Les sous-requêtes - Principe 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.6 Les sous-requêtes - Principe Les numéros des clients de Namur : NCLI B062 C123 L422 S127 Les numéros des commandes des clients de Namur : select NCOM, DATECOM from COMMANDE where NCLI in ('C123','S127','B062','L422'); ne marche qu'une fois mieux : select NCOM, DATECOM from COMMANDE where NCLI in (select NCLI from CLIENT where LOCALITE = 'Namur'); marchera toujours II. Utilisation des bases de données

2.6 Les sous-requêtes - Principe 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.6 Les sous-requêtes - Principe select * from PRODUIT where NPRO in (select NPRO from DETAIL where NCOM in (select NCOM from COMMANDE where NCLI in (select NCLI from CLIENT where LOCALITE='Namur'))); II. Utilisation des bases de données

2.6 Les sous-requêtes - Principe 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.6 Les sous-requêtes - Principe select * from PRODUIT where NPRO in (select NPRO from DETAIL where NCOM in (select NCOM from COMMANDE where NCLI in (select NCLI from CLIENT where LOCALITE='Namur'))); les produits référencés par les détails des commandes des clients de Namur les détails des commandes des clients de Namur les commandes des clients de Namur les clients de Namur II. Utilisation des bases de données

2.6 Les sous-requêtes - Condition d'association 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.6 Les sous-requêtes - Condition d'association Une condition in (sous-requête) correspond le plus souvent à une condition d'association = qui sont associés à ... select * from T where CT in (select CS from S where <condition>); "on recherche les T qui sont associés à des S qui ..." II. Utilisation des bases de données

Remarque : symétrie des conditions d'association 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.6 Les sous-requêtes - Condition d'association Remarque : symétrie des conditions d'association select * from COMMANDE where NCLI in (select NCLI from CLIENT where LOCALITE = 'Namur'); select * from CLIENT where NCLI in (select NCLI from COMMANDE where DATECOM = '12-09-2009'); II. Utilisation des bases de données

 2.6 Les sous-requêtes - Condition d'association 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.6 Les sous-requêtes - Condition d'association Forme négative des conditions d'association Quelles sont les commandes qui ne spécifient pas le produit PA60 = qui ne sont pas associées à un détail spécifiant PA60. select NCOM, DATECOM, NCLI from COMMANDE where NCOM not in (select NCOM from DETAIL where NPRO = 'PA60'); ensemble des numéros des commandes de PA60 select NCOM, DATECOM, NCLI from COMMANDE where NCOM in (select NCOM from DETAIL where NPRO <> 'PA60'); que signifie cette requête ?  II. Utilisation des bases de données

2.6 Les sous-requêtes - Références multiples 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.6 Les sous-requêtes - Références multiples Références multiples à une même table Sous-requêtes corrélées select NCLI, NOM, LOCALITE, COMPTE from CLIENT as C where COMPTE > (select avg(COMPTE) from CLIENT where LOCALITE = C.LOCALITE); un alias de table "C" est C est une variable qui à chaque instant référence la ligne courante de CLIENT dans la requête externe (on suppose qu'on examine successivement les lignes de CLIENT) II. Utilisation des bases de données

2.6 Les sous-requêtes - Références multiples 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.6 Les sous-requêtes - Références multiples Condition d'association quantifiée : recherche des commandes d'au moins 3 détails select NCOM, DATECOM, NCLI from COMMANDE C where (select count(*) from DETAIL where NCOM = C.NCOM) >= 3; II. Utilisation des bases de données

2.7 Les quantificateurs ensemblistes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.7 Les quantificateurs ensemblistes II. Utilisation des bases de données

2.7 Les quantificateurs ensemblistes - exists, not exists 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.7 Les quantificateurs ensemblistes - exists, not exists exists et not exists le prédicat exists(E), où E est une sous-requête, est vrai si l'ensemble désigné par E est non vide select NPRO, LIBELLE from PRODUIT as P where exists (select * from DETAIL where NPRO = P.NPRO); quels sont les produits pour lesquels il existe au moins un détail ? le prédicat not exists(E), est vrai si l'ensemble désigné par E est vide II. Utilisation des bases de données

2.7 Les quantificateurs ensemblistes - all, any 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.7 Les quantificateurs ensemblistes - all, any all et any quelles sont les commandes qui spécifient la plus petite quantité de PA60 ? select distinct NCOM from DETAIL where QCOM <= all (select QCOM where NPRO = 'PA60') and NPRO = 'PA60'; select distinct NCOM from DETAIL where QCOM = (select min(QCOM) where NPRO = 'PA60') and NPRO = 'PA60'; variante "distinct" est-il utile ? II. Utilisation des bases de données

2.7 Les quantificateurs ensemblistes - all, any 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.7 Les quantificateurs ensemblistes - all, any all et any quels sont les commandes qui ne spécifient pas la plus petite quantité de PA60 ? select * from DETAIL where QCOM > any (select QCOM where NPRO = 'PA60') and NPRO = ’PA60’; select distinct NCOM from DETAIL where QCOM > (select min(QCOM) where NPRO = 'PA60') and NPRO = 'PA60'; variante II. Utilisation des bases de données

2.7 Les quantificateurs ensemblistes - Sous-requête 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.7 Les quantificateurs ensemblistes - Sous-requête Deux expressions d'une condition d'association select * from CLIENT where NCLI in (select NCLI from COMMANDE where DATECOM = '12-09-2009'); plus concise select * from CLIENT C where exists (select * from COMMANDE M where M.NCLI = C.NCLI and DATECOM = '12-09-2009'); plus générale II. Utilisation des bases de données

2.7 Les quantificateurs ensemblistes - pour tout 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.7 Les quantificateurs ensemblistes - pour tout Curieusement, SQL ne permet pas d'exprimer directement le quantificateur pour tout la logique nous apprend que : (" x, p(x))  ($ x, p(x)) Application : quelles sont les commandes qui spécifient tous les produits ? la COMMANDE M est retenue si, il n'existe pas de PRODUIT P, tel que P n'est pas dans l'ensemble des PRODUITs commandés par M  select NCOM from COMMANDE M where not exists (select * from PRODUIT P P.NPRO not in (select NPRO from DETAIL where NCOM = M.NCOM)); II. Utilisation des bases de données

2.7 Les quantificateurs ensemblistes - pour tout 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées 2.7 Les quantificateurs ensemblistes - pour tout Pour terminer, un défi pour les experts : que signifie la requête suivante ? select NCOM from DETAIL group by NCOM having count(distinct NPRO) = (select count(*) from PRODUIT); pour les autres, lire d'abord le chapitre suivant II. Utilisation des bases de données

Fin du module 2 Module suivant : 3. Le langage SQL DML (2) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 2.1 Introduction 2.5 Les fonctions agrégatives 2.2 Extraction simple 2.6 Les sous-requêtes 2.3 Conditions plus complexes 2.7 Les quantificateurs ensemblistes 2.4 Données extraites et dérivées Fin du module 2 Module suivant : 3. Le langage SQL DML (2) II. Utilisation des bases de données