BDD : 2,3 Algèbre (langage algébrique)



Documents pareils
1 Introduction et installation

16H Cours / 18H TD / 20H TP

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

Le langage SQL Rappels

Langage SQL : créer et interroger une base

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

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

SQL Historique

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

Le Langage SQL version Oracle

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

Cours 4 : Agrégats et GROUP BY

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

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

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

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

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

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

Systèmes de Gestion de Bases de Données

MODE OPERATOIRE OPENOFFICE BASE

Bases de données relationnelles

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

Les bases de données

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Vincent Augusto

Optimisation SQL. Quelques règles de bases

Bases de données élémentaires Maude Manouvrier

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

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

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

Interpréteur d algèbre relationnelle

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

Bases de Données. Plan

II. Modèle conceptuel le modèle entité-association

Introduction aux Bases de Données 2004/2005

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

FileMaker 13. Guide de référence SQL

Modèle conceptuel : diagramme entité-association

TP Bases de données réparties

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

Modèle Entité-Association. C est un modèle important pour la conception des bases de données relationnelles. Il

Auto-évaluation SQL. Document: f0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Cours: Les Jointures 1

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

TP 8: LES OPERATEURS ENSEMBLISTES

Le Langage De Description De Données(LDD)

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

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

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

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

BTS/CGO P10 SYSTEME INFORMATION Année

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

INTRODUCTION AU DATA MINING

MySQL / SQL EXEMPLES

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

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

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

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

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

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

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

Base de données relationnelle et requêtes SQL

COURS SQL. SQL*Plus PL/SQL

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

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

Administration de Bases de Données : Optimisation

Thème : Gestion commerciale

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

Bases de données Outils de gestion

Dossier I Découverte de Base d Open Office

Mysql avec EasyPhp. 1 er mars 2006

Chapitre 11 Bases de données

Introduction à SQL2. Professeur Serge Miranda Directeur Master «MBDS»

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

Compétences Business Objects

SQL Server ressource SOMMAIRE

Les BASES de DONNEES dans WampServer

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

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

SUPPORT SQL. Thierry GRANDADAM

Ecole Polytechnique de Louvain INGI Fichiers et bases de données

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

Les bases fondamentales du langage Transact SQL

LE LANGAGE SQL2 1. INTRODUCTION

COURS de BASES de DONNEES

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

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

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

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

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

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

Thierry Spriet Version rééditée au format PDF et remise en page

Évaluation et optimisation de requêtes

Structured Query Language

Connectivité aux bases de données Java (JDBC)

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

2 Serveurs OLAP et introduction au Data Mining

Transcription:

2,3 Algèbre (langage algébrique) BDD : Notations : R(X), S(Y) deux relations X et Y deux listes d'attributs t et s deux tuples de R et de S. RS relation résultat projection : -Syntaxe : <nom_relation_résultat> projection (nom_relation, liste d'attributs) -Sémantique Soit R(X) une relation, V C X RS Projection(R,V) = { t(v), t E R } exemple : Requete 1 : trouver les noms des pilotes : pilote1 projection(pilote, PLNOM) on a donc : pilote1 = PLNOM Miranda Marion Francis Tom Requete 2 : lister les noms et les salaires des pilotes pilote2 projection(pilote, PLNOM, salaire) on a donc : pilote2 = PLNOM SALAIRE Miranda nahn eliane lofti 12000 20000 3000 40000 Sélection : -Syntaxe : <nomrelationresultat> Selection(<nom_relation>, <nom_attribut> Θ constante ) Θ theta = { '=' ou '!=' ou '>' ou '<' ect } -Sémantique Soit A un attribut de R(X) et c une valeur E au dommane de A RS Selection (R/A Θ c) = Lt / t E R et t(a) Θ c vraie } Exemple : Requete 3 : Lister les pilotes habitant Paris pilote3 Selection(Pilote, VILLE = '' )

on a donc : pilote3 = PLNUM PLNOM PLPRENOM VILLE SALAIRE 1 2 5 8 7 Dupont taladoire bonfils marcenac lahire François Tom rené Lucas Laura Paris 10000 3000 50000 8000 80000 Jointure -Syntaxe : <nomrelaiton> jointure(<nomrelation1>,<nomrelation2>, A1 Θ A2 ) exemple : RS JOINTURE (pilote, vol/plnum=plnum) on a donc : (les deux tables coller ) requete 4 : Quels sont les noms des pilotes assurant des vols au départ de? R1 projection(pilote, PLNUM,PLNOM) R2 projection(vol, PLNUM, VILLE) R3 selection(r2 / VILLE = 'Paris') R4 jointure(r1,r3 /PLNUM = PLNUM ) On a donc R4 = PLNUM PLNOM PLNUM VILLE 1 5 6 Dupont taladoire bonfils 1 5 6 Paris Pour garder que le nom des pilotes on fait : R5 Projection(R4,PLNOM) Requete 5 : Quels sont les noms des pilotes qui conduisent des avions de capacité >250? R1 jointure (avion,vol / AVNUM = AVNUM) R2 sélection(r1 / CAPACITE > 250 ) R3 jointure (R2,Pilote / PLNUM = PLNUM ) R4 projection ( R3, PLNOM ) (juste mais deuxième solution meilleur ) Correction : R1 projection ( Pilote, PLNUM, PLNOM) R2 Projection ( Avion, AVNUM, CAPACITE) R3 Sélection (R2 / Capacité > 250 ) R4 Projection ( vol, AVNUM, PLNUM ) R5 jointure ( R1, R4/ PLNUM = PLNUM ) R6 jointure (R5, R3 / AVNUM = AVNUM ) R7 projection ( R6, PLNUM)

2.3.2 : Opérateurs ensemblistes : UNION INTERSECTION DIFFERENCE 2. relation compatibles : -même nombre d'attributs -attributs respectifs définis sur le même domaine syntaxes UNION : <nomrelation resultat> UNION (<nomrelation1><nomrelation2>) INTERSECTION : <nomrelation resultat> INTERSECTION(<nomrelation1><nomrelation2>) DIFFERENCE : <nomrelation resultat> DIFFERENCE (<nomrelation1><nomrelation2>) union : je met les tables ensembles intersection : tous les tuples en commun difference : on recupere tous ce qui n'est pas en commun entre les deux relation ex : Lister les noms d'avions de capacité > 250 ou localisé à : R1 sélection( avion/capacité > 250) //selection des avions de capacité > 250 R2 sélection ( avion / localisation = '' ) //selection des avions localisé à R3 union ( R1,R2) //union des deux tables R4 projection ( R3, AVNOM ) //on récupère que les nom de la dernière table Langage de requête SQL (structured query language) Vocabulaire : Relation table Attribut colonne tuple ligne domaine types = number(n), char (N), date (N) En SQL on peut faire des projection, des sélection, des jointures, des unions, des intersection mais aussi on peut utiliser des fonctions statistique, partition de données, tri 1. Sélection/ projection : SELECT liste de colonnes résultat FROM table WHERE condition exemple : projection : quelles sont toutes les infos sur les pilotes? SELECT * FROM PILOTE ; Conditions spécifiques IS NULL ( exemple : select PLNOM from PILOTE where VILLE is null) IN ( ex : select capacite from avion where avnom in ( 'A310', 'A320', ' A330' ) BETWEEN v1 AND v2 LIKE 'chaine générique' ( * : remplacer un caractère, % remplacer suite de caractère ) ( ex : select plnom like 'n %' ) Conditions complexe : Quels sont les vols au départ de Nice desservant Paris? SELECT * FROM vol WHERE villedep = 'nice' AND villearr = 'Paris' ;

Quels sont les noms des avions differents des airbus? SELECT avnom from avion where avnom NOT LIKE 'A3*0' 2. Fonctions statistiques : SUM() : somme AVG() : moyenne COUNT() : cardinalité MAX () : valeur maximale MIN () : valeur minimale Quels sont les salaires moyens des pilotes nicois? SELECT avg(salaire) AS moyenne_salaire FROM pilote WHERE ville = 'NICE' ; nombres de vols au départ de Nice? SELECT COUNT(volnum)/COUNT(*) FROM vol WHERE villedep ='NICE' 3. Tri des résultats ORDER BY colonne ( [ASC : ascendant et DESC : descendant ] ) Donner les noms des pilotes clermontois par ordre de salaire decroissant SELECT PLNOM FROM PILOTE WHERE ville = 'clermont' ORDER BY salaire [DESC] ; 4.Classification ou partitionnement GROUP BY organiser une table selon une colonne exemple : moyenne des salaires des pilotes par ville : select avg(salaire), ville from pilote group by ville /!\ AS moyenne permet que la colonne AVG(salaire) s appelle moyenne Recgerche dans les sous-tables : Select From GROUP BY having condition exemple : Donner le nombres de vols par pilote (s'il est superieur ou égal à 3 ) Select PLNUM, COUNT(VOLNUM) AS nb_vol FROM vol GROUP BY plnum HAVING COUNT(volnum) >= 3 ; 5 expression de la jointure : 6 expression des opérateur ensemblistes : UNION (or) select x from x where x=x UNION select x from x where y=x 7 expression de l'intersection INTERSECT (AND) 8 expression de diference : MINUS (NOT ) exercice :

1 : select intitule from epreuve 2 : select nom, age, sex from etudiant 3 : select * from manifestation where dateman > #12/04/99# 4 :SELECT nbetudiant FROM iut WHERE iut.adresse = «BELFORT» 5: SELECT * FROM etudiant, IUT where etudiant.noiut = IUT.noIUT AND iut.adresse = «belfort» 6 : SELECT NOM from etudiant where age IN ( select age from etudiant where nom= 'toto' ) ; on peut aussi écrire : SELECT E2.nom FROM Etudiant E1, Etudiant E2 WHERE E1.age = E2.age AND E1.nom = «toto» 7 : nombre d'épreuve par manif : Select count(numepreuve) from contenu group by numman 8 : Select Count (Etudiant.noEtuiant), nomiut from Etudiant, participe, iut where etudiant.noetudiant=participe.noetudiant and Etudiant.noIut=Iut.noIut group by nomiut 9 : select noetudiant, Manifestation from participe, Manifestation where noetudiant IN (select noetudiant from etudiant where nom=»toto» ) and Participe.numMan = Manifestation.numMan ; 8 correction :: Select numiut, count(distinct noetudiant) from participe p, Etudiant e where p.noetudiant =e.noetudiant group by e.noiut ; 9correction : select distinct m.nomman from manifestation m, participe p, etudiant e where m.numman = p.numman and p.noetudiant = e.noetudiant and e.nom=»toto» Partiel BDD 7/01/09 : question 1 : EMPRUNTE -dateretour -Etat EMPRUNTE : -dateemprunt OUVRAGE : -idouvrage -titre -anneeparution Est de TYPE : -idtype -libelle ABONNE : -noabonne -nom -prenom -adresse -age A pour edite AUTEUR : EDITEUR : -noauteur -nomauteur -Prenom -noediteur -NomEditeur

Question 2 : 1) select titre, nomediteur from ouvrage, editeur where noediteur IN (select noediteur from editeur where nomediteur = «editor» ) 2)select count(*) from date where dateemprunt => #12/12/2008 AND dateemprunt <= #15/12/2008 # ; 3) Select count( distinct noabonne ) from emprunt where dateretour = NULL 4) select titre from ouvrage where anneeparution in (SELECT anneeparution from Ouvrage where titre = «dahlia noir») ; OU select o1.titre from ouvrage o1, ouvrage o2 where o1.anneeparution = 02.anneeParution and o2.titre = «dalia noir» 5)select avg(age) from abonne inner join emprunte on emprunte.noabonne = Abonne.noabonne inner join ouvrage on ouvrage.idouvrage = emprunte.iouvrage inner join EST DE on EST DE id.ouvrage = ouvrage.idouvrage inner joint type on type.idtype = estde.idtype where ouvrage.titre = «le dalia noir» and type;libelle = «live» 6)select a.noabonne, a.nom, count(*) from emprunte em, abonne a, est de e, type t where em.noabonne and em.idouvrage = e.idouvrage and e.type )t.idtype and t.libelle = «livre» group by a.noabonne, a.nom ; 7) MCD Concert : requete SQL : 1) Select MoyenPaiement From vente ; 2) prix moyen des billets de concert de johnny hallyday à l'axone de montbéliard en 2012 : Select AVG(Billet.prix) from billet INNER JOIN Concert ON concert.concet_id = billet.concert_id INNER JOIN Artiste ON artiste.artiste_id = concert.concert_id INNER JOIN salle ON salle.salle_id = concert.salle_id WHERE Artiste.nomArtiste = «johnny hallyday» AND salle.nomsalle = «axone montbéliard» AND concert.date between «01/01/012» AND «31/12/2012» 3) Select Concert.date from concert INNER JOIN artiste on artiste.idartiste = concert.idartiste INNER JOIN salle on salle.idsalle = concert.idsalle

where artiste.nomartiste = «corneille» and salle.nomsalle = «axone» 4)noms des salles dans l'ordre décroissant de leur capacité SELECT nomsalle FROM salle ORDER BY capacite [DESC] 6) Nombre de concerts proposés dans chacune des salle de spectacless ( nom salle et nombre concert) select count(concert.idconcert), salle.nomsalle from salle, concert INNER JOINsalle ON salle.idsalle = Concert.idSalle group by salle.idsalle 7) select count(vente.vente_id) from Vente INNER JOIN Billet ON vente.billet_id = billet.billet_id INNER JOIN Concert ON concert.concert_id = billet.concert_id INNER JOIN Artiste ON artiste.artiste_id = concert.concert_id INNER JOIN salle ON salle.salle_id = concert.salle_id where artiste.nomartiste = «christophe mae» salle.nomsalle = «axone» Concert.dateConcert = «03/03/2012» 8) Chanteurs n'ayant jamais réalisé de concert à la cigale : SELECT nom_artiste FROM ARTISTE MINUS SELECT nom_artiste FROM ARTISTE INNER JOIN concert ON concert.id_artiste = artiste.id_artiste INNER JOIN salle ON salle.salle_id = concert.salle_id WHERE Salle.nomSalle = «cigale» 9)select concert_id from concert INNER JOIN Billet ON bille.idconcert = concert.idconcert INNER JOIN vente ON vente.billet_id = billet.billet_id group by Concert.idConcert HAVING count(vente.idvente) > 20000 10)