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

Documents pareils
Le langage SQL Rappels

Langage SQL : créer et interroger une base

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

Les bases de données

16H Cours / 18H TD / 20H TP

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

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

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

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

1 Introduction et installation

SQL Historique

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Le Langage SQL version Oracle

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

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

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

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

MySQL / SQL EXEMPLES

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

Bases de données relationnelles

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

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

Vincent Augusto

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

FileMaker 13. Guide de référence SQL

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Systèmes de Gestion de Bases de Données

Optimisation SQL. Quelques règles de bases

BTS/CGO P10 SYSTEME INFORMATION Année

Compétences Business Objects

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

Introduction aux Bases de Données 2004/2005

Cours 4 : Agrégats et GROUP BY

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

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

LE LANGAGE SQL2 1. INTRODUCTION

TP Bases de données réparties

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

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

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

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

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

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

OpenPaaS Le réseau social d'entreprise

INTRODUCTION AU DATA MINING

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

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

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

Les bases fondamentales du langage Transact SQL

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

Les BASES de DONNEES dans WampServer

Le Langage De Description De Données(LDD)

MODE OPERATOIRE OPENOFFICE BASE

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Devoir Data WareHouse

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Olivier Mondet

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

1. Base de données SQLite

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

Bases de Données. Plan

Cours: Les Jointures 1

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

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

TP Contraintes - Triggers

I. MySQL : Serveur et SGBD

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

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

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

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

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

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

COURS de BASES de DONNEES

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

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

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

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

Interpréteur d algèbre relationnelle

AGRÉGATION «ÉCONOMIE ET GESTION»

Comprendre les bases de données

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

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

Création et Gestion des tables

Intégrité des données

Mejdi BLAGHGI & Anis ASSÈS

Année Universitaire 2009/2010 Session 2 de Printemps

Bases de données avancées Introduction

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

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

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

Transcription:

5. Concepts pour la manipulation des données Implémentation en SQL 5.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 t A,B R } 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 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". 5.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>) Effectue la somme d'éléments d'un ensemble de tuples. MOYENNE (<expression>) AVG (<expression>) 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>) Sélectionne l'élément ayant la plus petite valeur parmis les éléments d'un ensemble de tuples. MAXIMUM (<expression>) MAX (<expression>) Sélectionne l'élément ayant la plus grande valeur parmis 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

5.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,... 6

FROM tabi JOIN (select...) tabj ON... 5.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