Bases de données relationnelles Calcul Relationnel Sommaire

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

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

Les bases de données

Langage SQL : créer et interroger une base

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

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

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

Vincent Augusto

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

16H Cours / 18H TD / 20H TP

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

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

SQL Historique

Bases de données relationnelles

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

1 Introduction et installation

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

Le Langage SQL version Oracle

Le langage SQL Rappels

Introduction aux Bases de Données

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

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

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

Information utiles. webpage : Google+ : digiusto/

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

BTS/CGO P10 SYSTEME INFORMATION Année

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

Bases de données avancées Introduction

PROJET 1 : BASE DE DONNÉES REPARTIES

Rappel sur les bases de données

TP Bases de données réparties

Compétences Business Objects

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

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

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

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Bases de Données. Plan

Session S12 Les bases de l optimisation SQL avec DB2 for i

A QUOI SERVENT LES BASES DE DONNÉES?

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

Les bases de l optimisation SQL avec DB2 for i

Mysql. Les requêtes préparées Prepared statements

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

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

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

TP3 : Creation de tables 1 seance

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

OBJECTIFS ET ARCHITECTURE DES SGBD

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

OpenPaaS Le réseau social d'entreprise

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

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

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

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

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Le Langage De Description De Données(LDD)

Systèmes de Gestion de Bases de Données

Intégrité des données

Cours Bases de données

Patrice BOURSIER. Professeur, Univ. de La Rochelle. Bases de Données. Notes de cours

LE LANGAGE SQL2 1. INTRODUCTION

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Gestion des utilisateurs et de leurs droits

Présentation du module Base de données spatio-temporelles

Bases de données - Modèle relationnel

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

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

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

IFT3030 Base de données. Chapitre 1 Introduction

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

Cours Bases de données 2ème année IUT

Bases de données et sites WEB Licence d informatique LI345

Optimisation SQL. Quelques règles de bases

Bases de données et sites WEB

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

Bases de Données Avancées

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

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

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

MySQL / SQL EXEMPLES

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

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

Créer le schéma relationnel d une base de données ACCESS

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Conception des bases de données : Modèle Entité-Association

Cours: Les Jointures 1

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

Introduction aux bases de données. Généralités sur les bases de données. Fonctions d'un SGBD. Définitions. Indépendance par rapport aux traitements

Introduction aux bases de données

Transcription:

Bases de données relationnelles Calcul Relationnel 1 Sommaire Introduction Calcul de Tuple Quel Calcul de Domaines QBE Conclusion 2 1

Introduction Différentes langages ont été proposé pour manipuler des données relationnel; Deux modèle principaux: algébrique et prédicatif; 3 LMD relationnels algébriques (rappel) L algèbre relationnelle permet de spécifier quelles sont les opérations à exécuter pour calculer le résultat de la requête Exemple: π [code-j] ( σ [adresse = "Bienne"] Dépôt Livraison) SQL est une version orientée utilisateur de l algèbre relationnelle SELECT CODE-J FROM DEPOT, LIVRAISON WHERE DEPOT.NO-DEPOT = LIVRAISON.NO- DEPOT AND ADRESSE = 'Bienne'; 4 2

LMD prédicatifs Un langage prédicatif permet de ne spécifier que le résultat cherché (pas comment le calculer) spécification des prédicats qui doivent être vérifiés par les données pour former le résultat Ces langages sont dits prédicatifs car il sont basés sur le calcul de prédicats (logique 1 er ordre) Un langage prédicatif est donc plus simple qu une algèbre 5 Modèle général Requête BD R1 R2 6 3

LMD relationnels prédicatifs 7 Il existe deux types de langages prédicatifs relationnels Calcul de tuples : les variables dans les expressions logiques portent sur les tuples des relations (QUEL) x Etudiant Calcul de domaines : les variables dans les expressions logiques portent sur les valeurs des attributs des tuples (QBE) x Etudiant.nom Calcul de tuples 8 4

Format d'une requête 9 1) Déclaration des variables (tuples) sur des relations ou des unions de relations compatibles x1 R1, x2 R2, xi Ri Rj,.. xn Rn 2) Spécification du format du résultat 3) Spécification d une condition (prédicat) { x1.a, x1.b, xi.d / f x1,x2, xn } où : Format du résultat Prédicat f x1,x2, xn est une formule logique valide xi.d représente la valeur de l'attribut D dans le tuple xi Exemple de requête relation Étudiant (n, nom, prénom, année) Requête : nom et prénom des étudiants nés après 1980 π [nom, prénom] σ [année > 1980] Etudiant déclaration de variable e Etudiant { e.nom, e.prénom e.année > 1980 } 10 spécification du format du résultat prédicat à satisfaire par les tuples désignés par e 5

Requête multi-relation Etudiant (n, nom, prénom, année) Inscription (n o ét, nomc, note1, note2) Requête : n o, prénom, notes des étudiants de nom "Rochat" inscrits au cours "BD" e Etudiant, i Inscription { e.n o, e.prénom, i.note1, i.note2 e.nom = "Rochat" i.nomc = "BD" e.n o = i.n o ét } 11 : ET : OU : NON Algèbre / calcul π [n o, prénom, note1, note2] σ [nom = "Rochat" nomc = "BD"] ( Étudiant *[n o = n o ét] Inscription ) e Etudiant, i Inscription { e.n o, e.prénom, i.note1, i.note2 e.nom = "Rochat" i.nomc = "BD" e.n o = i.n o ét } Même puissance d'expression 12 6

Format d'une requête 1) déclaration des variables (tuples) x1 R1, x2 R2, xi Ri Rj,.. xn Rn 2) spécification du format du résultat 3) spécification du prédicat { x1.a, x2.b, xn.d / f x1,,x2,,,xn,xn+1,,xn+m } f x1,x2,,xn,xn+1,..,xn+m est une formule logique valide 13 ayant pour variables libres exactement x 1... x n (Les autres variables x n+1... x n+m doivent être liées) Formule valide 14 Formule élémentaire : x.a oper-comparaison constante x.a oper-comparaison y.b oper-comparaison : =,, <, >,, Exemples x.nom="rochat" x.nom = y.nom x et y sont des variables libres Pour lier x et y: ajout de ou de y (x.nom = y.nom) y est liée, x est libre 7

Formule valide (suite) Formule valide : formule élémentaire formule formule formule formule formule Si f x est une formule valide où x est une variable libre, alors : x f x est une formule valide où x est liée "il existe au moins un tuple x tel que fx soit vrai" x f x est une formule valide où x est liée "pour tous les tuples x, f x est vrai" 15 Formules valides - Exemples 16 Etudiant (n, nom, prénom, année) x Etudiant x (x.nom="rochat") est vrai s'il y a un étudiant de nom Rochat dans Etudiant x est une variable liée x (x.année>1980) est vrai si tous les étudiants sont nés après 1980 x est une variable liée 8

Quantificateur "il existe" Etudiant (n, nom, prénom, année) Inscription (n ét, nomc, note1, note2) Requête : nom, prénom des étudiants ayant réussi brillamment un cours e Etudiant, i Inscription { e.nom, e.prénom i (e.n o = i.n o ét i.note1 = 6 i.note2 = 6) } 17 Quantificateur "pour tous" Requête : nom, prénom des étudiants n'ayant aucune inscription e Etudiant, i Inscription { e.nom, e.prénom i (e.n o i.n o ét) } e Etudiant i Inscription 18 9

Sémantique d'une requête (1) x R, y S, z T { x.a, y.b fx,y,z } Faire le produit cartésien des relations à variables libres R x S Sélectionner les tuples du produit qui satisfont la formule fx,y,z Exemple: e Etudiant, i Inscription { e.nom, e.prénom i (e.no i.noét) } 19 Sémantique d'une requête (2) x R, y S, z T {x.a, y.b fx,y,z } Pour tout tuple, x, de R faire : Pour tout tuple, y, de S faire : Si fx,y,z est vrai alors ajouter <x.a,y.b> au résultat fin pour tout y de S fin pour tout x de R 20 NB Le test de fx,y,z implique pour chaque variable liée (ici z) le parcours de la relation correspondante (ici T) 10

Logique du 1er ordre - Rappels L'opérateur logique => (implique) ne fait pas partie des opérateurs du calcul f1 => f2 est équivalent à : f1 f2 x fx est équivalent à : x ( fx ) Quantificateurs sur un ensemble vide Soit x R si R est vide, alors x fx = Vrai x fx = Faux 21 Exemples - Bars à bières Bière (bière, degré, couleur, pays, goût) Bar (bar, quartier) Personne (nom, quartier, age, sexe) Sert (bar, bière) tel bar sert telle bière A bu (buveur, bière, bar, jour, mois, année, qté) tel jour, tel buveur a bu telle bière dans tel bar en telle quantité (qté) 22 11

Exemples (1) 23 Noms des bars fréquentés par Philippe ce mois ci u Abu { u.bar / u.buveur="philippe" u.mois=1 u.année=2005 } Noms des bars fréquentés par Philippe ce mois ci avec les bières bues et leur pays u Abu, i Bière { u.bar, u.bière, i.pays / u.buveur="philippe" u.mois=1 u.année=2005 u.bière=i.bière } Exemples (2) 24 Nom, âge et quartier des personnes qui ont fréquenté au moins un bar p Personne, u Abu { p.nom, p.age, p.quartier / u (p.nom=u.buveur)} Nom, âge et quartier des personnes qui ont fréquenté tous les bars p Personne, a Bar, u Abu { p.nom, p.age, p.quartier / u a (p.nom=u.buveur u.bar=a.bar) } 12

Exemples (3) Nom des personnes qui n'ont jamais fréquenté un bar p Personne, u Abu { p.nom / u (p.nom=u.buveur) } 25 Nom, âge et quartier des personnes qui ont fréquenté au moins un bar du quartier de la gare p Personne, u Abu, a Bar { p.nom, p.age, p.quartier / a u ( a.quartier="gare" u.bar=a.bar p.nom=u.buveur) } Exemples (4) 26 Nom des personnes qui ont bu une brune et une blonde le même jour dans le même bar u1 Abu, u2 Abu, b1 Bière, b2 Bière { u1.buveur / u2 (u1.bar=u2.bar u1.jour=u2.jour u1.mois=u2.mois u1.année=u2.année u1.buveur=u2.buveur b1 (u1.bière=b1.bière b1.couleur="blonde") b2 (u2.bière=b2.bière b2.couleur="brune") ) } 13

Sécurité d Expression Quantificateurs universel, existentiel où négation peuvent rendre des expressions sans sens: ex: e in étudiant {e.name not e} Le résultat comprend tous les tuples qui ne sont pas étudiant pour éviter L expression doit restreindre l univers p Personne, u Abu { p.nom / u ( Abu) or (p.nom=u.buveur) } 27 QUEL (INGRES puis PostGrès) RANGE OF e is Etudiant e Etudiant RANGE OF i is Inscription RETRIEVE [INTO nomrésultat] (e.nom, e.prénom) [WHERE e.n o =i.n o ét AND note1=6 AND note2=6] Range: définition des variables Retrieve: définition du résultat Where: formule bien formée (prédicats) Mais: pas de quantificateur! e Etudiant, i Inscription { e.nom, e.prénom / i (e.no = i.noét i.note1 = 6 i.note2 = 6) } 28 14

QUEL et les quantifieurs la formule en QUEL ne contient pas de quantificateurs implicite pour toutes les variables non citées dans la liste après le RETRIEVE est réalisé en utilisant la fonction COUNT: COUNT (x.a WHERE ƒ) = 0 x.a (ƒ) x ƒ? f ƒ? = 0 f x (ƒ) 29 RANGE of e is Etudiant, RANGE of i is Inscription RETRIEVE e.nom WHERE COUNT(i.n o ét WHERE e.n o =i.n o ét )= 0 e Etudiant, i Inscription { e.nom i(e.n o i.n o ét) Quel: ajout RANGE OF e is Etudiant RANGE OF en is Enseignant RETRIEVE INTO Et.Ens(e.nom, e.prénom) APPEND TO Et.Ens (en.nom, en.prénom) e en Et.Ens π [nom, prénom] Etudiant π [nom, prénom] Enseignant 30 15

QUEL: mise à jour APPEND TO... ajouter un tuple à une relation DELETE nomvariable [WHERE formule] supprimer un tuple d'une relation supprimer un ensemble de tuples d'une relation REPLACE nomvariable (nom attribut =...) WHERE [ƒ ] mettre à jour de la valeur de l attribut exemple: REPLACE dép (nomd = ISC ) WHERE nomd = DSC 31 Calcul de domaines 32 16

Calcul des domaines Similaire au calcul des tuples mais variables portent sur les valeurs d'un attribut et non sur les tuples 1) Déclaration des variables (tuples) sur des relations ou des unions de relations compatibles x1 R1.A, x2 R2.B,, xi Ri.C Rj.D,, xn Rn.S 2) Spécification du format du résultat 3) Spécification du prédicat { x1, x2, xi / fx1,x2, xn } 33 où : fx1,x2, xn est une formule logique valide ayant pour variables libres exactement x1... xi (Les autres variables xi+1... xn doivent être liées) 34 Calcul des domaines, formule Formule valide définie comme en calcul des tuples Formule de deux types: x.a op constante ou x.a op y.b (op: =,, <, >,, ) Formule d'appartenance: R(A:v1, B:v2,...) où A,B,... sont des attributs de la relation R, v1,v2,... sont soit des constantes, soit des variables. Une condition d'appartenance R(A:v1, B:v2,..., E:vi) est vraie ssi dans la relation R il existe au moins un tuple ayant v1 comme valeur pour l'attribut A, v2 comme valeur pour l'attribut B,..., et vi comme valeur pour l'attribut E. 17

Exemple (1) Etudiant (nom, prénom, année, no) Inscription (noét, nomc, note1, note2)} Requête: nom, prénom des étudiants n Etudiant.nom p Etudiant.prénom { n, p (Etudiant (nom: n, prénom: p)} 35 Requête: nom, prénom des étudiants nés en 1989 n Etudiant.nom p Etudiant.prénom { n, p (Etudiant (nom: n, prénom: p, année: 1989)} Exemple (2) Requête: nom, prénom des étudiants nés après 1986 n Etudiant.nom p Etudiant.prénom a Etudiant.année { n, p a (Etudiant (nom: n, prénom: p, année: a) a>1986 } 36 18

Exemple (3) Etudiant (nom, prénom, année, no) Inscription (noét, nomc, note1, note2)} Requête : numéro, prénom, notes des étudiants de nom Rochat inscrits en BD no Etudiant.no Inscription.noét p Etudiant.prénom n1 Inscription.note1 n2 Inscription.note2 37 {no, p, n1, n2 Etudiant (nom: 'Rochat', prénom: p, no: no) Inscription (noét: no, nomc: 'BD', note1: n1, note2: n2)} Calcul de domaines Etudiant (nom, prénom, année, no) Inscription (noét, nomc, note1, note2)} Requête: nom, prénom des étudiants ayant brillamment réussi un cours (2 notes = 6) n Etudiant.nom p Etudiant.prénom no Etudiant.no Inscription.n o ét {n, p no (Etudiant (nom: n, prénom: p, no: no) Inscription (n o ét: no, note1=6, note2=6)} 38 19

Calcul de domaines 39 Etudiant (nom, prénom, année, no) Inscription (noét, nomc, note1, note2)} Requête : nom, prénom des étudiants inscrites à tout les cours n Etudiant.nom p Etudiant.prénom no Etudiant.no Inscription.noét nc Inscription.nomC {n, p nc (Etudiant (nom: n, prénom: p, no: no) Inscription (noét: no,nomc:nc))} QBE (Query By Example) - 1977 Langage visuel Requêtes sont exprimées sous forme d'un exemple Correspondance avec calcul des domaines Requêtes sont exprimées en utilisant les squelettes des tables. Utilisateur sélectionne les squelettes de tables dont il a besoin Utilisateur entre des "valeurs exemple" dans colonnes 40 Implémenté en: PARADOX, ACCESS, IBM QMF 20

valeur exemple: variable Une valeur exemple est : soit une variable : soulignée soit une constante : "valeur" non soulignée Exemple calcul des domaines: Requête: nom, prénom des étudiants n Etudiant.nom e Etudiant.prénom { n, e (Etudiant (nom: n, prénom: e) } 41 Etudiant nom prénom année n o P.N P.E P: print Format du résultat Format du résultat spécifié en inscrivant P. dans colonne Équivaut à une projection π [nom, prénom] Étudiant Etudiant nom prénom année n o P. N P.E Étudiant P: print Etudiant nom prénom année n o 42 P. 21

Valeur exemple: constante Utilisées pour écrire des conditions de type nom-variable op constante spécifiées en écrivant op constante dans colonne Constante: pas soulignée Équivaut à une sélection Exemple: σ [année > 1986] Etudiant P. >1986 43 (op: =,, <, >,, ) QBE: sélection-projection π[nom, prénom] σ [année > 1986] Etudiant P.N P.E >1986 σ [prénom = André année > 1986] Etudiant 44 P. André >1986 22

QBE: sélection, projection π[nom, année] σ [prénom = André année > 1986] Etudiant P.N André P.>1986 45 QBE: ou/et Les conditions sur une même ligne sont liées par un et: π[nom, année] σ [prénom = André année > 1969] Etudiant P.N André P.>1986 46 23

QBE:ou Le OU est réalisé en écrivant 2 requêtes (union) π[nom, année] σ [prénom = André année > 1986] Etudiant P.N1 André P.A P.N2 P.>1986 47 QBE: ou (suite) 48 σ [prénom = André prénom = Jean] Etudiant P. André P. Jean π[nom, année] σ [année < 2000 année > 1986] Etudiant? 24

QBE: ou 49 π[nom] σ [prénom = André prénom = Jean] Etudiant P.N1 André P.N2 Jean π[nom] σ [année < 1990 année > 1969] Etudiant P.1 >1969 1 <1990 Conditions de type nom-variable op nom-variable Conditions de type nom-variable op nom-variable s'expriment en utilisant des "valeurs exemples" soulignées Equivaut à theta-jointure π[no, prénom] (Etudiant (σ [nomc = BD] Inscription)) no=noét Etudiant nom prénom année no P.E P. 123 Inscription noét nomc note1 note2 50 123 BD 25

Conditions de type nomvariable op nom-variable Les variables soulignées qui n'apparaissent qu'une seule fois peuvent être omises Etudiant nom prénom année no P.N P.E inutile Etudiant nom prénom année no 51 P. P. QBE: Ecriture des conditions Boîtes de condition : pour conditions difficiles P. 1 52 Condition 1 >1969 1 <1990 26

QBE: Ecriture des conditions Boîtes de condition : pour comparaison entre variables: Numéro des étudiants ayant eu une meilleure note à la deuxième session π[noét] σ [note2 note1] Inscription Inscription noét nomc note1 note2 P. 1 2 53 Condition 2 1 QBE - Résultat multirelation π[nom] (Etudiant (σ [nomc = BD] Inscription)) no=noét P. 123 Inscription noét nomc note1 note2 123 BD 54 27

QBE - Résultat multirelation QBE n'autorise pas d'écrire P. dans plusieurs relations : il faut créer une relation temporaire "Résultat" dont il définit la structure P uniquement dans cette table π[nom, note1, note2] (Etudiant (σ [nomc = BD] Inscription)) no=noét TOTO 123 Inscription noét nomc note1 note2 123 BD 1 2 Résultat 55 P. TOTO 1 2 QBE - négation Pour écrire une négation: Nom des étudiants n'ayant pas d'inscription en cours BD: P. 123 Inscription noét nomc note1 note2 123 BD 56 28

QBE: Ordonner l'affichage du résultat π[nom, prénom] σ [année > 1986] Etudiant P.AO P. >1986 π[nom, prénom] σ [année > 1986] Etudiant P.AO(1) P.DO(2) >1986 57 QBE: Doubles Par défaut, les doubles sont supprimés du résultat π[nom] σ [année > 1986] Etudiant 58 P. >1986 Si on veut les conserver: P.ALL >1986 Dupont Dupont Durant Dupont Dupont Durant 29

QBE - All ALL crée un multi-ensemble P. P.ALL Dupont Durant {Jean} {Paul, Pierre} 59 QBE - All ALL crée un multi-ensemble Exemple: nom des étudiants inscrits à tous les cours P. 1 60 Inscription noét nomc note1 note2 1 ALL.C Cours ALL.C =? nomc 30

QBE - Agrégation Opérateurs d'agrégation AVG, MAX, MIN, SUM, COUNT peuvent être utilisés avec ALL Nombre d'étudiants de 1980 Etudiant nom année no P.COUNT.ALL 1980 Nombre d'étudiants par année de naissance Etudiant nom année no 61 P.COUNT.ALL G. QBE - Agrégation Nombre d'étudiants (sans les doubles) par année de naissance Etudiant nom année no P.COUNT.UNQ.ALL G. 62 31

Mise à jour Trois opérateurs: Insert Update Delete Insert Etudiant nom prénom année n o I Martin André 1988 92 63 QBE - Mise à jour Etudiant nom prénom année n o Martin André 1988 92 U 1987 92 Etudiant nom prénom année n o Martin André 1987 92 Inscription n o et nomc note1 note2 123 BD 6<10 U 123 BD 6+0.5 64 32

QBE - Suppression Inscription n o et nomc D BD plusieurs tuples Inscription D n o et 92 nomc BD 0 ou 1 tuple 65 Conclusion Calcul de tuples et de domaines sont des langages déclaratives; Condition basé sur la logique du 1 er ordre; Quelques langages de requêtes ont été proposé: Quel, QBE; À nos jours, des versions de QBE sont utiliser en ACCESS et en IBM QMF; SQL dérive du calcul de tuple; 66 33