Travaux Pratiques en SQL

Document Sample
scope of work template
							Travaux Pratiques en SQL


 Eric Vyncke
 Eric.Vyncke@hec.be
 http://www.hec.be/~evyncke/cours

 Dernière mise à jour: 27 février 2004
  Table des Matières

                    • MySQL
                    • Utilisation de MySQL sur Linux
                    • Utilisation d‟HyperTerminal pour Linux
                    • Plus d‟info sur le serveur omega.hec.be
                    • Utilisation de MySQL Front sur
                      Windows
                    • Description de la BD SUMMIT
                    • Liste d‟exercices optionnels

E. Vyncke, 2004/02/27                                     2
  Outils SGBD SQL Disponibles

  • Les travaux pratiques se déroulent soit:
        – sur MySQL sur le serveur HEC disponible à partir de
          n‟importe quel PC connecté à Internet (soit à l‟école
          soit chez vous)
        – Sur MySQL installé sur votre PC Windows/Linux
          http://www.mysql.com/downloads/
        – Sous Windows, intégration avec serveur Web et
          PHP
          http://www.easyphp.org/index.php3?lang=fr

E. Vyncke, 2004/02/27                                       3
MySQL sur Linux
  Démarrage de MySQL sur Linux /1

  • MySQL est un programme tournant sur un serveur
    Linux partagé et accessible depuis l‟Internet
  • Sélectionner Démarrer -> Exécuter
  • Entrer telnet omega.hec.be
  • Utiliser votre nom d‟utilisateur email et le mot de passe
    email (identiques à ceux de Windows) pour:
        Login: utilisateur (suivi de <Enter>)
        Password: mot de passe (n’apparait pas à l’écran, suivi
          de <Enter>)

E. Vyncke, 2004/02/27                                        5
  Démarrage de MySQL sur Linux /2

• Le prompt standard de Linux/Unix apparait et vous
  pouvez exécuter des commandes Linux:
     – afficher le contenu du répertoire: ls -al
     – afficher le répertoire courant: pwd
     – changer de répertoire: cd nomderépertoire
     – afficher le contenu d‟un fichier: more nomdefichier
     – terminer: exit
     – envoyer un fichier à une adresse e-mail
        mail -s “Fichier” adresseemail < nomdefichier


E. Vyncke, 2004/02/27                                 6
  Démarrage de MySQL sur Linux /3
                                                    Nom de la base de
  • Démarrez MySQL sans journal
                                                        données
        mysql -p –u utilisateur base
        mysql –p –u test test
                                                     Nom de l'utilisateur
  • Démarrez MySQL avec un journal: mysql.log
        mysql –p –u summit –-tee=mysql1.log summit
          Il est conseillé de numéroter les divers journaux, par exemple
          mysql5.log pour le 5ème cours
  • Et entrez le mot de passe de la base de donnée au
    prompt:
      Enter password: (attention aucun '*' n'est affiché)

E. Vyncke, 2004/02/27                                                 7
  Les diverses bases MySQL sur Omega

  Base                  Objectif             Nom           Mot de
                                             d’utilisateur passe
  test                  Accès en écriture,   test         test
                        excercices
                        CREATE, INSERT,
                        UPDATE, …
  summit                Accès en lecture,    summit       Summit
                        excercices sur
                        SELECT

  world                 Accès en lecture,    routard      guidedu
                        autres exercices
                        sur SELECT
E. Vyncke, 2004/02/27                                               8
  Exemple de démarrage




E. Vyncke, 2004/02/27    9
  Trucs pour MySQL

  • La touche flèche vers le haut permet de rappeler
    la commande précédente (à chaque nouvelle
    pression la commande précédente est affichée)
  • Les flèches vers la droite et la gauche
    permettent de se déplacer dans la commande
  • Ne pas oublier de terminer la commande par “;”
    et ENTREE
  • Toutes les commandes entrées sont
    journalisées dans le fichier caché .mysql_history
E. Vyncke, 2004/02/27                             10
  Terminer MySQL

  • Retourner au prompt de Linux: exit
  • Terminer le programme Telnet: exit




E. Vyncke, 2004/02/27                    11
Utilisation d’HyperTerminal
  Utilisation d’Hyperterminal /1

  • Sur Windows 2000 (notamment aux HEC), un
    programme de remplacement à Telnet existe:
    Hyperterminal
  • Pour le démarrer:
        – Démarrer/Programmes/Accessoires/Communication
          s/Hyperterminal
        – Sinon, cliquer sur l‟icône Omega du bureau



E. Vyncke, 2004/02/27                               13
  Hyperterminal /2

  • Entrer un nom pour cette
    nouvelle configuration,
    par exemple „Omega‟
  • Choisir une icône
    (n‟importe laquelle)




E. Vyncke, 2004/02/27          14
  Hyperterminal /3

  • Sélectionner TCP/IP
    comme moyen de
    connexion
  • L‟adresse hôte doit être
    omega.hec.be
  • La porte 23



E. Vyncke, 2004/02/27          15
  Hyperterminal /4

  • Et voila




E. Vyncke, 2004/02/27   16
  Hyperterminal /5

  • Sauver la configuration sur votre bureau
        – Fichier/Enregistrer sous…
        – Sauver le fichier omega.ht sur le bureau
  • A faire uniquement la première fois




E. Vyncke, 2004/02/27                                17
  Utilisation du Bloc Note et MySQL

  • Il est conseillé de démarrer le bloc-note
        – Démarrer/Programmes/Accessoire/Bloc note
        – Ou Démarrer/Exécuter puis notepad
  • Puis de préparer les requêtes SQL dans le bloc-
    note, de les copier et les coller
        – Hyperterminal: Edition/Coller
        – Telnet: cliquer dans le fenêtre avec le bouton droit
  • A la fin du cours, il est possible de sauver le
    contenu du bloc-note sur Z: ou Mes Documents
E. Vyncke, 2004/02/27                                        18
Information sur omega.hec.be
  Qq notes supplémentaires

  • Depuis les PC HEC, les fichiers de votre
    répertoire Linux par défaut (votre home) sont
    disponibles sur Z:
             • Pour impression
             • Pour transfert
  • En dehors de Z:, vous pouvez faire la même
    chose de n‟importe où sur Internet (cybercafé,
    domicile, …)

E. Vyncke, 2004/02/27                               20
  Quelques notes sur omega

  • Omega (ou omega.hec.be) est un serveur Linux
    avec plusieurs services:
        – mySQL: pour le cours et les besoins de l'école
        – En IPv6 (génération suivante de TCP/IP)
        – Avec LDAP (répertoire): http://directory.hec.be
        – Avec serveur web (y compris pour les pages des
          étudiants) http://www.students.hec.be
        – Serveur de fichiers: \\omega\homes

E. Vyncke, 2004/02/27                                       21
  Omega et le courier électronique
  • Tout les étudiants ont
    une adresse email du
    genre
    Prenom.Nom@studen
    ts.hec.be
  • Sans publicité et
    gratuite
  • Interface web comme
    hotmail
    http://webmail.student
    s.hec.be
E. Vyncke, 2004/02/27                22
Utilisation de MySQL Front


  Interface graphique SQL sur Windows
  MySQL Front

  • MySQLFront
        – Logiciel Windows
        – Version 2.0 gratuite (voir les documents du cours SI06 sur
          campus.hec.be)
        – Version 3.0 payante: http://www.mysqlfront.de/
  • Mode client-serveur
        – Interface graphique sur votre PC
        – Vrai serveur de base de données: MySQL sur omega.hec.be
        – Communication par réseau TCP/IP (y compris de chez vous)


E. Vyncke, 2004/02/27                                              24
  MySQL Front 1ère Connexion /1




E. Vyncke, 2004/02/27             25
  MySQL Front 1ère Connexion /2




E. Vyncke, 2004/02/27             26
  MySQL Front 1ère Connexion /3

    Nom
    d’utilisateur



    Mot de
    passe. Ici
    summit


                    Nom de la
                    base de
                    données

E. Vyncke, 2004/02/27             27
  MySQL Front: l’écran…




Structure de la
                          Historique des
base de données
                          Requêtes SQL



E. Vyncke, 2004/02/27                  28
  MySQL Front: contenu d’une table




                        1) Cliquer sur le nom d’une table
                        2) Cliquer sur le taquet data


E. Vyncke, 2004/02/27                                       29
  MySQL Front: Requête SQL




                        1) Cliquer sur le taquet SQL Query
                        2) Entrer une instruction SQL
                        3) Cliquer sur le triangle pour executer
                           TOUTES les instructions SQL du panneau
E. Vyncke, 2004/02/27                                       30
  MySQLFront: Quelques Astuces

  • MYSQLFront v2.0 est gratuit mais a quelques
    bugs…
        – Notamment: „permission denied‟, il faut alors cliquer
          dans le panneau gauche sur une autre table, puis
          recliquer sur la taquet „SQL Query‟
  • F5 permet de rafraîchir le contenu de la table ou
    de la base
  • F9 permet d‟exécuter TOUTES les requêtes du
    panneau d‟entrée SQL

E. Vyncke, 2004/02/27                                       31
La base de données Summit
  Base de données: SUMMIT

• La base de données summit est disponible pour les
  travaux pratiques
• Summit aide à gérer un ensemble de magasins
  d'articles de sport (société américaine)
• A des fins de sécurité, il est impossible d'ajouter, de
  modifier ou d'effacer des données
• Pour se connecter à cette base:
     mysql –p –u summit –-tee=mysql1.log summit
     (le mot de passe est summit)
E. Vyncke, 2004/02/27                              33
   Schéma de la base de données
        CUSTOMER                ORD                  ITEM
              Id               Id                   Ord_id
              name             customer_id          item_id
              phone            date_ordered         product_id
 REGION       address          date_shipped         price
              city             sales_rep_id         quantity
 Id                            total                quantity_shipped
              state
 name                          payment_type
              country
              zip_code         order_filled
              credit_rating                              PRODUCT
              sales_rep_id                               Id
              region_id                                  name
   DEPT       comments                                   short_desc
  Id            EMP                                      suggested_whlsl_price
  name                                                   whlsl_units
  region_id   Id                      WAREHOUSE
              last_name                                     INVENTORY
              first_name               Id
              user_id                  region_id             Product_id
              start_date               address               warehouse_id
              comments                 city                  amount_in_stock
TITLE         manager_id               state                 reorder_point
              title                    country               max_in_stock
              dept_id                  zip_code              out_of_stock_explanation
title
              salary                   manager_id            restock_date
              commission_pct
  CUSTOMER
      CREATE TABLE customer
      (id                     NUMERIC(7,0) NOT NULL,
       name                   VARCHAR(50) NOT NULL,
       phone                  VARCHAR(25),
       address                VARCHAR(255),
       city                   VARCHAR(30),
       state                  VARCHAR(20),
       country                VARCHAR(30),
       zip_code               VARCHAR(75),
       credit_rating          VARCHAR(9),
       sales_rep_id           NUMERIC(7,0),
       region_id              NUMERIC(7,0),
       comments               VARCHAR(255))
E. Vyncke, 2004/02/27                         35
  DEPT


          CREATE TABLE dept
          (id                 NUMERIC(7,0)NOT NULL,
           name               VARCHAR(25)NOT NULL,
           region_id          NUMERIC(7,0))




E. Vyncke, 2004/02/27                        36
  EMP
      CREATE TABLE emp
      (id                NUMERIC(7,0)NOT NULL,
       last_name         VARCHAR(25)NOT NULL,
       first_name        VARCHAR(25),
       userid            VARCHAR(8),
       start_date        DATE,
       comments          VARCHAR(255),
       manager_id        NUMERIC(7,0),
       title             VARCHAR(25),
       dept_id           NUMERIC(7,0),
       salary            NUMERIC(11, 2),
       commission_pct    NUMERIC(4, 2))

E. Vyncke, 2004/02/27                     37
  INVENTORY


    CREATE TABLE inventory
    (product_id                 NUMERIC(7,0) NOT NULL,
     warehouse_id               NUMERIC(7,0) NOT NULL,
     amount_in_stock            NUMERIC(9,0),
     reorder_point              NUMERIC(9,0),
     max_in_stock               NUMERIC(9,0),
     out_of_stock_explanation   VARCHAR(255),
     restock_date               DATE)



E. Vyncke, 2004/02/27                            38
  ITEM

        CREATE TABLE item
        (ord_id             NUMERIC(7,0) NOT NULL,
         item_id            NUMERIC(7,0) NOT NULL,
         product_id         NUMERIC(7,0) NOT NULL,
         price              NUMERIC(11, 2),
         quantity           NUMERIC(9,0),
         quantity_shipped   NUMERIC(9,0))




E. Vyncke, 2004/02/27                       39
  ORD

          CREATE TABLE ord
          (id                NUMERIC(7,0) NOT NULL
           customer_id       NUMERIC(7,0) NOT NULL
           date_ordered      DATE,
           date_shipped      DATE,
           sales_rep_id      NUMERIC(7,0),
           total             NUMERIC(11, 2),
           payment_type      VARCHAR(6),
           order_filled      VARCHAR(1))



E. Vyncke, 2004/02/27                       40
  PRODUCT


      CREATE TABLE product
      (id                      NUMERIC(7,0) NOT NULL,
       name                    VARCHAR(50) NOT NULL,
       short_desc              VARCHAR(255),
       longtext_id             NUMERIC(7,0),
       image_id                NUMERIC(7,0),
       suggested_whlsl_price   NUMBER(11, 2),
       whlsl_units             VARCHAR(25))



E. Vyncke, 2004/02/27                          41
  REGION

    CREATE TABLE region
    (id                   NUMERIC(7,0) NOT NULL,
     name                 VARCHAR(50))




E. Vyncke, 2004/02/27                      42
  TITLE


               CREATE TABLE title
               (title               VARCHAR(25))




E. Vyncke, 2004/02/27                              43
  WAREHOUSE

   CREATE TABLE warehouse
   (id                      NUMERIC(7,0) NOT NULL,
    region_id               NUMERIC(7,0) NOT NULL,
    address                 LONG,
    city                    VARCHAR(30),
    state                   VARCHAR(20),
    country                 VARCHAR(30),
    zip_code                VARCHAR(75),
    phone                   VARCHAR(25),
    manager_id              NUMERIC(7,0))


E. Vyncke, 2004/02/27                         44
Exercices Optionnels sur Summit
  Exercices sur un tableau /1

  • Afficher les noms des clients habitant aux „USA‟
  • Afficher les noms des clients contenant la lettre „k‟
  • Afficher le total des bons de commande (quantité *
    prix) en USD (en supposant que la base contient les
    prix en USD)
  • Afficher le total des bons de commande (quantité *
    prix) en EUR
  • Combien de clients existent dans la base de données ?


E. Vyncke, 2004/02/27                                46
  Exercices sur un tableau /2

  • Afficher pour chaque bon de commande: son
    numéro ainsi que le nombre de lignes (de la
    table ITEM) qui le composent
  • Afficher le nombre de produits dont le nom
    (champ name) contient „boot‟
  • Afficher le nombre d‟employés par n° de
    département
  • Afficher, pour chaque pays, le nom du pays ainsi
    que le nombre de clients de ce pays.
E. Vyncke, 2004/02/27                            47
  Exercices sur plusieurs tableaux /1

  • Afficher pour chaque employé: son nom, son
    prénom, le nom de son département et le nom
    de la région
  • Afficher pour chaque nom de région, le nombre
    d'employés travaillant dans cette région
  • Afficher pour chaque employé, son nom ainsi
    que le nom de son supérieur (utilisez deux
    abréviations différentes pour le même tableau)

E. Vyncke, 2004/02/27                           48
  Exercices sur plusieurs tableaux /2
  • Afficher le nom de tous les clients ayant commandé
    des produits contenant le mot „ Ski ‟
  • Quels sont les noms des produits qui sont entreposés
    en „ Europe ‟ ?
  • Afficher pour chaque gestionnaire d‟entrepôts le
    nombre de produits (la somme de amount_in_stock)
    dans ses entrepôts
  • Afficher pour chaque entrepôt, son pays, le nom de son
    gestionnaire ainsi que le nombre de produits en rupture
    de stock (reorder_point >= amount_in_stock)

E. Vyncke, 2004/02/27                                  49
  Exercices sur plusieurs tableaux /3

  • Afficher pour chaque client: son nom, tous ses
    numéros de bons de commande ainsi que le
    montant HTVA et TVAC (21%) de ceux-ci
  • Quels sont les noms de clients habitant dans la
    même ville (et pays!) qu‟un entrepôt ? (dans ce cas, il
      faut utiliser une relation qui n’est pas indiquée par des flèches rouges)

  • Afficher pour chaque employé, son nom, son
    salaire annuel ainsi que la commission due sur
    tous les bons de commandes qu‟il a reçu.
E. Vyncke, 2004/02/27                                                             50

						
Related docs