4. Concepts pour la manipulation des données Implémentation en SQL



Documents pareils
16H Cours / 18H TD / 20H TP

Le langage SQL Rappels

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

Langage SQL : créer et interroger une base

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

SQL Historique

1 Introduction et installation

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

Bases de données relationnelles

Les bases de données

Le Langage SQL version Oracle

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

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

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: Les Jointures 1

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

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

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

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

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

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

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

Bases de Données. Plan

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

MySQL / SQL EXEMPLES

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

Vincent Augusto

Systèmes de Gestion de Bases de Données

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

FileMaker 13. Guide de référence SQL

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

COURS de BASES de DONNEES

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

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

LE LANGAGE SQL2 1. INTRODUCTION

MODE OPERATOIRE OPENOFFICE BASE

TP Bases de données réparties

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

Le Langage De Description De Données(LDD)

INTRODUCTION AU DATA MINING

Cours 4 : Agrégats et GROUP BY

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

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

Bases de Données Relationnelles. Le Modèle Relationnel

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Dossier I Découverte de Base d Open Office

OpenPaaS Le réseau social d'entreprise

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Le langage SQL (première partie) c Olivier Caron

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

Introduction aux Bases de Données 2004/2005

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

Optimisation SQL. Quelques règles de bases

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

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

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

Administration des bases de données. Jean-Yves Antoine

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

Les bases fondamentales du langage Transact SQL

Historisation des données

A QUOI SERVENT LES BASES DE DONNÉES?

Interpréteur d algèbre relationnelle

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

PHP 5. La base de données MySql. A. Belaïd 1

Devoir Data WareHouse

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

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

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Année Universitaire 2009/2010 Session 2 de Printemps

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

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

Bases de données. PTSI Lycée Eiffel. 28 février 2014

Modélisation de bases de données : Le modèle relationnel

1. Base de données SQLite

BTS/CGO P10 SYSTEME INFORMATION Année

A QUOI SERVENT LES BASES DE DONNÉES?

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Bases de données avancées Introduction

Bases de données relationnelles & SQL

Utiliser une base de données

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

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

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

Mejdi BLAGHGI & Anis ASSÈS

Cours SGBD 1. Concepts et langages des Bases de Données Relationnelles

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

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Introduction à JDBC. Accès aux bases de données en Java

Compétences Business Objects

CREATION WEB DYNAMIQUE

TP3 : Creation de tables 1 seance

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

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

Les BASES de DONNEES dans WampServer

Transcription:

4. Concepts pour la manipulation des données Implémentation en SQL 4.1. OPERATEURS DE L ALGEBRE RELATIONNEL ALGEBRE RELATIONNELLE = { opérateurs sur les relations donnant en résultat des relations } Opérateurs ensemblistes : UNION T = union(r,s) T = { t / t R t S } L'union de 2 relations R & S, obligatoirement de même schéma, est une relation de même schéma que R & S, qui possède l'ensemble des tuples de R plus l'ensemble des tuples de S. INTERSECTION T = intersect(r,s) T = { t / t R t S } L'intersection de 2 relations R & S, obligatoirement de même schéma, est une relation de même schéma que R & S, qui possède tous les tuples présents à la fois dans R et dans S. DIFFERENCE T = différence(r,s) T = { t / t R t S } La différence des 2 relations R & S, obligatoirement de même schéma, R - S, est une relation de même schéma que R & S, qui possède tous les tuples de R qui ne sont pas présents dans S. PRODUIT CARTESIEN T = prod(r,s) T = { t xy / t x R t y S } Le produit cartésien des 2 relations R & S, non forcément de même schéma, R x S, est une relation dont le schéma résulte de la concaténation des schémas de R & S, qui possède tous les tuples résultant de la concaténation de chacun des tuples de R avec chacun des tuples de S. Opérateurs relationnels : PROJECTION T = proj(r,a i,a j,...,a p ) T = proj(r,a) T = { t A / t B R B t A,B R A,B } La projection appliquée à la relation R, sur le sous-ensemble d'attributs A, est une relation qui a pour schéma le sous-ensemble d'attributs A de R, et qui possède l'ensemble des tuples de R réduits au sous-schéma A. Autres notations : T = Πa i,a j,...,a p (R) RESTRICTION T = restrict(r,c r ) T = { t / t R C r (t) } 1

La restriction appliquée à la relation R, sur le critère de qualification C r, est une relation qui a le même schéma que R, et qui possède le sous-ensemble des tuples de R qui satisfont au critère de qualification C r. Autres notations : T = σ Cr (R) C r est une expression logique qui référence un ou plusieurs attributs de la relation R. JOINTURE T = join(r, S, C j ) T = { t A,B / t A R(A) t B S(B) C j (t A,B ) } La jointure des deux relations R & S, de schéma non forcément identique, sur le critère de jointure C j, est une relation qui a pour schéma la concaténation des schémas de R et de S, et qui possède le sous-ensemble des tuples du produit cartésien de R et S qui satisfont au critère de qualification C j. Autres notations : T = R S C j C j est une expression logique qui référence obligatoirement au moins un attribut de R et au moins un attribut de S. Equijointure : C j est de la forme R.attribut i = S.attribut j Inéquijointure : C j est de la forme R.attribut i <opérateur> S.attribut j où opérateurs {<, >, <=, >=, <> } Jointure naturelle : jointure entre deux relations ayant un attribut de même nom et qui contient les tuples concaténés des deux relations qui ont la même valeur pour l'attribut commun. Jointure externe : jointure de deux relations R & S, complétée des tuples de R et de S non inclus dans la jointure avec la valeur NULL pour les attributs de l'autre relation. Semi-jointure : jointure entre deux relations R & S qui a pour résultat les tuples de R qui appartiennent à la jointure de R & S. DIVISION T = div(r, S) où R(a 1,a 2,...,a p,a p+1,...,a n ), S(a p+1,...,a n ), et T(a 1,a 2,...,a p ) T = { t a1,a2,...,ap / t ap+1,...,an S, t a1,a2,...,ap,ap+1,...,an R } La division de la relation R par la relation S dont le schéma correspond au sous-schéma 'droit' de R, est une relation qui a pour schéma le sous-schéma complémentaire du schéma de S dans R, et qui possède le sous-ensemble des tuples de R réduit à ce sous-schéma qui, concaténés à tout tuple de S, donnent un tuple de R. La division permet de répondre aux interrogations de type " x, trouver y". 4.2. CONCEPTS ADDITIONNELS : FONCTIONS DE CALCUL, AGREGATS Expressions d'attributs expressions arithmétiques construites à partir d'attributs de relation et de constantes par application de fonctions arithmétiques successives. Ces expressions peuvent être utilisées comme arguments des opérateurs de Projection, Restriction, ou Jointure. Exemples : (pilote.salaire * 1,05) (commande.quantite * produit.prix_unitaire) 2

Fonctions de calcul sur ensemble SOMME (<expression>) SUM (<expression>) <expression> = <attribut> <expression d'attribut> Effectue la somme d'éléments d'un ensemble de tuples. MOYENNE (<expression>) AVG (<expression>) <expression> = <attribut> <expression d'attribut> Effectue la moyenne d'éléments d'un ensemble de tuples. COMPTE (<expression>) COUNT (<expression>) <expression> = <attribut> * Compte le nombre de tuples distincts par rapport à l'expression MINIMUM (<expression>) MIN (<expression>) <expression> = <attribut> <expression d'attribut> Sélectionne l'élément ayant la plus petite valeur parmi les éléments d'un ensemble de tuples. MAXIMUM (<expression>) MAX (<expression>) <expression> = <attribut> <expression d'attribut> Sélectionne l'élément ayant la plus grande valeur parmi les éléments d'un ensemble de tuples. Une fonction de calcul sur ensemble peut être utilisée comme argument de l'opérateur Projection exclusivement sous la forme suivante : proj(r, fonction(expression)). Opération d'agrégat Agrégat(R,{a 1,a 2, a n },F i (b 1,b 2, b n )[F j ( ), ]) où R est une relation, a i un attribut de R qualifié d'attribut de regroupement F i (b i ) une fonction de calcul sur ensemble appliquée aux attributs b i L'opérateur 'Agrégat" effectue un partitionnement horizontal de la relation R en fonction des valeurs d'un attribut ou d'un groupe d'attributs (a i ), suivi d'un regroupement par application à chaque partition obtenue d'une ou plusieurs fonctions de calcul sur ensemble, puis termine par une projection sur l'ensemble d'attributs de regroupement et de fonctions de calcul. 3

4.3. LANGAGE DE MANIPULATION DES DONNEES SQL : SOUS-LANGAGE D INTERROGATION Un ordre unique : SELECT SELECT [DISTINCT] <liste_d attributs_projetés> * <expression_d_attribut> <fonction(attribut <expression_d_attribut)> <constante littérale> FROM < nom_de_table> <liste de nom_de_table> < jointure_de_table> [WHERE <critère_de_qualification>] [GROUP BY < nom_attribut> [, <nom_attribut> [,...]] [HAVING <critère_de_qualification>] ] [ORDER BY < nom_attribut> [, <nom_attribut> [,...]] [ASC DESC] ] > ; <liste_d attributs_projetés> ::= <nom_attribut> [,<nom_attribut> [,<nom_attribut>[,...]]] <expression_d_attribut> ::= <nom_attribut> <operateur_arithmétique> <nom_attribut> <nom_attribut> <operateur_arithmétique> <valeur> <fonction> <operateur_arithmetique> <fonction> <expression_d_attribut> <operateur_arithmetique> <expression_d_attribut> <fonction(attribut <expression_d_attribut) >: fonctions de calcul sur ensemble ou fonction de la bibliothèque du SGBDR <liste de nom_de_table> ::= <nom_table>,<nom_table> [,<nom_table> [,...]] < jointure_de_table> ::= <nom_table> join <nom_table> on <critere_de_jointure> <nom_table> join (<jointure_de_table>) on <critere_de_jointure> (<jointure_de_table>) join <nom_table> on <critere_de_jointure> (<jointure_de_table>) join (<jointure_de_table>) on <critere_de_jointure> Critère de qualification C'est une expression logique référençant un ou plusieurs attributs, utilisant les opérateurs de comparaison classiques (=, <>, <, >, <=, >=), ainsi que les opérateurs logiques AND, OR, NOT. Le langage SQL définit des opérateurs spécifiques parmi lesquels on peut citer : BETWEEN syntaxe d'utilisation : <nom_attrib> BETWEEN <valeur 1 > AND <valeur 2 > Cet opérateur est équivalent à l'expression classique: (<nom_attrib> >= <valeur 1 >) AND (<nom_attrib> <= <valeur 2 >) IN 4

syntaxe d'utilisation : <nom_attrib> IN (<valeur 1 >,<valeur 2 >,...;<valeur n >) Cet opérateur est équivalent à l'expression classique: (<nom_attrib> = <valeur 1 >) OR (<nom_attrib> = <valeur 2 >)... OR (<nom_attrib> = <valeur n >) LIKE syntaxe d'utilisation : <nom_attrib> LIKE <chaine de caractères générique> Cet opérateur permet de comparer la valeur d'un attribut de type chaîne de caractères à une chaîne générique. Les caractères génériques (joker) définis en standard sont: % pour désigner une séquence de n caractères quelconques, avec n>=0 _ pour désigner un seul caractère quelconque IS NULL syntaxe d'utilisation : <nom_attrib> IS NULL Cet opérateur permet de savoir si un attribut a été ou non affecté d'une valeur Clause DISTINCT Permet de supprimer les doublons dans le résultat d'un ordre SELECT. Clause ORDER BY Permet de trier le résultat d'un ordre SELECT. Clause GROUP BY C'est la clause qui traduit l'agrégat en SQL. D'où la contrainte suivante : la liste d'attributs projetés à l'exclusion de toute fonction de calcul, doit être identique à la liste d'attributs de regroupement; i.e liste des attributs de la clause SELECT à l'exclusion de toute fonction de calcul = liste des attributs de la clause GROUP BY. Clause HAVING C'est un critère de qualification applicable au résultat de l'agrégat. Cette clause n'est présente qu'à la suite d'une clause GROUP BY. Elle référence les attributs de regroupement et/ou les fonctions de calcul utilisées dans l'agrégat. En dehors de cette spécificité, la définition du critère de qualification de la clause HAVING est identique à celle du critère de qualification dans la clause WHERE. Facilités d'écriture Renommer les colonnes du résultat usage : <nom_attribut> as <libellé_colonne> Donner un alias aux tables usage : <nom_table> <alias> où <alias< est une chaine courte de caractères (entre 1 et 3 caractères généralement) l'alias sert d'une part à simplifier l'écriture de l'ordre sql, d'autre part à identifier une occurrence particulière d'une table référencée plusieurs fois dans la même requête Traduction des opérations UNION, INTERSECTION, DIFFERENCE La syntaxe est similaire pour les trois opérateurs <ordre select> UNION <ordre select> <ordre select> INTERSECT <ordre select> <ordre select> EXCEPT <ordre select> 5

Select imbriquées C'est un ordre SQL dont le résultat est utilisé comme valeur de comparaison dans le critère de qualification de la clause WHERE ou la clause HAVING d'un ordre SQL englobant. Plusieurs niveaux d imbrication sont possibles. SELECT FROM WHERE AttributX = (SELECT.) ; Dans ce cas le SELECT ramène IMPERATIVEMENT une seule valeur SELECT FROM WHERE AttributX IN (SELECT.) ; Dans ce cas le SELECT peut ramener plusieurs valeurs Les opérateurs suivants sont utilisables : - opérateurs classiques : =, <, >, <=, >=, <> - IN / NOT IN - <op> ANY où <op> { =, <, >, <=, >=, <> } est vrai si <attribut> <op> <valeur> est vrai pour au moins une valeur du résultat du select imbriqué - <op> ALL où <op> {<, >, <=, >=, <> } est vrai si <attribut< <op> <valeur> est vrai pour toutes les valeurs du résultat du select imbriqué - EXISTS syntaxe : exists (select... ) est vrai si le résultat du select imbriqué n'est pas vide La DIVISION en SQL Rappel de la définition : T : div(r,s) avec R(X,Y) et S(Y) T = { t X / t Y S, t X,Y R } L'équivalence logique suivante est appliquée : x, P(x) ( x, P(x)) pour redéfinir la division comme suit T = { t X / ( t Y S, t X,Y R) } D'où la traduction en SQL de la division par l'usage de deux select imbriqués avec l'opérateur NOT EXISTS Expression de table Select imbriquée dans la clause SELECT SELECT, atti, attj,...,(select...) FROM... Select imbriquée dans la clause FROM dans une liste de table : SELECT, atti, attj,... FROM tab1, (select...) tabj,... dans une jointure de table : SELECT, atti, attj,... FROM tabi JOIN (select...) tabj ON... 6

4.4. LANGAGE DE MANIPULATION DES DONNEES SQL : SOUS-LANGAGE DE MISE A JOUR Insertion de données : INSERT INSERT INTO < nom_de_table > VALUES ( <expression [, <expression> ]>) ; ou INSERT INTO < nom_de_table > < ordre_select > ; Suppression de données : DELETE DELETE FROM <nom_de_table> [WHERE < critère_de_qualification > ]; Mise à jours des données : UPDATE UPDATE < nom_de_table > SET < nom_d attribut_1 > = < expression1 (ordre_select) > [, < nom_d attribut_2 > = < expression2 (ordre_select) > ] [WHERE < critère_de_qualification >] ; 7

4.5. CALCUL RELATIONNEL Rappel : le modèle relationnel a une double assise mathématiques : ensembliste, prédicative. L'algèbre relationnel exploite la vision ensembliste de la base de donnée relationnelle, alors que le calcul relationnel en exploite la vision prédicative. Le calcul relationnel s'inspire du calcul des prédicats de la logique du premier ordre. Logique du premier ordre = théorie mathématique qui étudie les formules logiques que l'on peut former avec des prédicats. Rappel sur calcul de prédicats du premier ordre Syntaxe L (A, W) Où A alphabet { (, ),,, {a, b, c,.}, {X, Y, Z,...}, {P, Q, R,..}, {f, g, h,.} } où a, b, c, : constantes X, Y, Z, : variables P, Q, R : prédicat à m arguments f, g, h, : fonction à n arguments W { formules bien formées construites à partir de Termes et de Formules atomiques } Où Termes = constantes, variables, ou fonction avec pour argument des termes Formules atomiques = prédicat avec pour argument des termes Formules bien formées (définition récursive) Formules atomiques Si F est une formule bien formée alors F est une formule bien formée Si F1 et F2 sont des formules bien formées alors F1 F2 est une formule bien formée Si F1 et F2 sont des formules bien formées alors F1 F2 est une formule bien formée Si F1 et F2 sont des formules bien formées alors F1 F2 est une formule bien formée Si F est une formule bien formée alors X F(X) est une formule bien formée Si F est une formule bien formée alors X F(X) est une formule bien formée Si F est une formule bien formée alors (F) est une formule bien formée Sémantique Interprétation d'une formule sur un domaine de discours D Constantes associées à un élément particulier de D Variables associées à ensemble d éléments de D Fonctions associées à une fonction particulière de D n dans D Prédicats associés à des relations particulières entre éléments de D 8

Calcul Relationnel de Tuples Constantes associées aux valeurs des domaines des attributs Variables associées à des tuples Fonctions : fonction génératrice des attributs V.A (V : variable, A : attribut) Prédicats : définition portée d une variable sur une relation R : R(V) Comparaisons logiques entre termes Définition : langage d interrogation de données formel permettant d exprimer des questions à partir de formules bien formées dont les variables sont interprétées comme variant sur les tuples d une relation Syntaxe Question {projection / formule} Projection V.A [, V.A,..] Formule Prédicat Prédicat R(V) R(V) Qualification Formule Formule V Formule V Formule Qualification (V.A θ V.A) (V.A θ Constante) Qualification Qualification Qualification Qualification Qualification θ < > = 9

Exemples Sur le schéma relationnel suivant : Produit (numpro, nompro, qtépro, couleur) Vente (numvente, nomclient, numprov, qtévend, datevente) Achat (numachat, dateachat, numproa, qtéach, nomfourn) 1) Liste des noms et couleur de tous les produits {P.nompro, P.couleur / Produit(P)} 2) Noms et quantité en stock des produits de couleur rouge {P.nompro, P. qtépro / Produit(P) (P.couleur = "rouge") } 3) Nom du fournisseur pour chaque produit en stock (nom du produit) { P.nompro, A. nomfourn / Produit(P) Achat(A) (P. numpro = A. numproa) } 4) Couple (Nom du fournisseur à qui l on a acheté, Nom de client à qui l on a vendu) pour chaque produit en stock (nom du produit) en quantité supérieure à 100 et de couleur rouge { P.nompro, A. Nomfourn, V. nomclient / Produit(P) Achat(A) Vente(V) (P.couleur = "rouge") (P. qtépro > 100) (P. numpro = A. numproa) (P. numpro = V. numprov) } 5) Nom des clients ayant acheté au moins un produit de couleur verte { V. nomclient / P Vente(V) Produit(P) (P.couleur = "verte") (P. numpro = V. numprov) } 6) Nom des clients ayant acheté tous les produits stockés { V. nomclient / P Vente(V) Produit(P) (P. numpro = V. numprov) } 10

Calcul Relationnel de Domaines Constantes associées aux valeurs des domaines des attributs Variables associées aux domaines des attributs (notation : X, Y,...) Prédicats : -définition portée d une variable sur les domaines des attributs d une relation R : R(A1 : X1, A2 : X2,.,An : Xn) -restriction de portée R(A1 : c1, A2 : c2,.,an : cn) où ci sont des constantes -Comparaisons logiques entre termes Définition : langage d interrogation de données formel permettant d exprimer des questions à partir de formules bien formées dont les variables sont interprétées comme variant sur le domaine d un attribut d une relation Syntaxe Question {projection / formule} Projection X [, X,..] Formule Prédicat Prédicat R(A1 : X1,.,An : Xn, A1 : c1,.,an : cn) R(A1 : X1,.,An : Xn, A1 : c1,.,an : cn) Qualification Formule Formule V Formule V Formule Qualification (X θ Y) (X θ Constante) Qualification Qualification Qualification Qualification Qualification θ < > = 11

Exemples Sur le schéma relationnel suivant : Produit (numpro, nompro, qtépro, couleur) Vente (numvente, nomclient, numprov, qtévend, datevente) Achat (numachat, dateachat, numproa, qtéach, nomfourn) 1) Liste des noms et couleur de tous les produits {X, Y / Produit (nompro : X, couleur : Y)} 2) Noms et quantité en stock des produits de couleur rouge { X, Y / Produit (nompro : X, qtépro: Y, couleur : "rouge" )} 3) Nom du fournisseur pour chaque produit en stock (nom du produit) { X, Y / Produit (nompro : X, numpro : Z) Achat(numproa : Z, nomfourn : Y) } 4) Couple (Nom du fournisseur à qui l on a acheté, Nom de client à qui l on a vendu) pour chaque produit en stock (nom du produit) en quantité supérieure à 100 et de couleur rouge { X, Y, Z / Produit (nompro : X, numpro : V, qtépro: Q, couleur : "rouge") Achat(numproa : V, nomfourn : : Y) Vente(numprov : V, nomclient : Z ) (Q > 100) } 5) Nom des clients ayant acheté au moins un produit de couleur verte { X / Z Produit (numpro : Z, couleur : " verte ") Vente(numprov : Z, nomclient : X ) } 6) Nom des clients ayant acheté tous les produits stockés { X / Z Produit (numpro : Z) Vente(numprov : Z, nomclient : X )} 12

Langages d application QUEL : dérivé du calcul relationnel de tuples SGBD : INGRES Dérivé du calcul relationnel de tuples auquel est ajoutée une syntaxe en anglais Exemple 1 : RANGE OF P is Produit RETRIEVE P.nomp, P.couleur Exemple 2 : RANGE OF P is Produit RETRIEVE P.nomp, P.qtes WHERE (P.couleur = Rouge ) Historique : QEL a ensuite évolué vers SEQUEL ancêtre de SQL. QBE : mise en œuvre visuelle du calcul relationnel de domaines Mise en œuvre visuelle du calcul relationnel de domaine dont le principe est exploité dans l'interface graphique de certain SGBD tel MS-Access. Exemple 1 Produit NPRO NOMP QTES COULEUR P. P. Exemple 2 Produit NPRO NOMP QTES COULEUR P. P. "Rouge" 13