Université Paris 13 TP Base de données Année 2008-2009 Institut Galilée feuille 2 : requêtes SQL INFO1



Documents pareils
Le langage SQL Rappels

Langage SQL : créer et interroger une base

Le Langage SQL version Oracle

1 Introduction et installation

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

TP Contraintes - Triggers

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

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

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

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

Devoir Data WareHouse

Bases de données relationnelles

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

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

Cours 4 : Agrégats et GROUP BY

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

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

FileMaker 13. Guide de référence SQL

16H Cours / 18H TD / 20H TP

Le Langage De Description De Données(LDD)

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

Optimisation SQL. Quelques règles de bases

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 Historique

INTRODUCTION AU DATA MINING

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

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

TP 8: LES OPERATEURS ENSEMBLISTES

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

TP Bases de données réparties

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

Systèmes de Gestion de Bases de Données

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

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

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

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

MySQL / SQL EXEMPLES

Introduction aux Bases de Données 2004/2005

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

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

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

Les bases de données

Présentation Windows Azure Hadoop Big Data - BI

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

Créer le schéma relationnel d une base de données ACCESS

1. Base de données SQLite

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

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

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

INSIA Bases de données ORACLE Installation SQL*Plus SQL-Developer

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

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

Bases de données - Modèle relationnel

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

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

OLAP : Mondrian + Pentaho. Maguelonne Teisseire Hugo Alatrista Salas hugo.alatrista- salas@teledetec9on.fr Flavien Bouillot

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

SOMMAIRE. 1. Préambule Le calendrier Trajectoire d un objet lancé Régression linéaire...9

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

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

Thème : Gestion commerciale

Vincent Augusto

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

Bases de données et sites WEB

Base de données relationnelle et requêtes SQL

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

Gestion de base de données

Mysql avec EasyPhp. 1 er mars 2006

A QUOI SERVENT LES BASES DE DONNÉES?

PRÉSENTÉ PAR : NOVEMBRE 2007

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

Bible MySQL! La première version de MySQL est apparue en Cette première version est créée pour un usage personnel à partir de msql.

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Structure fonctionnelle d un SGBD

1 Position du problème

Information utiles. webpage : Google+ : digiusto/

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

BTS/CGO P10 SYSTEME INFORMATION Année

Les Entrepôts de Données

Bases de données élémentaires Maude Manouvrier

Bases de Données. Plan

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

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Bases de Données Avancées

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

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

[Ministère des Affaires étrangères et du Développement international] DEFI MANUEL UTILISATEUR ESPACE DEMANDEUR

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

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

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

Cours: Les Jointures 1

TP Programmation Java / JDBC / Oracle

Évaluation et optimisation de requêtes

Transcription:

Université Paris 13 TP Base de données Année 2008-2009 Institut Galilée feuille 2 : requêtes SQL INFO1 Exercice 1 : requêtes simples Pour traiter de la vente par correspondance on considère la modélisation du TP précédent (prenez un cas réel que vous connaissez) auquel on a ajouté des attributs de type DATE : CLIENT(#client, nom, prenom, adresse, codepostal) PRODUIT(#produit, designation, prixunitaire) FOURNISSEUR(#fournisseur, raisonsociale) COMMANDE(#client, #produit, date, quantite) FOURNIT(#fournisseur, #produit) pour lesquels chaque numéro (noté #) identifie de façon unique un n-uplet. On rapelle que chaque numéro est sur 3 chiffres, que toute contrainte est identifiée à l aide d un nom et qu un client commande des produits dans une quantité donnée, que chaque produit est fourni par un unique fournisseur et qu un fournisseur peut fournir plusieurs produits. La table des commande renseigne les commandes non traitées. Exprimez les requêtes suivantes en SQL en vous servant des schémas et instances créés au TP précédent. Lorsqu il est indiqué de se servir du résultat d une requête précédente, il ne s agit ici que d utiliser la valeur précédement trouvée/affichée et pas d utiliser une sous-requête. 1. Donnez la liste des fournisseurs (numéro et raison sociale). 2. Donnez la liste des produits (numéro, désignation et prix unitaire), classée par ordre croissant de prix unitaire? (Pour la suite gardez en mémoire le numéro de produit de la première ligne) 3. Quels sont les numeros de produits en commande? 4. Quels sont les noms et prénoms des clients? 5. Quel est le fournisseur (et le numéro de produit) du produit de prix unitaire le plus bas (en vous servant du résultat d une requête précédente)? (dans la suite on l appelera F ) Est-il possible d avoir plusieurs de ces fournisseurs? Est-il possible d avoir plusieurs de ces produits? Conclusion? 6. Quel sont les numéros de produit (et le numéro de fournisseur) fournis par le fournisseur F? 7. Choisissez deux numéros de produits. Quels en sont leurs fournisseurs (et le numéro de produit)? Pouvez-vous formuler une autre requête pour cette question? 8. Quel sont les numéros de produit (SANS #fournisseur) fournis par le fournisseur F? 9. Quel sont les noms des clients qui habitent en Seine-Saint-Denis? 10. Quel sont les numéros de fournisseurs dont la raison sociale contient SARL? 11. Quel est le numéro du client qui a commandé le produit de prix unitaire le plus bas (en vous servant du résultat d une requête précédente)? Est-il possible d obtenir plusieurs de ces numéros? Est-il possible d avoir plusieurs de ces produits? Conclusion? 12. Quels sont les numéros de clients (et les autres indications) qui ont passés une commande, classés par ordre décroissant de numéro de client? De même classés par ordre décroissant de date de commande? De même classés par ordre décroissant de quantité? Exprimez les mêmes requêtes en n indiquant que les numéros de clients mais pas les autres indications. Conclusion? 13. Quel sont les numéros de clients qui n ont pas de commande en cours? 14. Quels sont les numéros de produits en commande dont le prix unitaire est au moins 10 euros?

Exercice 2 optionnel : formatage (exercice pour répondre à la demande de certains) Sur le schéma de base de données relationnelle de votre choix du TP précédent et après avoir cherché et décrit l effet de la commande suivante, l utiliser : COLUMN nom_de_colonne [FORMAT masque] HEADING titre_de_colonne TRUNCATE/WRAP Exemple : COLUMN Nom FORMAT a4 HEADING Nom Prenom WRAP Exemple : COLUMN Noss FORMAT 999.999.999 HEADING Numero securite sociale TRUNCATE Expérimentez chacune des commandes SQL PLUS suivantes : SQL> COLUMN SQL> COLUMN nom_de_colonne SQL> COLUMN nom_de_colonne CLEAR SQL> COLUMN nom_de_colonne ON/OFF SQL> CLEAR COLUMN affiche le formatage en cours affiche le formatage en cours de la colonne efface le formatage en cours de la colonne désactive temporairement/réactive efface tous les formatages en cours Pour faire des rapports en SQL PLUS, essayez chacune des commandes suivantes : set underline un_caractere set underline - set pagesize un_nombre set linesize un_nombre spool nom_de_fichier spoll off set termout on/off set echo on/off ttitle nom_d_entete_de_rapport btitle nom_de_pied_de_page_de_rapport show all définition des séparateurs dans une table nombre de ligne par page nombre de caractères par ligne redirection de SQLPLUS fin de redirection desactive/active l affichage à l écran entête pieds de page description des variables d environnement Exercice 3 : requêtes standards Soit le schéma de base de données relationnelle du TP précédent : EMP (nom, num, fonction, n_sup, embauche, salaire, comm, n_dept) DEPT (n_dept, nom, lieu) GRAD (grade, salmin, salmax) Sachant que : Un employé de numéro num a un nom occupe l emploi fonction, a un responsable identifié par le numéro n_sup, une date d embauche embauche, un salaire, une commission comm et un département de rattachement n_dept, Un Département de numéro n_dept, de nom nom est situé à lieu, A un grade donné correspond un salaire minimal et un salaire maximal. Vous effectuerez quand cela est possible les requêtes suivantes en algèbre relationnelle, mais contentez vous de ne traiter que les requêtes non imbriquées en SQL (c est à dire dont la condition de WHERE n utilise pas de clause SELECT). 1. Quelle est la liste des noms d employés ayant une commission, classée par commission décroissante? 2. Donner tous les noms d employés ainsi que leur fonction et leur salaire, classés par fonction en ordre croissant, et pour chaque fonction classés par salaire décroissant. 3. Quel est le nom des personnes embauchées depuis janvier 2001? 4. Donner pour chaque employé son nom et son lieu de travail.

5. Donner pour chaque employé le nom de son supérieur hiérarchique. 6. Quels sont les employés ayant la même fonction que "CODD"? 7. Quels sont les employés gagnant plus que tous les employés du département 30? 8. Quels sont les employés ne travaillant pas dans le même département que leur supérieur hiérarchique? 9. Quels sont les employés travaillant dans un département qui a procédé à des embauches depuis le début de l année 2008? 10. Donner le nom, la fonction et le salaire de l employé (ou des employés) ayant le salaire le plus élevé. 11. Quel est le total des salaires pour chaque département? 12. Donner le nombre d ingénieurs ou de commerciaux des départements ayant au moins deux employés de ces catégories. 13. Quel est le département ayant le plus d employés? Exercice 4 : On considère la base de données relationnelle COLLEGE suivante pour laquelle on a : Les éléves et les professeurs sont identifiés par des numéros (NumE, NumP ), Les numéros de classes sont définies parmis un ensemble d éléments composés d un chiffre et d une lettre, NoteMoy désigne la moyenne trimestrielle d une éléve dans une matière, Si vous avez un peu de temps à la fin du TP, vous ajouterez les contraintes de clefs étrangères pour ENSEIGNE et RESULTATS. ELEVES(NumE, Nom, Prénom, Classe) COURS(Matière, Classe, NbH) RESULTATS(NumE, Matière, Trimestre, NoteMoy) PROFESSEURS(NumP, NomP, Statut) ENSEIGNE(NumP, Matière, Classe) Exprimer chacune des requêtes suivantes en SQL éventuellement en vous aidant des requêtes en algèbre relationnelle : 1. Quels sont les noms et prénoms de tous les élèves? 2. Quels sont les professeurs qui enseignent en classe de 5ème A (noms)? 3. Qui est le professeur de mathématiques de 5ème A (noms et numéros)? 4. Quelles sont les notes de mathématiques des élèves de 5ème A (numéro, nom, prénom et note)? 5. Quels sont les professeurs qui ont le même nom qu un des élèves (noms et numéros)? 6. Quels sont les professeurs qui enseignent dans une des classes de 5ème (noms et numéros)? 7. Quelles sont les classes dans lesquelles enseigne le professeur de mathématiques de la 5ème A? 8. Quelles sont les matières dans lesquelles l élève de numèro 150 n a pas la moyenne en troisième trimestre? 9. Quels sont les maîtres auxiliaires qui enseignent dans une des 3ème (noms et numéros)? 10. Quel est l emploi du temps de Madame Topin, numéro 115 (Matière, classe, nombre d heures)?

Annexe pour le TP : la clause SELECT Voici une partie de la clause SELECT : SELECT [ALL DISTINCT] colonne (fct(colonne) [AS nom]) [, liste_col_ou_fct(col)] Liste de colonne ou fonctions sur une colonne (AVG MAX MIN SUM [ALL DISTINCT]) ou sur le nombre de ligne d une table (COUNT [ALL DISTINCT]). FROM nom_de_table [alias] [,liste_de_nom_de_table] Indique les tables à partir desquelles récupérer les données. Un alias permet un renommage local. On utilise l alias à la place du nom de la table afin d enlever des ambiguités, de simplifier l écriture ou d être plus explicite. [WHERE condition] Exemples d opérateurs utilisables dans une condition : - opérateurs logiques (AND, OR, NOT, IS NULL, IS NOT NULL) - opérateurs de chaines ([NOT] IN BETWEEN LIKE) - opérateurs arithmétiques (+, -, *, /, mod(,)) - comparateurs arithmétiques (<, >, =, <>, <=, >=, [NOT] IN) [ORDER BY colonne [ASC DESC] [,list_col]] Tri des résultats selon une (des) colonne(s). Toutes colonnes du select qui n est pas sous une fonction doit etre spécifiée dans la liste des colonnes de ORDER BY si on souhaite effectuer un tri. Clauses obtenues par opération emsembliste : (clause_select) UNION [ALL] (clause_select) (clause_select) INTERSECT [ALL] (clause_select) (clause_select) MINUS [ALL] (clause_select) Sans l option ALL seuls les n-uplets distinct sont conservés (à tester : support de ALL sous Oracle 9i pour les deux dernières opérations). Rappel : il faut respecter les types (i.e. les domaines en algèbre relationnelle) colonne à colonne. NB : pour ceux qui ont besoin d aller un peu plus loin (il n est normalement pas nécéssaire de le faire pour CE TP), allez à la dernière la page.

Annexe pour le prochain TP : Voici une partie plus importante de la clause SELECT : SELECT [ALL DISTINCT] colonne (fct(colonne) [AS nom]) [, liste_col_ou_fct(col)] Liste de colonne ou fonctions sur une colonne (AVG MAX MIN SUM [ALL DISTINCT]) ou sur le nombre de ligne d une table (COUNT [ALL DISTINCT]). S il y a des regroupements de colonnes GROUP BY alors les fonctions se font sur chaque regroupement (AVG, MAX, MIN) ou sur le nombre de ligne de chaque regroupement (COUNT). FROM nom_de_table [alias] [,liste_de_nom_de_table] Indique les tables à partir desquelles récupérer les données. Un alias permet un renommage local. On utilise l alias à la place du nom de la table afin d enlever des ambiguités, de simplifier l écriture ou d être plus explicite. [WHERE condition] Exemples d opérateurs utilisables dans une condition : - opérateurs logiques (AND, OR, NOT, IS NULL, IS NOT NULL) - opérateurs de chaines ([NOT] IN BETWEEN LIKE) - opérateurs arithmétiques (+, -, *, /, mod(,)) - comparateurs arithmétiques (<, >, =, <>, <=, >=, [NOT] IN) Conditions avec sous-requêtes : WHERE [NOT] EXISTS IN (clause_select) WHERE colonne (fct(colonne) [AS nom]) op [ALL ANY] (clause_select) avec ALL : la condition est vraie seulement si elle est vraie pour toutes les valeurs de la clause select. Donc la condition est vraie si la sous-requête est vide. Donc : <ALL = moins que le minimum, >ALL = plus que le maximum, <>ALL equivalent à NOT IN. ANY : la condition est vraie seulement si elle est vraie pour au moins l une les valeurs de la clause select. Donc : <ANY = moins que le maximum, >ANY = plus que le minimum, =ANY equivalent à IN. GROUP BY colonne [,list_col] Regroupe des résultats selon une(des) colonne(s). HAVING condition est à GROUP BY ce que WHERE est à FROM. [ORDER BY colonne [ASC DESC] [,list_col]] Tri des résultats selon une (des) colonne(s). Toutes colonnes du select qui n est pas sous une fonction doit etre spécifiée dans la liste des colonnes de ORDER BY si on souhaite effectuer un tri. Clauses obtenues par opération emsembliste : (clause_select) UNION [ALL] (clause_select) (clause_select) INTERSECT [ALL] (clause_select) (clause_select) MINUS [ALL] (clause_select) Sans l option ALL seuls les n-uplets distinct sont conservés (à tester : support de ALL sous Oracle 9i pour les deux dernières opérations). Rappel : il faut respecter les types (i.e. les domaines en algèbre relationnelle) colonne à colonne.