Présentation du cours. Rappel sur SQL

La page est créée Enzo Pasquier
 
CONTINUER À LIRE
Présentation du cours. Rappel sur SQL
IFT287 Exploitation de bases de données
          relationnelles et orientées objet
                     Semaine 1

                 Présentation du cours.
                    Rappel sur SQL

« If you don’t know where you are going,
you will probably end up somewhere else. »      Domingo Palao
« Si tu ne sais pas où tu t’en vas,
probablement tu arriveras ailleurs »

                          -Laurence J. Peter.
Présentation du cours. Rappel sur SQL
Plan de la semaine
          S
          e
          m                                         Présentation du cours
          a
          i
          n                                                   Présentation des étudiants
          e

          1
                                                              Présentation du chargé de cours
                                                              Présentation du plan de cours
IFT287 Exploitation de BD relationnelles et OO

                                                    Introduction et mise en contexte
                                                    Rappel sur SQL

                                                 2015-08-26                   © Domingo Palao    2
IFT287 Exploitation de bases de données
     relationnelles et orientées objet
                Semaine 1

Présentation du chargé de cours
Présentation du chargé de cours
          S
          e
                                                     Prénom et nom
          m                                                    Domingo PALAO MUÑOZ
          a                                          Formation en informatique
          i
          n                                                    Maîtrise en Commerce électronique. Université de Montréal
          e                                                    Bac en génie informatique. Université National Autonome du Mexique
          1
                                                     Expériences avec les bases de données
                                                               Modélisation et développement de plusieurs systèmes d’information ayant
IFT287 Exploitation de BD relationnelles et OO

                                                                comme principal élément les bases de données
                                                               Mémoire du bac en génie informatique
                                                               Mémoire de maîtrise sur les bases de données distribuées
                                                     Bases de données utilisées
                                                               Oracle, Sybase, Adabas, RDB, MS SQL Server, Informix
                                                     Attentes du cours IFT287
                                                               Que les étudiantes et les étudiants aient une bonne compréhension de
                                                                l’utilisation des bases de données relationnelles et orientées objet dans le
                                                                contexte du développement d’un système logiciel
                                                     Passe-temps
                                                               Le baseball, la musique, la lecture.

                                                 2015-08-26                                   © Domingo Palao                                  4
IFT287 Exploitation de bases de données
     relationnelles et orientées objet
                Semaine 1

Présentation du plan de cours
Plan de cours

                                                    Description de l’annuaire
          S
          e
          m
          a
          i                                                   Voir plan du cours
                                                    Objectif :
          n
          e

          1
                                                              Développer une application Web simple
IFT287 Exploitation de BD relationnelles et OO

                                                               exploitant des bases de données
                                                               relationnelles et orientées objet.

                                                 2015-08-26                    © Domingo Palao         6
Plan de cours

                                                     À la fin de ce cours, l’étudiant devrait être
          S
          e
          m
          a                                           capable :
          i
          n                                                    de connaître les composantes de base d’un
          e
                                                                système de gestion de base de données;
          1
                                                               de savoir exploiter une base de données
                                                                relationnelle et une base de données orientée objet;
IFT287 Exploitation de BD relationnelles et OO

                                                               de connaître et d’appliquer les principes de base du
                                                                langage XML pour l’échange électronique de
                                                                données;
                                                               de développer une interface graphique web simple;
                                                               de parfaire sa connaissance des bases de données
                                                                de manière autonome.

                                                 2015-08-26                       © Domingo Palao                 7
Plan de cours

                                                     Objectifs spécifiques.
          S
          e
          m
          a                                               À la fin de cette activité pédagogique, l’étudiante ou l’étudiant sera
          i                                              capable de:
          n
          e                                                    Manipuler de bases de données relationnelles
                                                                   Créer, modifier et interroger une base de données relationnelle en mode
          1                                                         client-serveur;
                                                                   Développer une application simple, dans un langage de programmation
IFT287 Exploitation de BD relationnelles et OO

                                                                    orienté-objet, exploitant une base de données relationnelle.
                                                               Manipuler de bases de données orientées objet
                                                                   Créer, modifier et interroger une base de données orientée objet;
                                                                   Utiliser une base de données orientée objet;
                                                                   Développer une application simple, dans un langage de programmation
                                                                    orientée objet, exploitant une base de données orientée objet.
                                                               Manipuler des interfaces
                                                                   Créer une description de fichier XML;
                                                                   Créer et d’interroger un fichier XML à partir d’une application;
                                                                   Développer une interface graphique web simple pour une application.

                                                 2015-08-26                                © Domingo Palao                                    8
Plan de cours
                                                     Qualifications préalables
          S
          e
          m
          a                                                    Concepts et architecture des bases de données.
          i
          n                                                    Création, interrogation et mise à jour d’une base de données
          e
                                                                relationnelle à l’aide du langage SQL.
          1
                                                               Requêtes complexes.
IFT287 Exploitation de BD relationnelles et OO

                                                               Contraintes d’intégrité.
                                                               Modélisation entité-relation.
                                                               Traduction d’un modèle entité-relation en un modèle relationnel.
                                                               Dépendances fonctionnelles, dépendances multivaluées,
                                                                dépendances de jointure.
                                                               Normalisation : 1FN à 5FN et BCNF.
                                                     Voir la liste des références pour une mise à niveau.

                                                 2015-08-26                            © Domingo Palao                        9
Plan de cours

                                                    Responsabilités et tâches
          S
          e
          m
          a
          i                                                   Des étudiantes et étudiants.
          n
          e                                                     S’approprier de la matière du cours par la lecture
          1
                                                                 des articles indiqués des manuels de base.
                                                                Participer aux activités qui se déroulent en classe.
IFT287 Exploitation de BD relationnelles et OO

                                                              Du chargé de cours.
                                                                Organiser et gérer l’environnement
                                                                 d’apprentissage
                                                                Fournir toutes les ressources d’apprentissage
                                                                 nécessaires et animer les activités en classe
                                                                Évaluateur

                                                 2015-08-26                       © Domingo Palao                  10
Plan de cours

                                                    Organisation et déroulement du
          S
          e
          m
          a
          i
          n
                                                     cours
          e
                                                              Préparation du cours
                                                              Apprentissage en classe
          1
IFT287 Exploitation de BD relationnelles et OO

                                                              Exercices au laboratoire
                                                              La réalisation des travaux pratiques

                                                 2015-08-26                  © Domingo Palao          11
Plan de cours
          S
          e
          m
                                                    La communication dans le cours
          a
          i
                                                               Courriel électronique
          n
          e
                                                               Le site web :
                                                              http://ift287-dpm.espaceweb.usherbrooke.ca/index.html
          1
IFT287 Exploitation de BD relationnelles et OO

                                                 2015-08-26                          © Domingo Palao                  12
Plan de cours
          S
          e                                      Matériel didactique et pédagogique
                                                        Plan de cours
          m
          a
          i
          n
          e                                             Manuels de base
          1
                                                        Autres références
IFT287 Exploitation de BD relationnelles et OO

                                                        Diapositives utilisées lors des exposés
                                                        Sites Web de référence, etc.

                                                 2015-08-26             © Domingo Palao            13
Plan de cours
          S
          e
                                                  Réalisations et critères d’évaluation
          m                                              Travaux pratiques :
          a
          i                                                    Six travaux.
          n                                                          Rappel sur SQL
          e
                                                                     Introduction à Java
          1                                                          L’approche client-serveur avec JDBC et Java 1
                                                                     L’approche client-serveur avec JDBC et Java 2
IFT287 Exploitation de BD relationnelles et OO

                                                                     L’approche client-serveur avec NoSQL et Java
                                                                     XML et Interface web
                                                               Les équipes de 2 personnes pour la période de mercredi.
                                                               turnin. Pas de dépôt de travaux par courriel (aucune exception!)
                                                         Validation
                                                               La partie pratique de l’évaluation se fait lors de la période de
                                                                laboratoire. SEULEMENT 1 PÉRIODE!
                                                                   Après cette période vous avez le droit de présenter votre travail pendant la période
                                                                    de laboratoire suivante, mais il y a une pénalité de 30%
                                                               La partie de correction du code

                                                 2015-08-26                                  © Domingo Palao                                         14
Plan de cours
          S
          e
                                                 Réalisations et critères d’évaluation
          m
          a                                        Examens :
          i
          n                                                    Mi-session.
          e
                                                               Final.
          1
                                                         Points bonis pour l’examen:
IFT287 Exploitation de BD relationnelles et OO

                                                           Commentaires chaque semaine
                                                           Préparez un résumé de la matière traitée dans les
                                                            cours (1 page seulement écrite à la main!)
                                                                  Les résumés sont à remettre avant l’examen.

                                                 2015-08-26                        © Domingo Palao               15
Plan de cours
          S
          e
                                                 Notation
          m
          a                                              Éléments de notation                       Points
          i
          n                                              Examen périodique                          30
          e
                                                         Examen final                               35
          1
                                                         Travaux pratiques (5,5,6,6,6,7) points)    35
IFT287 Exploitation de BD relationnelles et OO

                                                         TOTAL                                      100
                                                         Points extra
                                                         Commentaires après chaque séance           5
                                                         0.5 chaque (10/13)
                                                         Ou
                                                         Résumé avant l’examen 2.5 (2)
                                                         TOTAL                                      105

                                                     La note maximale sera toujours 100 points

                                                 2015-08-26                               © Domingo Palao    16
Plan de cours

                                                    Note sur le plagiat
          S
          e
          m
          a
          i
          n
          e
                                                              Coopération entre étudiants
          1
                                                              Matériel sur Internet
IFT287 Exploitation de BD relationnelles et OO

                                                 2015-08-26               © Domingo Palao    17
Plan de cours
          S
          e                                          Bibliographie
          m                                                    Livre 1. Fundamentals of database systems fifth edition.
          a
          i                                                        Auteur: Elmasri, Ramez
          n
          e
                                                                   Publié par: Pearson Addison Wesley

          1
                                                               Livre 2. IFT287: Notes du cours.
IFT287 Exploitation de BD relationnelles et OO

                                                                   Auteur: M. Frappier

                                                               Livre 3. Principles of Database Systems with Internet and Java
                                                                applications.
                                                                   Auteur: G. Ricardi
                                                                   Publié par: Addison Wesley

                                                               Livre 4. Au cœur de Java 8ème édition
                                                                   Auteur:Cay Horstman
                                                                   Publié par: John Wiley, 2008

                                                               Autres références.

                                                 2015-08-26                                  © Domingo Palao                     18
IFT287 Exploitation de bases de données
     relationnelles et orientées objet
                Semaine 1

           Rappel sur SQL

                             Domingo Palao
SQL

                                                     Structured Query Langage (SQL)
          S
          e
          m
          a
                                                      ou langage structuré de requêtes
          i                                           est un langage informatique
          n
          e                                           standard et normalisé, destiné à
          1
                                                      interroger ou manipuler une base
                                                      de données.
IFT287 Exploitation de BD relationnelles et OO

                                                     Edgar F. Codd (1923-2003) en
                                                      1970 a rédigé l’article « A
                                                      Relational Model of Data for
                                                      Large Shared Data Banks »
                                                      dans la revue ACM.
                                                     IBM s’est mis à développer       Edgar F. Codd (1923-2003)
                                                      SEQUEL (Structured English
                                                      Query Language) pour mettre en
                                                      œuvre le modèle de Codd.

                                                 2015-08-26                  © Domingo Palao                       20
SQL
          S
          e                                          1979, Relational Software, Inc (actuellement ORACLE Corporation)
          m                                           a présenté la première version commerciale de SQL.
          a
          i                                          SQL a été adopté comme recommandation par l’Institut de
          n
          e                                           Normalisation Américaine (ANSI) en 1986, et comme norme
                                                      internationale par l’ISO en 1987.
          1
                                                     SQL2 finalisée en 1992.
IFT287 Exploitation de BD relationnelles et OO

                                                               Un des principaux changements, l’ajout des OUTER JOIN.
                                                     SQL3 proposée en 1999.
                                                               Elle supporte une extension objet et elle est partiellement implémentée
                                                                par quelques SGBD.
                                                     SQL:2003
                                                               Introduction de fonctions pour la manipulation de XML
                                                     SQL:2008
                                                               Ajout de fonctions de fenêtrage,

                                                 2015-08-26                              © Domingo Palao                            21
SQL

                                                    Il existe 3 niveaux de conformité dans la norme
          S
          e
          m
          a                                          SQL-92 :
          i
          n                                                    Entry
          e
                                                               Intermediate
          1
                                                               Full
IFT287 Exploitation de BD relationnelles et OO

                                                    La majorité des systèmes de gestion de bases
                                                     de données se prétendaient compatibles au
                                                     standard SQL dès lors qu'ils se conformaient au
                                                     niveau Entry.
                                                               L'ensemble des fonctionnalités des niveaux
                                                                Intermediate et Full étaient, soit trop volumineux, soit
                                                                en conflit avec les fonctionnalités implantées.

                                                     http://docs.postgresqlfr.org/8.1/features.html

                                                 2015-08-26                         © Domingo Palao                   22
SQL
          S
          e
          m                                         SQL est composé de deux parties :
          a
          i
          n                                                   SQL déclaratif
          e
                                                                DDL, Data Definition Language.
          1
                                                                DML, Data Manipulation Language.
IFT287 Exploitation de BD relationnelles et OO

                                                                DCL, Data Control Language.
                                                                TCL, Transaction Control Language
                                                              SQL procédural
                                                                PSM, Persistent Stored Module
                                                                CLI, Call Level Interface
                                                                Embedded SQL

                                                 2015-08-26                     © Domingo Palao      23
Exercice rapide
          S
          e
          m                                         Donner quelques exemples de
          a
          i
          n
                                                     commandes de :
          e
                                                              DDL, Data Definition Language.
          1
                                                              DML, Data Manipulation Language.
IFT287 Exploitation de BD relationnelles et OO

                                                              DCL, Data Control Language.
                                                              TCL, Transaction Control Language

                                                 2015-08-26                  © Domingo Palao       24
Exercice rapide (Solution)

                                                    
          S
          e                                                   Donner quelques exemples de commandes de :
          m
          a
                                                                  DDL, Data Definition Language.
          i                                                           CREATE – Créer des objets dans la base de données
          n                                                           ALTER – Changer la structure de la base de données
          e
                                                                      DROP – Supprimer des objets
          1                                                           TRUNCATE – Supprimer tous les enregistrements d’une table
                                                                       (l’espace alloué aux enregistrements est libéré)
IFT287 Exploitation de BD relationnelles et OO

                                                                      COMMENT – Ajouter des commentaires dans le dictionnaire de
                                                                       données
                                                                      RENAME – Renommer un objet
                                                                  DML, Data Manipulation Language.
                                                                      SELECT – Faire une requête à la base de données
                                                                      INSERT – Insérer des données
                                                                      UPDATE – Mettre à jour les données existantes dans une table
                                                                      DELETE – Supprimer les enregistrements d’une table (l’espace
                                                                       alloué à ces enregistrements reste)
                                                                      CALL – Appeler un programme en PL/SQL ou Java
                                                                      EXPLAIN PLAN – Expliquer la manière d’accéder à la base de
                                                                       données
                                                                      LOCK TABLE - Contrôler la concurrence

                                                 2015-08-26                            © Domingo Palao                                25
Exercice rapide (Solution)
          S
          e
          m
                                                     Donner quelques exemples de commandes
          a
          i                                           de:
          n
          e                                                      DCL, Data Control Language.
          1                                                          GRANT – Donner des privilèges d’accès aux usagers
                                                                     REVOKE – Enlever des privilèges donnés avec le GRANT
IFT287 Exploitation de BD relationnelles et OO

                                                                 TCL, Transaction Control Language
                                                                     COMMIT - Sauvegarder les données de manière définitive
                                                                     SAVEPOINT – Identifier un point où on peut retourner avec
                                                                      un rollback dans une transaction
                                                                     ROLLBACK – Retourner la base de données à son état
                                                                      original depuis le dernier COMMIT ou SAVEPOINT
                                                                     SET TRANSACTION – Changer les options d’une transaction

                                                 2015-08-26                         © Domingo Palao                          26
IFT287 Exploitation de bases de données
     relationnelles et orientées objet
                Semaine 1

   Data Definition Language
Data Definition Language
          S
          e
          m                                         Utilise les commandes pour établir la
          a
          i
          n
                                                     définition des tables (relations) d’une base
          e

          1
                                                     de données
                                                              CREATE
IFT287 Exploitation de BD relationnelles et OO

                                                              DROP
                                                              ALTER
                                                              TRUNCATE
                                                              COMMENT
                                                              RENAME

                                                 2015-08-26                © Domingo Palao     28
IFT287 Exploitation de bases de données
     relationnelles et orientées objet
                Semaine 1

 Data Manipulation Language
Requêtes en SQL

                                                     SQL a une commande de base pour chercher
          S
          e
          m
          a
                                                      l’information dans la base de données, la commande
          i                                           SELECT
          n
          e                                          Le format de base de l’instruction SELECT de SQL est
          1                                           connu comme le bloque SELECT-FROM-WHERE
IFT287 Exploitation de BD relationnelles et OO

                                                                  SELECT          
                                                                   FROM           
                                                                  WHERE           

                                                               < liste d’attributs > c’est une liste de noms d’attributs qu’on
                                                                cherche avec la requête
                                                               < liste de tables > c’est une liste obligatoire qui spécifie les
                                                                tables à utiliser pendant la requête
                                                                c’est la condition booléenne identifiant les tuples à
                                                                chercher avec la requête
                                                 2015-08-26                             © Domingo Palao                         30
IFT287 Exploitation de bases de données
     relationnelles et orientées objet
                Semaine 1

    Opérations d’ensemble
Opérations d’ensemble
          S
          e
          m
                                                    SQL a incorporé quelques opérations
          a
          i                                          d’ensembles
          n
          e                                                    UNION
          1
                                                               MINUS
IFT287 Exploitation de BD relationnelles et OO

                                                               INTERSECT
                                                    Les résultats de ces opérations sont des
                                                     ensembles de tuples.
                                                               Les tuples dupliqués sont éliminés du résultat.
                                                               Les opérations d’ensembles s’appliquent seulement
                                                                aux relations ayant le même nombre d’attributs et
                                                                les attributs doivent apparaître dans le même
                                                                ordre.
                                                 2015-08-26                      © Domingo Palao                32
Opérations d’ensemble
          S
          e
          m
                                                    Faire une liste de tous les noms des employés
          a
          i                                          ainsi que les noms de tous leurs dépendants
          n
          e
                                                      (SELECT FNAME
          1
                                                         FROM EMPLOYE)
IFT287 Exploitation de BD relationnelles et OO

                                                         UNION
                                                        (SELECT DEPENDENT_NAME
                                                            FROM DEPENDENT)
                                                              Pourquoi une requête avec des opérations
                                                               d’ensemble est considérée comme deux
                                                               requêtes?

                                                 2015-08-26                   © Domingo Palao            33
IFT287 Exploitation de bases de données
     relationnelles et orientées objet
                Semaine 1

      Requêtes imbriquées
Requêtes imbriquées

                                                     Une requête SELECT peut appeler une requête
          S
          e
          m
          a
                                                      imbriquée.
          i
          n
                                                     Nous pouvons spécifier dans la clause WHERE une
          e                                           deuxième requête, nommée outer query
          1

                                                         Chercher le nom et l’adresse de tous les employés qui
IFT287 Exploitation de BD relationnelles et OO

                                                         travaillent dans le département 'Research’ ou ‘Sales’.

                                                              SELECT   FNAME, LNAME, ADDRESS
                                                                FROM   EMPLOYEE
                                                               WHERE   DNO IN (SELECT DNUMBER
                                                                                 FROM DEPARTMENT
                                                                                WHERE DNAME='Research'
                                                                                   OR DNAME=‘Sales')

                                                 2015-08-26                     © Domingo Palao               35
Utilisation de JOIN dans SQL2

                                                     Exemples :
          S
          e
          m
          a
                                                               SELECT      FNAME, LNAME, ADDRESS
          i                                                    FROM        EMPLOYEE, DEPARTMENT
          n                                                    WHERE DNAME='Research' AND DNUMBER=DNO
          e
                                                     Peut être écrite :
          1
                                                               SELECT      FNAME, LNAME, ADDRESS
                                                                 FROM      (EMPLOYEE JOIN DEPARTMENT
IFT287 Exploitation de BD relationnelles et OO

                                                                                       ON DNUMBER=DNO)
                                                                WHERE      DNAME='Research’
                                                     Ou bien:
                                                              SELECT FNAME, LNAME, ADDRESS
                                                                FROM (EMPLOYEE NATURAL JOIN DEPARTMENT
                                                                      AS DEPT(DNAME, DNO, MSSN, MSDATE)
                                                               WHERE DNAME='Research’

                                                 2015-08-26                   © Domingo Palao             36
IFT287 Exploitation de bases de données
          relationnelles et orientées objet
                     Semaine 1

                  Outer Join

2015-08-26          © Domingo Palao            37
OUTER JOIN
          S
          e
          m                                         Prenons les tables suivantes:
          a
          i
          n
                                                              Dept
          e
                                                              deptId     deptNom
          1
                                                              1          Développement
IFT287 Exploitation de BD relationnelles et OO

                                                              2          Recherche
                                                              3          Finances

                                                                  Emp
                                                          empId         empNom                     deptId
                                                          1             Jean Beauregard            1
                                                          2             Anne Rivaud                2
                                                          3             Marie Allaire

                                                 2015-08-26                      © Domingo Palao            38
OUTER JOIN
          S
          e
          m                                         L’instruction suivante:
          a
          i
          n
                                                    SELECT *
          e

          1
                                                    FROM dept JOIN emp
                                                         ON (dept.deptId = emp.deptId)
IFT287 Exploitation de BD relationnelles et OO

                                                     dept.deptId deptNom         empId            empNom            emp.deptId
                                                     1          Développement    1                Jean Beauregard   1
                                                     2          Recherche        2                Anne Rivaud       2

                                                 2015-08-26                     © Domingo Palao                                  39
OUTER JOIN
          S
          e
          m                                         L’instruction suivante:
          a
          i
          n
                                                    SELECT *
          e

          1
                                                    FROM dept LEFT JOIN emp
                                                         ON (dept.deptId = emp.deptId)
IFT287 Exploitation de BD relationnelles et OO

                                                     dept.deptId deptNom         empId            empNom            emp.deptId
                                                     1          Développement    1                Jean Beauregard   1
                                                     2          Recherche        2                Anne Rivaud       2
                                                     3          Finances         NULL             NULL              NULL
                                                    Donne comme résultat les enregistrements de la relation
                                                    de gauche qui n’ont pas une correspondance dans la
                                                    relation de droite.
                                                 2015-08-26                     © Domingo Palao                                  40
OUTER JOIN
          S
          e
          m                                         L’instruction suivante:
          a
          i
          n
                                                    SELECT *
          e

          1
                                                    FROM dept RIGHT JOIN emp
                                                         ON (dept.deptId = emp.deptId)
IFT287 Exploitation de BD relationnelles et OO

                                                     dept.deptId deptNom         empId            empNom            emp.deptId
                                                     1          Développement    1                Jean Beauregard   1
                                                     2          Recherche        2                Anne Rivaud       2
                                                     NULL       NULL             3                Marie Allaire
                                                    Donne comme résultat les enregistrements de la relation
                                                    de droite qui n’ont pas une correspondance dans la relation
                                                    de gauche.
                                                 2015-08-26                     © Domingo Palao                                  41
OUTER JOIN
          S
          e
          m                                         L’instruction suivante:
          a
          i
          n
                                                    SELECT *
          e

          1
                                                    FROM dept FULL JOIN emp
                                                         ON (dept.deptId = emp.deptId)
IFT287 Exploitation de BD relationnelles et OO

                                                     dept.deptId deptNom         empId            empNom            emp.deptId
                                                     1          Développement    1                Jean Beauregard   1
                                                     2          Recherche        2                Anne Rivaud       2
                                                     NULL       NULL             3                Marie Allaire
                                                     3          Finances         NULL             NULL              NULL
                                                    Donne comme résultat les enregistrements de la relation
                                                    de droite qui n’ont pas une correspondance dans la relation
                                                    de gauche.
                                                 2015-08-26                     © Domingo Palao                                  42
IFT287 Exploitation de bases de données
          relationnelles et orientées objet
                     Semaine 1

             Fonctions d’agrégation

2015-08-26           © Domingo Palao           43
Fonctions d’agrégation
          S
          e                                          Nous avons :
          m
          a                                                      COUNT,
          i
          n                                                      SUM,
          e
                                                                 MAX,
          1
                                                                 MIN,
                                                              
IFT287 Exploitation de BD relationnelles et OO

                                                                  AVG

                                                         Trouver le salaire maximal, minimal et moyen de tous les
                                                         employés.
                                                              SELECT       MAX(SALARY), MIN(SALARY), AVG(SALARY)
                                                                           FROM EMPLOYEE

                                                     Quelques implémentations de SQL ne permettent qu’une
                                                      fonction d’agrégation dans la clause SELECT

                                                 2015-08-26                         © Domingo Palao                44
Fonctions d’agrégation
          S
          e
          m                                         Trouver le salaire maximal, minimal et
          a
          i
          n
                                                     moyen des employés du département
          e

          1
                                                     'Research'.
                                                              SELECT   MAX(SALARY),
IFT287 Exploitation de BD relationnelles et OO

                                                                       MIN(SALARY),
                                                                       AVG(SALARY)
                                                                       FROM EMPLOYEE, DEPARTMENT
                                                                       WHERE DNO=DNUMBER AND
                                                                       DNAME='Research'

                                                 2015-08-26                     © Domingo Palao    45
Groupes
          S
          e                                          Dans plusieurs cas, nous avons besoin d’appliquer une
                                                      fonction d’agrégation à un ou plusieurs sous-groupes de
          m
          a
          i
          n                                           tuples dans une relation
                                                     La fonction doit être appliquée à chaque sous-groupe de
          e

          1
                                                      manière indépendante
IFT287 Exploitation de BD relationnelles et OO

                                                     SQL a la clause GROUP BY pour spécifier les options
                                                      de groupage
                                                     Pour chaque département, trouver le numéro de
                                                      département, le nombre d’employés et le salaire moyen
                                                              SELECT DNO, COUNT (*), AVG (SALARY)
                                                                FROM EMPLOYEE
                                                               GROUP BY DNO

                                                 2015-08-26                   © Domingo Palao             46
Groupes
          S
          e
          m                                         Pour chaque projet, trouver le numéro de
          a
          i
          n
                                                     projet, le nom du projet, et le nombre
          e

          1
                                                     d’employés qui travaillent dans ce projet
                                                              SELECT   PNUMBER, PNAME, COUNT (*)
IFT287 Exploitation de BD relationnelles et OO

                                                                       FROM PROJECT, WORKS_ON
                                                                       WHERE PNUMBER=PNO
                                                                       GROUP BY PNUMBER, PNAME

                                                              Dans ce cas, les fonctions d’agrégation et de
                                                               groupage sont appliquées après la jointure de
                                                               deux relations

                                                 2015-08-26                     © Domingo Palao           47
La clause HAVING

                                                     Quelques fois, nous voulons obtenir les valeurs
          S
          e
          m
          a
                                                      appliquées aux fonctions d’agrégations, mais seulement
          i                                           pour quelques groupes avec une condition précise
          n
          e                                          La clause HAVING est utilisée pour spécifier une
          1                                           condition de sélection dans les groupes
                                                     HAVING ne fonctionne pas avec les tuples
IFT287 Exploitation de BD relationnelles et OO

                                                      individuellement
                                                     Exemple : Pour chaque projet avec plus que deux
                                                      employés, trouver le numéro de projet, nom du projet et
                                                      le numéro des employés qui travaillent dans ce projet

                                                              SELECT   PNUMBER, PNAME, COUNT(*)
                                                                FROM   PROJECT, WORKS_ON
                                                               WHERE   PNUMBER=PNO
                                                               GROUP   BY    PNUMBER, PNAME
                                                              HAVING   COUNT (*) > 2

                                                 2015-08-26                     © Domingo Palao            48
IFT287 Exploitation de bases de données
     relationnelles et orientées objet
                Semaine 1

Mise à jour des données en SQL
Mise à jour des données en SQL
          S
          e
          m                                         Il y a trois commandes SQL pour modifier
          a
          i
          n
                                                     une base de données :
          e

          1
                                                              INSERT
                                                              DELETE
IFT287 Exploitation de BD relationnelles et OO

                                                              UPDATE

                                                 2015-08-26                 © Domingo Palao       50
INSERT
          S
          e
                                                     INSERT est utilisée pour ajouter un ou plusieurs tuples dans une relation
          m                                          Les valeurs des attributs doivent être dans le même ordre qu’au moment de
          a                                           créer la table avec la commande CREATE TABLE
          i
          n                                          Exemple:
          e                                         INSERT INTO    EMPLOYEE
                                                    VALUES ('Richard','K','Marini', '653298653', '30-DEC-52',
          1
                                                            '98 Oak Forest,Katy,TX', 'M', 37000,'987654321', 4 )
IFT287 Exploitation de BD relationnelles et OO

                                                     Une forme alternative spécifie de manière explicite le nom des attributs qui
                                                      correspondent aux valeurs de la nouvelle tuple
                                                     Exemple: Ajouter un EMPLOYEE duquel on connaît seulement FNAME,
                                                      LNAME, et SSN.

                                                              INSERT INTO EMPLOYEE (FNAME, LNAME, SSN)
                                                                     VALUES ('Richard', 'Marini', '653298653')

                                                              INSERT INTO NEW_EMPLOYEE (FNAME, LNAME, SSN)
                                                                          SELECT (FNAME, LNAME, SSN)
                                                                              FROM EMPLOYEE

                                                 2015-08-26                          © Domingo Palao                           51
DELETE
          S
          e                                          Supprime les tuples d’une relation
          m                                                    Nous pouvons ajouter la clause WHERE pour sélectionner les tuples à
          a                                                     supprimer
          i
          n                                                    L’intégrité référentielle est validée
          e                                                    S’il n’y a pas une clause WHERE, tous les tuples de la relation seront
          1
                                                                supprimés
IFT287 Exploitation de BD relationnelles et OO

                                                              DELETE FROM EMPLOYEE
                                                               WHERE LNAME='Brown’

                                                              DELETE FROM EMPLOYEE
                                                               WHERE DNO IN
                                                                 (SELECT     DNUMBER
                                                                    FROM     DEPARTMENT
                                                                   WHERE DNAME='Research')

                                                              DELETE FROM EMPLOYEE

                                                 2015-08-26                              © Domingo Palao                            52
UPDATE
          S
          e                                          Utilisée pour modifier les valeurs d’un ou plusieurs tuples
          m                                                    La clause WHERE sélectionne les tuples à modifier
          a
          i                                                    Chaque commande modifie les tuples dans la même relation
          n                                                    L’intégrité référentielle est validée
          e

          1                                                       UPDATE PROJECT
                                                                           SET     PLOCATION = 'Bellaire', DNUM = 5
IFT287 Exploitation de BD relationnelles et OO

                                                                           WHERE   PNUMBER=10

                                                     Donner une augmentation de salaire de 10% aux employés du
                                                      département de ‘Research’.

                                                              UPDATE      EMPLOYEE
                                                                  SET     SALARY = SALARY *1.1
                                                                  WHERE   DNO IN (SELECT DNUMBER
                                                                                       FROM DEPARTMENT
                                                                                       WHERE         DNAME='Research')

                                                 2015-08-26                             © Domingo Palao                    53
IFT287 Exploitation de bases de données
     relationnelles et orientées objet
                Semaine 1

                Vues
Vues en SQL
          S
          e                                          Une vue est une table virtuelle qui est dérivée d’autres
          m
          a                                           tables
          i
          n                                                    Elle n’a pas d’existence propre.
          e
                                                               Aucune donnée ne lui est associée.
          1                                                    Sa description est stockée sous la forme d’une requête.
                                                     Permets l’utilisation complète des requêtes.
IFT287 Exploitation de BD relationnelles et OO

                                                     Pour créer une vue, nous avons la commande: CREATE
                                                      VIEW
                                                    CREATE VIEW WORKS_ON_NEW AS
                                                      SELECT FNAME, LNAME, PNAME, HOURS
                                                         FROM EMPLOYEE, PROJECT, WORKS_ON
                                                         WHERE SSN=ESSN
                                                           AND PNO=PNUMBER
                                                 2015-08-26                           © Domingo Palao                     55
Utilité des vues
          S
          e
          m
                                                    Confidentialité
          a
          i                                                    Les utilisateurs n’ont pas le droit d’accéder qu’aux
          n
          e                                                     vues.
          1
                                                    Cacher la complexité des données aux
IFT287 Exploitation de BD relationnelles et OO

                                                     utilisateurs
                                                               Vue simplifiée des données.
                                                               Simplifier les requêtes aux utilisateurs non
                                                                spécialisés.
                                                    Présenter différentes perspectives sur les
                                                     données aux utilisateurs
                                                               Renommer des colonnes.
                                                 2015-08-26                        © Domingo Palao                     56
IFT287 Exploitation de bases de données
     relationnelles et orientées objet
                Semaine 1

            Questions?
Vous pouvez aussi lire