Informatique générale pour l ingénieur

Documents pareils
Langage SQL : créer et interroger une base

Le langage SQL Rappels

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

1 Introduction et installation

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

Les bases de données

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

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

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

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

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

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

16H Cours / 18H TD / 20H TP

INTRODUCTION AU DATA MINING

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

FileMaker 13. Guide de référence SQL

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

MySQL / SQL EXEMPLES

Le Langage De Description De Données(LDD)

SQL Historique

Bases de données relationnelles

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

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

Bases de données avancées Introduction

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

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

Optimisation SQL. Quelques règles de bases

Systèmes de Gestion de Bases de Données

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

Encryptions, compression et partitionnement des données

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Vincent Augusto

Le Langage SQL version Oracle

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

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

Les bases fondamentales du langage Transact SQL

Support de Cours REQUÊTES TRANSACT-SQL DANS MICROSOFT SQL SERVER Stéphane N GUESSAN Groupe Pigier Abidjan Version 1.

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

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

MODE OPERATOIRE OPENOFFICE BASE

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

Bases de Données. Plan

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

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

Structured Query Language

Système binaire. Algèbre booléenne

Bases de données élémentaires Maude Manouvrier

TP Contraintes - Triggers

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

Introduction aux Bases de Données 2004/2005

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

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

Les Utilisateurs dans SharePoint

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

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

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

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

TP Bases de données réparties

SQL Server et Active Directory

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

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

Les BASES de DONNEES dans WampServer

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

Exercices et solutions

SUPPORT SQL. Thierry GRANDADAM

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

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

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

Bases de données multidimensionnelles et mise en œuvre dans Oracle

Excel avancé. Frédéric Gava (MCF)

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

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

Compétences Business Objects

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

Cours 4 : Agrégats et GROUP BY

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

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

BTS/CGO P10 SYSTEME INFORMATION Année

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

Oracle Décisionnel : Modèle OLAP et Vue matérialisée D BILEK

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

AGRÉGATION «ÉCONOMIE ET GESTION»

Bases de données - Modèle relationnel

Bases de données et sites WEB

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

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

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

Devoir Data WareHouse

1. Base de données SQLite

Thème : Gestion commerciale

Cours de bases de données. Philippe Rigaux

Interpréteur d algèbre relationnelle

Transcription:

Informatique générale pour l ingénieur Chapitre XVII : Introduction aux bases de données Partie II : Algèbre relationnelle - Exploitation de la masse de données Dans le chapitre précédent, nous avons appris à organiser le stockage des données. Il nous faut à présent apprendre les techniques permettant d interroger ce stock de données. Pour cela, on va faire des opérations sur tables c est-à-dire sur les relations. L algèbre relationnelle est l ensemble des règles régissant les différentes opérations sur les relations. Dans la suite, on va voir les concepts mathématiques associés à ce genre de situation et s intéresser à leur traduction SQL 1. I. Opérateurs simples On va tout d abord s intéresser à des opérateurs ne s appliquant qu à une seule relation ou sur deux relations ayant le même schéma. Autrement dit, on cherche à exploiter les données sur une seule table ou sur deux tables de même structure. Les instructions que nous allons voir provoquent la création temporaire et l affichage d une nouvelle table regroupant les résultats de la requête. A. Opérateurs ensemblistes usuels Ce sont les opérateurs Union, Intersection Différence : ces opérateurs permettent de produire une nouvelle relation à partir de deux relations de même schéma. 1. Union Définition : L union est une opération portant sur deux relations R 1 et R 2 ayant le même schéma et construisant une troisième relation constituée des n-uplets appartenant aux relations R 1 ou R 2 et sans doublon, on la note R 1 et R 2 doivent avoir les mêmes attributs. Si une même occurrence existe dans R 1 et R 2 elle n apparaît qu une seule fois dans le résultat de l union. Le résultat de l union est une nouvelle relation qui a les mêmes attributs que R 1 et R 2 Syntaxe : SELECT * FROM table1 UNION SELECT * FROM table2 La table créée nést pas enregistrée dans la base de données cést un intermédiaire de calcul. 1 Les exemples d illustration sont pris sur les bases pizzafux2.sqlite et basepart2.sqlite à télécharger sur le site de la classe. 1

2. Intersection L intersection est une opération portant sur deux relations R 1 et R 2 ayant le même schéma et construisant une troisième relation constituée des n-uplets appartenant à la fois aux relations R 1 et R 2 et sans doublon, on la note Syntaxe : SELECT * FROM table1 INTERSECT SELECT * FROM table2 3. Différence La différence est une opération portant sur deux relations R 1 et R 2 ayant le même schéma et construisant une troisième relation constituée des n-uplets appartenant à R 1 et non à R 2 et sans doublon, on la note Syntaxe : SELECT * FROM table1 EXCEPT SELECT * FROM table2 Voyons à présent ceux qui sont spécifiques de l algèbre relationnelle B. Opérateur projection Il s agit de récupérer un sous-ensemble des composantes des n-uplets de la relation Notation mathématique conventionnelle : r[x] Premier exemple : on prend notre fichier de clients de PizzaFuxa (nom fichier pizzafuxa2.sqlite) On s intéresse à la table clients : SELECT ville, codepostal FROM clients Cette instruction SQL renvoie les couples (ville, codepostal) de la table clients Attention en de cas de projection, il peut y avoir apparition de doublons. Exemple (Paris,75017) apparait plusieurs fois Deuxième exemple : Pour éviter les doublons on utilise la variante SELECT DISTINCT 2

C. Opérateur : Sélection - tri des uplets La sélection permet de choisir uniquement certaines entrées définies par un critère (cést un tri sur les lignes alors que la projection cést un tri sur les colonnes de la table) Notation mathématique conventionnelle : F La sélection est notée en général F où F est une condition : Premier exemple SELECT * FROM bigvilles WHERE ville_population_2012 > 200000 Deuxième exemple : On complique un peu : la requête suivante fait une sélection + projection et demande un ordre de présentation spécifique. SELECT departement, nom, ville_population_2012 FROM bigvilles WHERE ville_population_2012 > 200000 ORDER BY departement DESC 3

Instructions complémentaires pour enrichir la clause WHERE 1) LIKE : Ce mot-clé permet d effectuer une recherche sur un modèle particulier. Il est par exemple possible de rechercher les enregistrements dont la valeur d une colonne commence ou contient une séquence ( ou une lettre) Exemple : On veut les noms et la population des les villes commençant par N SELECT nom, ville_population_2012 FROM bigvilles WHERE nom LIKE 'N%' Le % est important il joue le rôle de joker et conditionne la forme de la recherche ainsi : - LIKE %a : le caractère «%» est un caractère joker qui remplace tous les autres caractères. Ainsi, ce modèle permet de rechercher toutes les chaines de caractère qui se termine par un «a». - LIKE a% : ce modèle permet de rechercher toutes les lignes de «colonne» qui commence par un «a». - LIKE %a% : ce modèle est utilisé pour rechercher tous les enregistrements qui utilisent le caractère «a». - LIKE pa%on : ce modèle permet de rechercher les chaines qui commence par «pa» et qui se terminent par «on», comme «pantalon» ou «pardon». 2) AND et OR SELECT nom_colonnes FROM nom_table WHERE condition1 AND condition2 SELECT nom_colonnes FROM nom_table WHERE condition1 OR condition2 Attention : il faut penser à utiliser des parenthèses lorsque c est nécessaire. Cela permet d éviter les erreurs car et ça améliore la lecture d une requête par un humain. 3) BETWEEN L utilisation de la commande BETWEEN séffectue de la manière suivante : SELECT *FROM table WHERE nom_colonne BETWEEN 'valeur1' AND 'valeur2' La requête suivante retournera toutes les lignes dont la valeur de la colonne «nom_colonne» sera comprise entre valeur1 et valeur2. 4) Détruire des enregistrements Cela peut se faire avec la commande DELETE FROM nom_table WHERE condition D. Fonctions d agrégation, GROUP BY, et HAVING Les fonctions d agrégation calculent un résultat sur un groupe déntrées généré par une sélection. Observons la syntaxe sur un exemple. Exemple : le nombre total de français habitants dans une ville de plus de 200 000 habitants 4

Parmi les fonctions d agrégation les plus usuelles, on peut retenir : AVG (nom_colonne) pour le calcul de la moyenne COUNT(nom_colonne) pour compter le nombre de uplets. Il existe aussi COUNT (DISTINCT nom_colonne) qui compte le nombre de valeurs différentes. Exemple de chez Pizzafuxa. MAX(nom_colonne) et MIN(nom_colonne) pour une valeur maximum ou minimum SUM(nom_colonne) pour le calcul de la somme Remarque : les différents gestionnaires de base de données n implémentent pas toujours exactement les mêmes fonctions usuelles, et pas nécessairement exactement avec les mêmes noms. BREF lire les docs!! Cela fait partie des petites variantes entre SGBD. GROUP BY La commande GROUP BY est utilisée en SQL pour grouper plusieurs résultats ( elle permet de partitionner le résultats d une requête) et utiliser une fonction de sur un groupe. SELECT colonne1, fonction(colonne2)from table GROUP BY colonne1 Que fait la requête suivante sur notre base de données pizzafuxa2.sqlite Les fonctions s appliquent alors a chaque groupe de la partition engendrée par GROUP BY HAVING. Cette instruction permet de sectionner des groupes a partir d une condition portant souvent sur une fonction d agrégation. Exemples : Quels sont nos clients fideles ( i.e ceux qui ont commandé plus de 5 pizzas)?. 5

Remarque : C est un peu l équivalent après GROUP BY de WHERE après SELECT FROM E. Les sous-requêtes Il peut être intéressant d utiliser le résultat d une requête R 1 à l intérieur du critère d une autre requête R 2 : la requête R 1 est une sous requête de la requête R 2 Exemple : Autre exemple. SELECT nom FROM bigvilles WHERE ville_zmax =(SELECT MAX(ville_zmax) FROM bigvilles) II. Opérateurs portant sur plusieurs tables A. Produit cartésien Soient deux relations R 1 et R 2. L e produit cartésien noté R 1 R 2 est la relation regroupant tous les uplets v1,v2 ou v1 est un uplet de R 1 et v2 est un uplet de R 2. Dans le langage SQL, le produit cartésien de deux relations s obtient par la syntaxe SELECT * FROM table1,table2 6

Exemple (sur la base basepart2.sqlite) Autre syntaxe (à privilégier) B. JOINTURE Le produit cartésien n est pas très intéressant en soit mais quand on le fait suivre d une sélection on obtient une jointure qui elle est très intéressante. Notation mathématique : Traduction SQL : JOIN... ON SELECT * FROM tabler JOIN tables ON condition F La condition F de sélection est en général un attribut de la première table = un attribut de la seconde table. c est a dire attributr=attributs rem : souvent lien avec une clé étrangère... Exemples 1) 7

2.) Les dépenses totales de chaque client... 3) Sur trois tables!! Mettez des parenthèses... 8

III. Compléments 1) Arrondir les calculs ROUND (nombre[, precision]) : Retourne la valeur arrondie de "nombre" (éventuellement à "precision"= nombre de chiffres après la virgule) 2) Renommer une colonne avec AS voir exemple plus bas 3) On peut vouloir enregistrer une requête : Dans sqlite-manager, on le fait à travers les VUES. Reprenons notre exemple des dépenses totales de chaque clients. SELECT cli,round(sum(prix),1)as facture_totale FROM commandes JOIN menu ON piz=plaid GROUP by cli ORDER BY facture_totale DESC Cette requête nous donnera le numéro de client et le montant (arrondi à la première décimale) payé par chaque client. On va enregistrer cette requête en faisant : Puis en faisant un copier-coller du code SQL dans l assistant après avoir donné un nom à la vue. Ici on l appelle facture_clients Rem : Il y a aussi des fonctions d exportation des résultats de la requête sous forme csv par exemple. Explorez ces fonctions. Cela donne : ( observez que les boutons d insertion de données sont inactifs...) Observez le code SQL genéré par cette action CREATE VIEW "facture_clients" AS SELECT cli,round(sum(prix),1) as facture_totale FROM commandes JOIN menu ON piz=plaid GROUP by cli ORDER by facture_totale 4) une VUE (VIEW) est une sorte de table déduite des tables contenant les informations et calculée à partir d elles à chaque fois qu elle est appelée. (si les tables sont modifiées la vue est modifiée automatiquement) Ce qui est intéressant c est qu une fois créée, une view peut être engagée dans un nouveau calcul de requête. 9

Exemple : une jointure entre une vue et une table 10