Introduction aux Bases de Données Relationnelles SQL - 1

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

Langage SQL : créer et interroger une base

Les bases de données

Le langage SQL Rappels

SQL Historique

Bases de données relationnelles

1 Introduction et installation

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

Le Langage SQL version Oracle

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

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

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

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

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

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

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

16H Cours / 18H TD / 20H TP

Vincent Augusto

LE LANGAGE SQL2 1. INTRODUCTION

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

MySQL / SQL EXEMPLES

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

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

Olivier Mondet

A QUOI SERVENT LES BASES DE DONNÉES?

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

CREATION WEB DYNAMIQUE

OpenPaaS Le réseau social d'entreprise

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Le Langage De Description De Données(LDD)

TP Bases de données réparties

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

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

Introduction aux Bases de Données 2004/2005

TP3 : Creation de tables 1 seance

TP Contraintes - Triggers

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

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

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

TD n 10 : Ma première Base 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

Introduction aux Bases de Données

Les BASES de DONNEES dans WampServer

Devoir Data WareHouse

Structured Query Language

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

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

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

Pour les débutants. langage de définition des données

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

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

Bases de Données. Plan

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

A QUOI SERVENT LES BASES DE DONNÉES?

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Optimisation SQL. Quelques règles de bases

FileMaker 13. Guide de référence SQL

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

Bases de données élémentaires Maude Manouvrier

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

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

Introduction aux Bases de Données Relationnelles Conclusion - 1

Bases de données relationnelles & SQL

Systèmes de Gestion de Bases de Données

Chapitre Introduction : Notion de Bases de données. 2. Définition : BD Répartie. 3. Architecture des SGBD. 4. Conception des bases réparties

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

Bases de données Outils de gestion

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

Corrigés détaillés des exercices

Bases de données avancées

Intégrité sémantique dans les bases de données relationnelles

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

Création et Gestion des tables

Bases de données cours 1

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

Cours 4 : Agrégats et GROUP BY

Bases de données avancées Introduction

BTS/CGO P10 SYSTEME INFORMATION Année

Cours: Administration d'une Base de Données

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

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

Mejdi BLAGHGI & Anis ASSÈS

Systèmes d informations nouvelles générations. Répartition, Parallèlisation, hétérogénéité dans les SGBD. Exemple d application d un futur proche

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

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

Bases de Données Avancées

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

Comprendre les bases de données

1. Base de données SQLite

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

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

Compétences Business Objects

Cours Bases de données

Transcription:

Pratique d un SGBD : PostgreSQL Objectifs des bases de données Où en sommes nous? SQL Structured Query Language Modèle relationnel Algèbre relationnelle SQL Conception et rétro-conception Protection de l information Web/BD Département INFormatique Page 84 84 Introduction Plan du document Langages de requêtes Introduction slide 85 BD Exemple : les vins slide 89 Définition des données slide 91 Manipulation des données slide 96 Recherche slide 97 Mises à jour slide 123 Traitement d une requête slide 127 Et moi que dois-je faire? slide 129 Langage de requêtes Langage de Définition de Données (LDD) Langage de Manipulation de Données (LMD) Langages de manipulation formels Algèbre relationnelle Calcul relationnel (basé sur la logique des prédicats) Langages de requêtes orientés utilisateur Structured Query Language (SQL) QUEry Language (QUEL) Query By Example (QBE) Lien avec les langages de programmation Immersion d'un langage de requêtes dans un langage de programmation : approche Embedded SQL (Java, Pascal, C,...) Page 85 85 Page 86 86 Introduction aux Bases de Données Relationnelles SQL - 1

Introduction Introduction Présentation de SQL Présentation de SQL (2) Fonctionnalités Définition et manipulation de données au format relationnel Contrôle des données Le langage de manipulation Déclaratif, non procédural Emprunté à l'algèbre relationnelle et au calcul relationnel de tuples Puissance du langage de manipulation Algèbre Relationnelle + Fonctions-Agrégats + Tri Requête SQL (sans fonctions et tri) Composition d'opérations de l'algèbre relationnelle Page 87 87 Page 88 88 BD Exemple Plan du document BD Exemple : les vins Introduction Vins(num, cru, annee, degre) V BD Exemple : les vins Définition des données Recoltes(nvin, nprod, quantite) Producteurs(num, nom, prenom, region) R P Manipulation des données Clients(num, nom, prenom, ville) Cl Recherche Mises à jour Commandes(ncde, date, ncli, nvin, qte) Livraisons(ncde, no_ordre, qtelivree) C L Traitement d une requête Et moi que dois-je faire? Page 89 89 Page 90 90 Introduction aux Bases de Données Relationnelles SQL - 2

BE 5 Définition des données Plan du document Fonctionnalités Page 91 Introduction BD Exemple : les vins Langage de Définition des Données Fonctionnalités Gestion du schéma d une relation LDD SQL vs. Modèle relationnel Langage de Manipulation des Données Recherche Mises à jour Traitement d une requête Et moi que dois-je faire? 91 Page 92 Définition des schémas des relations Définition de contraintes d'intégrité Définition de vues relationnelles Définition de droits Définition du placement et des index (non normalisé => SGBD dépendant!!) 92 Définition des données Définition des données Gestion du schéma d une relation (1) Gestion du schéma d une relation (2) Page 93 Création minimale CREATE TABLE Vins ( num INTEGER, cru CHAR(40), annee INTEGER); Mise à jour Ajout d'un attribut (norme SQL2!) ALTER TABLE Vins ADD [COLUMN] degre INTEGER ; Suppression (norme SQL2!) DROP TABLE Vins ; 93 Page 94 Domaines de base Numériques - Entier : INTEGER, SMALLINT - Décimal : DECIMAL (m,n), NUMBER(m,n) - Réel flottant : FLOAT, REAL Chaîne de caractères : CHAR (n), VARCHAR(n) Temporel : DATE (dans la norme SQL2!) Chaque SGBD possède d'autres domaines qui lui sont propres Valeur NULL Absence de valeur Ce n est pas zéro! 94 Introduction aux Bases de Données Relationnelles SQL - 3

Définition des données LDD SQL vs. Modèle relationnel Plan du document Domaines limités Clé facultative : Doublons Opérateur de projection différent ( DISTINCT) Relation n est plus un ensemble Introduction BD Exemple : les vins Définition des données Manipulation des données Recherche - Syntaxe générale de recherche - Restriction et projection - Jointures - Opérateurs ensemblistes - Fonctions agrégats - Partitionnement - Prédicats et division - Synthèse - Exemple complet Mises à jour Traitement d une requête Et moi que dois-je faire? Page 95 95 Page 96 96 Syntaxe générale de recherche Restriction ( ) et projection ( ) Syntaxe Comment remplir les clauses? "Donner les vins de cru Pommard" SELECT FROM <liste d attributs projetés> <liste de relations> Quel résultat souhaite voir l utilisateur (schéma du résultat)? Où sont les attributs dont j ai besoin? SELECT num, annee, degre WHERE cru = Pommard ; Valeur des chaînes de caractères délimitées par des [WHERE <liste des critères de restriction et de jointure>] Y-a t-il des conditions sur les valeurs d attributs exprimées dans ma requête? plusieurs relations dans ma clause FROM? Si oui, quelles sont les conditions de jointure(s)? NUM ANNEE DEGRE 5 1976 11.70 23 1972 12.00 Nombre de tuples accédés : 2 Page 97 97 Page 98 98 Introduction aux Bases de Données Relationnelles SQL - 4

Projection ( ) Restriction "Donner tous les vins" SELECT * ; "Donner la liste de tous les crus, avec élimination des doublons" SELECT DISTINCT cru ; "Donner les vins de degré compris entre 8 et 12" SELECT * WHERE degre >=8 AND degre <=12 ; SELECT * WHERE degre BETWEEN 8 AND 12 ; SELECT * WHERE degre IN (8, 9, 10, 11, 12); Page 99 99 Page 100 100 Restriction et tri Jointure "Donner les vins dont le cru commence par p ou P" SELECT * WHERE cru LIKE p% OR cru LIKE P% ; "Donner les crus des vins de millésime 1995 et de degré 12, triés par ordre croissant" SELECT cru WHERE annee=1995 AND degre = 12 ORDER BY cru ; "Donner les noms des producteurs de Pommard" SELECT nom V, Recoltes R, Producteurs P WHERE AND AND Nom d attribut non ambigu V.num = R.nvin R.nprod = P.num cru = Pommard ; Produit cartésien Conditions de jointures Page 101 101 Page 102 102 Introduction aux Bases de Données Relationnelles SQL - 5

Jointure (syntaxe SQL2) Jointure «procédurale» ou ensembliste Syntaxe plus proche de l algèbre relationnelle (directement exprimée dans le FROM) Supportée dans plusieurs SGBD (>= Oracle 9, MySQL, SQLServer, ) SELECT nom V JOIN Recoltes R ON (V.num = R.nvin) JOIN Producteurs P ON (R.nprod=P.num) WHERE cru = Pommard ; Jointure «naturelle» L égalité sur les attributs de même nom peut être remplacée par NATURAL JOIN, ou JOIN USING (attributs) SELECT nom FROM Producteurs WHERE num IN ( SELECT nprod FROM Recoltes WHERE nvin IN ( SELECT num WHERE cru = Pommard )) ; Page 103 103 Page 104 104 Auto-jointure Opérateurs ensemblistes Jointure d une relation avec elle-même synonymes «Donner les couples de producteurs ayant le même nom. Préciser les régions» SELECT P1.nom, P1.region, P2.region FROM Producteurs P1, Producteurs P2 WHERE P1.nom = P2.nom AND P1.num > P2.num ; Union (norme SQL1) Élimination automatique des doublons SELECT num FROM Producteurs UNION SELECT num FROM Clients ; Intersection (norme SQL2!) SELECT num FROM Producteurs INTERSECT SELECT num FROM Clients ; Différence (norme SQL2!) SELECT num FROM Clients EXCEPT (ou MINUS) SELECT num FROM Producteurs ; Page 105 105 Page 106 106 Introduction aux Bases de Données Relationnelles SQL - 6

Fonctions Exemples avec fonctions 5 fonctions prédéfinies : COUNT, SUM, MIN, MAX, AVG Principe : S'applique à l'ensemble des valeurs d'un attribut d'une relation Produit une valeur unique Pour une requête sans partionnement (plus tard) : - uniquement dans le SELECT, jamais dans le WHERE "Donner la moyenne des degrés de tous les vins" SELECT AVG(degre) ; "Donner la quantité totale commandée par le client de nom Bac" - Ne pas mélanger dans le SELECT les fonctions et les attributs simples! SELECT SUM(qte) SELECT num, AVG(degre) ; num {1, 3, 6, 10} 12,5 {5, 7} 12,0 {2, 8, 11} 11,0 AVG(degre) FROM Commandes, Clients WHERE Clients.nom= 'Bac' AND Clients.num=Commandes.ncli ; Page 107 107 Page 108 108 Exemples avec fonctions (2) Exemples avec fonctions (3) "Nombre de crus différents" " Vins dont le degré est supérieur à la moyenne des degrés des vins" SELECT COUNT(DISTINCT cru) ; "Nombre de vins" SELECT COUNT (*) SELECT * WHERE degre > ( SELECT AVG(degre) ) ; " Numéros de commande où la quantité commandée a été totalement livrée" SELECT ncde FROM Commandes C WHERE qte = ( SELECT SUM(L.qteLivree) FROM Livraisons L WHERE L.ncde = C.ncde ) ; L alias «C» est visible dans le bloc imbriqué Page 109 109 Page 110 110 Introduction aux Bases de Données Relationnelles SQL - 7

Partitionnement Exemples de partitionnement Principe Partitionnement horizontal d'une relation, selon les valeurs d'un attribut ou d'un groupe d'attributs qui est spécifié dans la clause GROUP BY Relation (logiquement) fragmentée en groupes de tuples, où tous les tuples de chaque groupe ont la même valeur pour l'attribut (ou le groupe d'attributs) de partitionnement Fonctions sur les groupes Restrictions sur les groupes Application possible d'un critère de restriction sur les groupes obtenus Clause HAVING " Donner, pour chaque cru, la moyenne des degrés des vins de ce cru " SELECT cru, AVG(degre) GROUP BY cru ; " avec un tri par degré décroissant" SELECT cru, AVG(degre) GROUP BY cru ORDER BY 2 DESC ; " uniquement si ce cru concerne plus de 3 vins" SELECT cru, AVG(degre) GROUP BY cru HAVING COUNT(*)>=3 ORDER BY 2 DESC ; Page 111 111 Page 112 112 Calcul de la partition Exemple de requête erronée initiale Vins cru degre Trier la relation selon les attributs de groupement Créer une sous-relation pour chaque paquet ayant même valeur sur l'ensemble des attributs de groupement, ici «cru» Appliquer la clause SELECT sur chaque partition (dans notre exemple la valeur de cru et la moyenne des degrés sur la partition) Unifier les résultats et Pommard 12 Tavel 11 Pommard 13 Tavel 12 Tavel 13 Vins cru degre Pommard 12 Pommard 13 Tavel 11 SELECT cru, num, AVG(degre) GROUP BY cru ; Résultat «attendu» cru num AVG(degre) Pommard {1, 3, 6, 10} 12,5 Tavel {5, 7} 12,0 Gamay {2, 8, 11} 11,0 Appliquer la restriction du HAVING et Tavel 12 Tavel 13 Vins cru degre Pommard 12,5 Tavel 12 Problème Num est multivalué / cru il n y a pas une valeur par case (pas en première forme normale) Page 113 113 Page 114 114 Introduction aux Bases de Données Relationnelles SQL - 8

Prédicats (1) Prédicats (2) ALL Teste si la valeur d un attribut satisfait un critère de comparaison avec tous les résultats d une sous-requête ANY Teste si la valeur d un attribut satisfait un critère de comparaison avec au moins un résultat d une sous-requête SELECT Cl.num, Cl.nom FROM Clients Cl, Commandes C WHERE Cl.num = C.ncli AND C.qte >= ALL( SELECT qte FROM Commandes) ; SELECT Cl.num, Cl.nom FROM Clients Cl, Commandes C WHERE Cl.num = C.ncli AND C.qte > ANY ( SELECT qte FROM Commandes ) ; Page 115 115 Page 116 116 Prédicats (3) Division avec prédicat EXISTS EXISTS Teste si la réponse à une sous-requête est non vide «Producteurs ayant produit au moins un vin" SELECT P.* FROM Producteurs P WHERE EXISTS ( SELECT R.* FROM Recoltes R WHERE P.num = R.nprod) ; NOT EXISTS Teste si la réponse à une sous-requête est vide "Quels sont les producteurs ayant produit tous les vins (ceux connus de la base de données)?" Méthode : paraphraser en français avec une double négation "Un producteur est sélectionné s'il n'existe aucun vin pour lequel il n y a aucune récoltes (sous entendu de ce producteur et de ce vin) " SELECT P.* FROM Producteurs P WHERE NOT EXISTS ( SELECT V.* V WHERE NOT EXISTS ( SELECT R.* FROM Recoltes R WHERE P.num=R.nprod AND R.nvin=V.num ) ) ; Page 117 117 Page 118 118 Introduction aux Bases de Données Relationnelles SQL - 9

Division avec prédicat (sans EXISTS) Synthèse SELECT P.* FROM Producteurs P WHERE P.num IN ( SELECT nprod FROM Recoltes GROUP BY nprod HAVING COUNT(*) = ( SELECT COUNT(*) ) ) Nombre de vins par producteur =? Nombre de vins dans la base 6 SELECT <liste et/ou expressions attributs A j et/ou fonctions sur Attributs A p > Projection de l ensemble obtenu en (5) sur les A j, calcul des expressions, calcul des fonctions (appliquées aux groupes s il y en a) sur A p 1 FROM <liste de relations R i > Produit cartésien des relations R i 2 WHERE <Conditions sur les tuples> : C 1 Sélection des tuples de (1) respectant la condition C 1 3 GROUP BY <liste attributs A k A j > Partitionnement de l ensemble obtenu en (2) suivant les valeurs A k 4 HAVING <condition sur groupes - fonctions> : C 2 Sélection des groupes de (3) vérifiant C 2 5 ORDER BY <liste d attributs A l ou n ordre dans le SELECT> Tri des tuples obtenus en (4) suivant les valeurs A l Page 119 119 Page 120 120 Synthèse (2) Exemple complet Condition de recherche : WHERE (sélection de tuples), HAVING (sélection de groupes) Compositions de conditions élémentaires (AND, OR, NOT) Évaluée à Vrai ou Faux Condition élémentaire : Évaluée à Vrai ou Faux Prédicat : - Comparaison : =, <, <=, >, >=, <> Attribut/valeur Attribut/attribut - Intervalle :BETWEEN - Chaîne : LIKE - Nullité : IS NULL - Appartenance : IN - Quantification : EXISTS, ANY, ALL "Donnez par ordre croissant le nom et la somme des quantités commandées par des Clients bordelais, uniquement si chaque commande est d'une quantité strictement supérieure à 20 litres." SELECT FROM WHERE AND GROUP BY HAVING ORDER BY Page 121 121 Page 122 122 Introduction aux Bases de Données Relationnelles SQL - 10

Mises à jour Plan du document Insertion Introduction Insertion d un seul tuple BD Exemple : les vins INSERT INTO Vins VALUES (100, 'Jurançon', 1979, 12) ; Définition des données Manipulation des données Recherche Mises à jour - Insertion - Suppression - Modification Traitement d une requête Et moi que dois-je faire? INSERT INTO Vins (num, cru) VALUES (200, 'Gamay') ; Insertion d un ensemble de tuples CREATE TABLE BORDEAUX(num INTEGER, annee INTEGER, degre NUMBER(4,2)) ; INSERT INTO BORDEAUX SELECT num, annee, degre WHERE cru = 'Bordeaux' ; CREATE TABLE BORDEAUX AS SELECT num, annee, degre WHERE cru = 'Bordeaux' ; Page 123 123 Page 124 124 Mises à jour Mises à jour Suppression Modification "Supprimer tous les tuples de Vins" «Le producteur 150 habite dans le sud ouest» DELETE ; ou TRUNCATE TABLE Vins ; "Supprimer le vin de numéro 150" DELETE WHERE num = 150 ; "Supprimer les vins de degré <9 ou >12" DELETE WHERE degre < 9 OR degre > 12 ; "Supprimer les commandes passées par Belaïd" DELETE FROM Commandes WHERE ncli IN ( SELECT num FROM Clients WHERE nom= Belaïd') ; UPDATE Producteurs SET region = Sud Ouest' WHERE num = 150 ; «Les degrés des Gamays augmentent de 10 %» UPDATE Vins SET degre = degre * 1.1 WHERE cru = 'Gamay' ; «Le client Bac augmente ses commandes de 10 unités» UPDATE Commandes SET qte = qte + 10 WHERE ncli IN ( SELECT num FROM Clients WHERE nom='bac') ; Page 125 125 Page 126 126 Introduction aux Bases de Données Relationnelles SQL - 11

Plan du document Introduction BD Exemple : les vins Définition des données Manipulation des données Recherche Mises à jour Traitement d une requête Et moi que dois-je faire? Traitement d une requête SQL SELECT nom, prenom FROM producteurs WHERE region = Sud ouest Analyse Syntaxique Vérification Optimisation Génération d'un plan d'exécution DD Schémas Droits Vues Placement, index CI Statistiques Forme exécutable de la requête Page 127 127 Page 128 Exécution BD 128 Plan du document Introduction BD Exemple : les vins Définition des données Manipulation des données Recherche Mises à jour Traitement d une requête Et moi que dois-je faire? Et moi que dois-je faire? Relire les transparents Lire la documentation complémentaire : Notre cours rédigé : http://www-inf.itsudparis.eu/cours/bd/index.php?idr=37 Cours rédigé de Télécom ParisTech : http://perso.telecomparistech.fr/~talel/cours/inf225/wwwbd/polyv7/chap4.ht m Cours rédigé de l IMAG : http://wwwlsr.imag.fr/les.personnes/herve.martin/html/sql.htm Faire le QCM lié à ce cours sur moodle Pratiquer préparer le TP1-2 (SQL) en algèbre relationnelle pour comprendre le lien AR SQL faire les questions SQL des annales faire le TP en ligne (les vins) Page 129 129 Page 130 130 Introduction aux Bases de Données Relationnelles SQL - 12