Quelques exemples de requêtes SQL sur la base de données aviation



Documents pareils
1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Le langage SQL Rappels

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

Cours: Les Jointures 1

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

1 Introduction et installation

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

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

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

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

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

Cours 4 : Agrégats et GROUP BY

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

Langage SQL : créer et interroger une base

MODE OPERATOIRE OPENOFFICE BASE

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

TP Bases de données réparties

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

WEBSEMINAIRE INTRODUCTION AU REFERENCEMENT

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

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

Le Langage SQL version Oracle

SQL Historique

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

Les Utilisateurs dans SharePoint

Programmation Objet - Cours II

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

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

Compétences Business Objects

13 conseils pour bien choisir son prestataire de référencement

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

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

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

Initiation à Excel. Frédéric Gava (MCF)

Module 16 : Les fonctions de recherche et de référence

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

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

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

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

1. Introduction Création d'une requête...2

Thème : Gestion commerciale

Bases de données avancées Introduction

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

Le stockage local de données en HTML5

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

16H Cours / 18H TD / 20H TP

INTRODUCTION GENERALE...1 LA CONNEXION ODBC :...1. CONNEXION AU TRAVERS D EXCEL(tm)...6. LOGICIEL QUANTUM GIS (Qgis)... 10

Les bases de données

Bases de Données. Plan

Bases de données relationnelles

Historisation des données

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

SQL Server et Active Directory

Vincent Augusto

Créer et gérer des catégories sur votre site Magento

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

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

ÉLÉMENTS INDICATIFS DE CORRIGÉ. BARÈME GLOBAL sur 140 points

FileMaker 13. Guide de référence SQL

Initiation à html et à la création d'un site web

INTRODUCTION AU DATA MINING

1. Base de données SQLite

LES ACCES ODBC AVEC LE SYSTEME SAS

Manipulation de données avec SAS Enterprise Guide et modélisation prédictive avec SAS Enterprise Miner

Guide pratique du référencement de web consultant eu. Commençons par l optimisation de vos pages, ou on page

Cours 1 : introduction

Base de données relationnelle et requêtes SQL

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

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

AGRÉGATION «ÉCONOMIE ET GESTION»

Optimisation SQL. Quelques règles de bases

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

Trier les ventes (sales order) avec Vtiger CRM

Date : Tangram en carré page

Le chiffre est le signe, le nombre est la valeur.

A QUOI SERVENT LES BASES DE DONNÉES?

Nombre de marches Nombre de facons de les monter

Année Universitaire 2009/2010 Session 2 de Printemps

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

Systèmes de Gestion de Bases de Données

Exercices de dénombrement

Compte-rendu de projet de Système de gestion de base de données

Gestion des utilisateurs et de leurs droits

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

UNE EXPERIENCE, EN COURS PREPARATOIRE, POUR FAIRE ORGANISER DE L INFORMATION EN TABLEAU

Déploiement d'une base SQL Express

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

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

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

Introduction aux SGBDR

Chapitre 5. Calculs financiers. 5.1 Introduction - notations

Master Exploration Informatique des données Data Mining & Business Intelligence. Evelyne CHARIFOU Priscillia CASSANDRA

avec des nombres entiers

Transcription:

Quelques exemples de requêtes SQL sur la base de données aviation Note : divers exercices sont proposés. Leurs corrections se trouvent à la fin du document. Le mot-clé COUNT Combien de modèles d'avion différents la compagnie Air France exploite-t-elle? On va travailler avec la table «flottes_passagers». On sélectionne les enregistrements où l'attribut vaut AF : SELECT * WHERE ID_Compagnie='AF' Mais avec cette requête, on obtient les enregistrements eux-mêmes (i.e. tous les attributs) alors que seul le nombre des enregistrements nous intéresse! Pour compter ces enregistrements, il suffit alors d'utiliser la fonction COUNT comme suit : SELECT COUNT(*) WHERE ID_Compagnie='AF' On obtient alors simplement 2 qui est bien la valeur attendue! Supposons maintenant que l'on se demande : Combien de modèles d'avion différents les compagnies Air France et Emirates exploitent-elles? On peut «froidement» écrire : SELECT COUNT(*) WHERE ID_Compagnie='AF' OR ID_Compagnie='EK' Cette requête nous renvoie la valeur 8 qui n'est pas satisfaisante puisque, en regardant attentivement la table «flottes_passagers», on constate que les avions exploités par Emirates, à savoir les modèles AL2 et AL6, sont également exploités par Air France. Le résultat correct est donc 6 au lieu de 8. Pour l'obtenir, nous utilisons COUNT de la façon suivante : SELECT COUNT(DISTINCT ID_AL) WHERE ID_Compagnie='AF' OR ID_Compagnie='EK' [1-5]

L'utilisation du mot-clé DISTINCT appliqué à l'attribut ID_AL permet, dans le résultat de la requête, de ne comptabiliser qu'une seule fois les lignes (il y en a deux) où l'attribut «ID_Compagnie» vaut AF et une seule fois également celles (il y en a deux également) où l'attribut «ID_Compagnie» vaut EK. Exercice N 1 Pour chaque famille de moteurs, on souhaite connaître le nombre de moteurs dont la poussée est comprise, strictement, entre 300 et 500 kn. Exercice N2 Pour chaque famille de moteurs, on souhaite connaître la poussée moyenne (en kn). On affichera le nom du fabricant, celui de la famille et, bien sûr, la poussée moyenne demandée (on utilisera la fonction AVG). Le mot-clé GROUP BY Combien de modèles d'avion différents les compagnies référencées dans la base de données aviation exploitent-elles? On continue de travailler avec la table «flottes_passagers». Cette fois, on souhaiterait que la fonction COUNT s'applique à Air France seule, à Emirates seule, à Quantas seule, En d'autres termes, à chacune des compagnies aériennes présentes dans la table. Pour cela, il suffit d'utiliser GROUP BY de la façon suivante : SELECT ID_Compagnie, COUNT(*) GROUP BY ID_Compagnie Si on souhaite trier les lignes obtenues suivant la deuxième colonne (le nombre de modèles d'avion différents exploités par chacune des compagnies), il suffit de rajouter un ORDER approprié à la fin de la requête précédente : SELECT ID_Compagnie, COUNT(*) GROUP BY ID_Compagnie De façon similaire, on peut afficher, pour chaque modèle d'avion, le nombre de compagnies aériennes qui l'exploitent : SELECT ID_AL, COUNT(*) GROUP BY ID_AL [2-5]

Le mot-clé JOIN Dans l'avant-dernière requête, par exemple, on peut ne pas être satisfait d'obtenir un tableau où figure, en première colonne, l'id standard (code international) de la compagnie aérienne. Si l'on n'est pas trop habitué à ces codes, on préférera le nom complet de la compagnie. Ce nom se trouve dans la table «compagnies_aériennes». Comment le récupérer? On peut répondre de diverses façons... Une solution consiste à construire une requête SELECT «travaillant» sur les deux tables concernées : «flottes_passagers» et «compagnies_aériennes». Dans la première, nous allons comptabiliser les divers modèles d'avion exploitées par chacune des compagnies aériennes et dans la seconde, les noms complets de ces compagnies. SELECT Nom, COUNT(*) AS fp, compagnies_aériennes AS ca WHERE fp.id_compagnie=ca.id_compagnie GROUP BY fp.id_compagnie Dans cette requête, il est indispensable de préciser que l'on ne retient que le(s) attribut(s) (ici Nom et les résultats de COUNT) correspondant à des enregistrement des deux tables pour lesquels les ID des compagnies sont identiques (d'où : WHERE fp.id_compagnie=ca.id_compagnie ). On note également que, pour simplifier l'écriture du GROUP BY, on a utilisé des alias : la table «flottes_passagers» est désignée par «fp» et la table «compagnies_aériennes» est désignée par «ca». Une fois les alias définis grâce au mot-clé AS, on doit utiliser le(s) mot(s)-clé(s) (y compris avant le mot-clé AS si on a besoin de se référer à une table aliasée). Une autre solution au problème posé consiste à effectuer une jointure des deux tables considérées. Au plan mathématique, la jointure s'apparente au produit cartésien et permet, à partir de deux tables d'en construire une troisième. N'hésitez pas, par exemple, à tester la requête suivante : SELECT * JOIN compagnies_aériennes On peut considérer que la jointure crée ainsi une nouvelle table dont les enregistrements sont obtenus en «rapprochant» les enregistrements de la table «flottes_passagers» à ceux de la table «compagnies_aériennes». Bien évidemment, la plupart des enregistrement ainsi obtenus n'on aucun sens! Comme précédemment, on va fournir un critère de sorte que les «rapprochements» effectués par la jointure aient un sens. Ce critère est introduit par le mot-clé ON : SELECT Nom, COUNT(*) AS fp JOIN compagnies_aériennes AS ca ON fp.id_compagnie=ca.id_compagnie GROUP BY fp.id_compagnie, Nom [3-5]

Remarque : à la fin de la requête, on a ajouté un tri sur l'attribut «Nom» pour trier les noms des compagnies possédant le même nombre de modèles d'avion différents. Exercice N 3 On souhaite connaître le nombre de Boeing B777-300ER exploités par les compagnies concernées. La requête devra renvoyer le nom en clair de la compagnie et le nombre correspondant. On peut effectuer des jointures sur plus de deux tables. Si, par exemple, on souhaite effectuer une jointure sur les tables T 1 et T2, puis sur la table T3, on écrira, formellement : FROM (T 1 JOIN T 2 ) JOIN T 3 Supposons par exemple que l'on souhaite connaître le nombre de Boeing 777-300ER et d'airbus A380-841 pour chacune des compagnies exploitant ces avions. On peut par exemple utiliser la requête suivante : SELECT Nom, ID_ALFull, Nombre FROM (avions_ligne AS al JOIN flottes_passagers AS fp ON al.id_al=fp.id_al) JOIN compagnies_aériennes AS ca ON ca.id_compagnie=fp.id_compagnie WHERE al.id_al='al2' OR al.id_al='al5' ORDER BY Nom, Nombre DESC [4-5]

Correction des exercices Exercice N 1 On travaille avec la table moteurs et on raisonne sur les attributs Famille et Poussée. SELECT Famille, COUNT(*) FROM moteurs WHERE Poussée>'140' AND Poussée<'380' GROUP BY Famille Remarque : notez que les contraintes introduites par WHERE suivent le FROM... Attention donc à l'ordre! Exercice N 2 On travaille bien sûr avec la table «moteurs». La moyenne sera calculée grâce à la fonction AVG qui reçoit comme argument l'attribut «Poussée». On doit effectuer un regroupement par famille car c'est sur ces groupes de moteurs que la fonction AVG va «travailler» : SELECT Fabricant, Famille, AVG(Poussée) FROM moteurs GROUP BY Famille ORDER BY AVG(Poussée) DESC Exercice N3 Un WHERE est ici indispensable pour ne conserver que les valeurs (attribut «Nombre») relatives à l'avion considéré (B777-300ER) : SELECT Nom, Nombre AS fp JOIN compagnies_aériennes AS ca ON fp.id_compagnie=ca.id_compagnie WHERE ID_AL='AL2' ORDER BY Nom [5-5]