TP n o 14 : Interrogation d une BDD



Documents pareils
Le langage SQL Rappels

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

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

Langage SQL : créer et interroger une base

PROJET 1 : BASE DE DONNÉES REPARTIES

1. Base de données SQLite

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

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

TP Bases de données réparties

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

MODULE DES ENCAISSEMENTS. Outil de comptabilisation et de transfert de revenus des établissements au Service des finances GUIDE TECHNIQUE

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

BTS/CGO P10 SYSTEME INFORMATION Année

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

Cours 4 : Agrégats et GROUP BY

Systèmes de Gestion de Bases de Données

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

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

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

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

1 Introduction et installation

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

Devoir Data WareHouse

e)services - Guide de l utilisateur e)carpa

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

Thème : Gestion commerciale

EXERCICES UML. Modéliser cette situation par un diagramme de cas d utilisation. Consulter planning

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

MS SQL Express 2005 Sauvegarde des données

Introduction aux Bases de Données 2004/2005

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Programmation Web. Madalina Croitoru IUT Montpellier

INTRODUCTION AU DATA MINING

CONVENTION de souscription du forfait «AGIR 18/28» CONDITIONS PARTICULIERES

TP 1. Prise en main du langage Python

Les bases de données

SQL Historique

2. Cliquez Contact Directory of Public Administration. 5. Tapez le mot de passe - Hello (pour OFPA). Changez le mot de passe en cas de

Mysql avec EasyPhp. 1 er mars 2006

Évaluation et optimisation de requêtes

COURS WINDEV NUMERO 3

Services bancaires par Internet aux entreprises. Guide pratique pour : Rapports de solde Version

Guide pour les chercheurs. Version 1.0

Présentation Windows Azure Hadoop Big Data - BI

Voici les textes des fichiers associés au bulletin CA. Notez que vous retrouverez dans ces textes les nouvelles de toutes les régions.

Voyez clair dans vos finances avec AccèsD Affaires

16H Cours / 18H TD / 20H TP

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

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Gestion d Epargne de Crédit & Comptabilité

SQL Server et Active Directory

LISTE INTERBANCAIRE CODES MOTIFS DE REJET/RETOUR. Brochure destinée à la clientèle

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

Modifications des modèles de factures

SOLUTIONS TECHNOLOGIQUES Fiche activité élève

PRÉSENTATION SOMMAIRE

Mise en oeuvre TSM 6.1

Initiation à la programmation en Python

Pré-conditions : Evénement déclencheur : le client souhaite un virement. Description du déroulement du cas : Description des Use cases

Modules ICI relais & EXAPAQ Predict v4.0

Avertissement : ceci est un corrigé indicatif qui n engage que son auteur

KPI (Key Performance Indicator) dans MOSS

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

Les bases fondamentales du langage Transact SQL

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Fingerprinting d'applications Web

Restoring people s trust in their government by making governments more open and transparent

Service des Relations Internationales. Livret d hébergement

Performance web. Mesurer. Analyser. Optimiser. Benjamin Lampérier - Benoît Goyheneche. RMLL Beauvais. 8 Juillet 2015

ACCÉDER. aux services. Brochure d information sur les services, les offres du Groupe La Poste et leurs accès aux gens du voyage

Exemples de reque tes dans data.bnf.fr

France SMS+ MT Premium Description

Écriture de journal. (Virement de dépense)

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

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

FileMaker 13. Guide de référence SQL

Page Paragraphe Modification Mise en page du document Le bouton "Format de page" est maintenant "Page"

Présentation du langage et premières fonctions

Angeva Angeva seniors Cimea Cimea seniors

Facultés: les Facultés, l Ecole des Sciences Humaines et Sociales, l Ecole de Droit, l Institut de Recherche en Sciences et Technologies du Langage.

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

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Django et PostgreSQL sous la charge

Ce progiciel est un ensemble d applications qui permettent de gérer les opérations d agence. Il est composé de 6 applications.

Merci d'avance de prendre le temps d'y répondre, et de nous le retourner avant le 20 octobre 2003 à l'adresse suivante :

QUESTIONNAIRE DESTINE AUX VETERINAIRES ET AUX RESPONSABLES DE CLINIQUE VETERINAIRES

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

Bases de données relationnelles

Baccalauréat technologique Série : sciences et technologies du management et de la gestion (STMG)

Comptes d épargne CHOISIR LE COMPTE D ÉPARGNE QUI RÉPOND À VOS BESOINS

I00 Éléments d architecture

FUTURES COMPRENDRE VOTRE RELEVE DE COMPTE. WH SELFINVEST Est Luxemburg, France, Belgium, Poland, Germany, Netherlands

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Administration de Bases de Données : Optimisation

Exercice sur la planification de l élaboration d un programme TPMDidacticiel de MS Project pour la planification de projets

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

Transcription:

Lycée Louis-Le-Grand, Paris 2014/2015 MPSI 4 Informatique pour tous D. Cazor, A. Troesch TP n o 14 : Interrogation d une BDD Correction de l exercice Pour commencer, l entête Python, et une petite fonction qui lancera l exécution d une requête, et provoquera l affichage ainsi que la sauvegarde dans un fichier. import sqlite3 ### Ouverture de la connection à la BDD: connection = sqlite3.connect( py066-ma_banque.db ) cur = connection.cursor() ### Ouverture en écriture du fichier de sauvegarde des résultats reponse = open( py066-rep.txt, w ) ### Pour lancer une requête afficher et sauvegarder le résultat def requete(r,n): cur.execute(r) print( Question {}.format(n)) print() reponse.write( Question {}\n\n.format(n)) for L in cur: reponse.write(str(l) + \n ) print(l) print() reponse.write( \n ) ### INSÉRER LES DIFFÉRENTES REQUÊTES ICI ### ### Fermeture du fichier de sauvegarde et de la connection à la BDD reponse.close() connection.commit() connection.close() Et voici la liste des requêtes : #### QUESTION 1 # Nom prénom de tous les clients requete("""select nom, prenom 1

""",1) #### QUESTION 2 # Nom prénom des clients de Paris requete("""select nom, prenom WHERE lower(ville) = paris """,2) #### QUESTION 3 # Identifiant des comptes Livret A requete("""select idcompte from compte where type = Livret A """,3) #### QUESTION 4 # Identifiant et montant des opérations de débit sur le compte no 1 requete("""select idop, montant WHERE (idcompte = 1) AND (montant < 0)""",4) #### QUESTION 5 # Identifiant des propriétaires de livret A (sans doublon), # classé par ordre croissant d identifiant. requete("""select DISTINCT idproprietaire WHERE type = Livret A ORDER BY idproprietaire""",5) #### QUESTION 6 # Identifiant des clients n ayant pas de livret A. # Attention, certains n ont pas de livret du tout, et ne sont pas dans la table compte. requete("""select idclient WHERE idclient NOT IN (SELECT idproprietaire WHERE type = Livret A ) ORDER BY idclient""",6) #### QUESTION 7 # Numéros de comptes et types des clients de Paris requete("""select idcompte, type 2

WHERE idproprietaire IN (SELECT idclient WHERE ville = Paris )""",7) #### QUESTION 8 # Liste des comptes et type de compte de Dumbledore requete("""select idproprietaire, idcompte, type WHERE idproprietaire IN (SELECT idclient WHERE nom = Dumbledore )""",8) #### QUESTION 9 # Nombre de client par ville, classé par ordre alphabétique de ville requete("""select ville, COUNT(idclient) GROUP BY ville ORDER BY ville""",9) #### QUESTION 10 # La ville dans laquelle se trouve le plus de client requete("""select ville, max(nb) FROM (SELECT ville, COUNT(idclient) AS nb GROUP BY ville)""",10) #### QUESTION 11 # Trouver le nombre d opérations par compte requete("""select idcompte, COUNT(idop) GROUP BY idcompte""",11) #### QUESTION 12 # Trouver le nombre maximal d opérations par compte requete("""select MAX(nbop) FROM (SELECT idcompte, COUNT(idop) AS nbop GROUP BY idcompte)""",12) 3

#### QUESTION 13 # Afficher le ou les no de compte sur lesquels il y a eu le plus de mvt # Première version, incorrecte (cela ne renvoie qu un compte s il y # en a plusieurs). Testez avec le minimum pour lequel il y a plusieurs # comptes concernés. requete("""select idcompte, MAX(nbop) FROM (SELECT idcompte, COUNT(idop) AS nbop GROUP BY idcompte)""",13) # Version correcte, renvoyant tous les comptes voulus requete("""select compte.idcompte, nbop, (SELECT idcompte, COUNT(idop) AS nbop GROUP BY idcompte) AS cmp WHERE (cmp.idcompte = compte.idcompte) AND (nbop = (SELECT MAX(nb) FROM (SELECT idcompte, COUNT(idop) AS nb GROUP BY idcompte)))""", 13) #### QUESTION 14 # Moyenne des soldes des comptes de chaque type requete("""select type, AVG(solde), (SELECT idcompte, SUM(montant) AS solde GROUP BY idcompte) AS mo WHERE mo.idcompte = compte.idcompte GROUP BY type""",14) # ou avec JOIN: requete("""select type, AVG(solde) JOIN (SELECT idcompte, SUM(montant) AS solde GROUP BY idcompte) AS mo ON mo.idcompte = compte.idcompte 4

GROUP BY type""",14) #### QUESTION 15 # Nom prénom type-compte solde-compte requete("""select nom, prenom, type, SUM(montant) JOIN compte ON idclient = idproprietaire GROUP BY operation.idcompte""",15) # ou bien requete("""select nom, prenom, type, SUM(montant) AS op, (SELECT idcompte, idclient, nom, prenom, type, compte WHERE idclient = idproprietaire) AS cc WHERE op.idcompte = cc.idcompte GROUP BY op.idcompte""",15) #### QUESTION 16 # Solde de tous les comptes des clients qui commencent par K,L,M,N, # identifié par le nom prénom. requete("""select nom, prenom, type, SUM(montant) JOIN compte ON idclient = idproprietaire JOIN operation AS op ON op.idcompte = compte.idcompte WHERE nom BETWEEN K AND O GROUP BY op.idcompte ORDER BY NOM, PRENOM""",16) #### QUESTION 17 # Nom et prénom des personnes ayant fait au moins débité un chèque sur leur compte courant requete("""select DISTINCT nom, prenom JOIN client ON idproprietaire = idclient WHERE (lower(type) = compte courant ) AND (lower(informations) = cheque ) AND (montant < 0) ORDER BY nom""",17) 5

#### QUESTION 18 # Nom prénom ville de toutes les personnes ayant fait le plus d opérations au guichet requete("""select nom, prenom, ville FROM (SELECT nom, prenom, ville, count(*) AS tot JOIN client ON idclient = idproprietaire WHERE lower(informations) = guichet GROUP BY informations, idproprietaire) WHERE tot IN (SELECT max(t) FROM (SELECT count(*) AS t WHERE lower(informations) = guichet GROUP BY informations, idproprietaire))""",18) #### QUESTION 19 # Moyenne par ville des sommes des soldes des comptes d un client, # classé par valeur croissante. requete("""select ville, AVG(tot) AS mo FROM (SELECT ville, idclient, sum(montant) as tot JOIN compte ON operation.idcompte = compte.idcompte JOIN client ON idclient = idproprietaire GROUP BY idclient) GROUP BY ville ORDER BY mo""",19) 6