SlideShare uma empresa Scribd logo
1 de 44
Faculté Polytechnique




Le SQL pour les nuls
Romain Cambier, Youness El Mouhafidi
SQL ?
   3 catégories de commandes :
    DML (data manipulation language)
       Lire, écrire, modifier, …


    DDL (data definition language)
    DCL (data control language)




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   2
Table « students »
   Matricule         Nom                     Prénom                   Option         Année
   001               Cambier                 Romain                   IG             3
   002               El Mouhafidi            Youness                  SDM            2
   003               Honoré                  Marc                     IG             3
   004               Baudinet                Élodie                   MECA           3
   005               Fontaine                Simon                    IG             4
   006               Kosciesza               Kamil                    ELEC           4
   007               Infantino               Giuliano                 ELEC           5
   008               Ozdemir                 Eren                     MINES          2
   009               Colassin                Benjamin                 MECA           5
   010               Goudemant               Thomas                   ELEC           2
   011               Regnier                 Guillaume                SDM            5


Université de Mons    Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi           3
DML: SELECT
   Utilité: récupérer des données
   Syntaxe: "SELECT #columns# FROM #table#"
   Exemples:
   Récupérer toutes les infos de tous les étudiants:
           SELECT * FROM students
   Récupérer tous les noms & prénoms:
           SELECT nom, prenom FROM students


Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   4
DML: SELECT
   Distinct: récupérer des données sans doublon
   Syntaxe: "SELECT DISTINCT #columns# FROM #table#"
   Exemples:
   « SELECT DISTINCT Name FROM Students »
     Id (BIGINT)     Name                               Name
                     (VARCHAR)                          (VARCHAR)
     1               Riri                               Fifi
     2               Fifi                               Riri
     3               Riri



Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   5
DML: FONCTIONS
   Fonctions scalaires
   N entrées N sorties
   FONCTION          SYNTAXE                                  USAGE
   UPPER/UCASE UPPER(column)                                  Renvoi le champs en majuscule
   LOWER/LCASE LOWER(column)                                  Renvoi le champs en minuscule
   LENGTH/LEN        LEN(column)                              Renvoi le nombre de caractères dans le
                                                              champs
   ROUND             ROUND(column, decimals)                  Renvoi les valeurs arrondies à la
                                                              décimale la plus proche

   « SELECT #function(param)# AS #var# FROM
   #table# »

Université de Mons     Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi                    6
DML: FONCTIONS
   Fonctions d’agrégat
   N entrées 1 sortie
  FONCTION      SYNTAXE                                      USAGE
  COUNT         COUNT(*/(DISTINCT) column)                   Renvoi le nombre d’entrées
  AVG           AVG(column)                                  Renvoi la moyenne des entrées
  SUM           SUM(column)                                  Renvoi la somme des entrées
  MIN           MIN(column)                                  Renvoi la valeur minimum
  MAX           MAX(column)                                  Renvoi la valeur maximum
  FIRST         FIRST(column)                                Renvoi la première entrée
  LAST          LAST(column)                                 Renvoi la dernière entrée

   « SELECT #function(param)# AS #var# FROM #table# »


Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi            7
CLAUSES: WHERE
   Utilité: récupérer certaines données (condition)
   Syntaxe: "SELECT #columns# FROM #table#« WHERE
   #column# = #value# "
   Exemples:
   Récupérer tous les IG:
             SELECT * FROM students WHERE option=‘IG’
   Récupérer tous les noms des BA2:
             SELECT nom FROM students WHERE annee=‘BA2’

Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   8
CLAUSES: WHERE
   Opérateurs
   Comparatifs: <, <=, <>, >=, >, =, <=>
   Mathématiques: +, -, *, /
   Logiques: OR, AND, NOT, IS
   Valeurs: TRUE, FALSE, UNKNOWN, NULL, int, ‘char’
   Exemple:
   « SELECT Id FROM Purchases WHERE (Stock IS NOT
   NULL) AND ((5*Price)>=25) »

Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   9
CLAUSES: WHERE
   Mots de contrôle
   Like: permet d’approximer une recherche.
   Note: ‘_’ remplace une lettre alors que ‘%’ remplace
   plusieurs lettres
   Exemple:
   « SELECT * FROM Students WHERE Name LIKE
   ‘Ro%’ »
   Id (BIGINT)   Name (VARCHAR)                       Id (BIGINT)             Name (VARCHAR)
   1             Romain                               1                       Romain
   2             Raoul                                3                       Robin
   3             Robin
   4             Marc

Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi              10
CLAUSES: WHERE
   Mots de contrôle
   Contains: est l’équivalent de LIKE ‘%word%’.
   Exemple:
   « SELECT * FROM Students WHERE
   CONTAINS(Name, ‘o’) »
   Id (BIGINT)   Name (VARCHAR)                       Id (BIGINT)             Name (VARCHAR)
   1             Romain                               1                       Romain
   2             Raoul                                2                       Raoul
   3             Robin                                3                       Robin
   4             Marc

Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi              11
CLAUSES: WHERE
     Mots de contrôle
     Between… And : permet d’obtenir un intervalle
     (bornes incluses)
     Exemple:
     « SELECT * FROM Purchases WHERE Date BETWEEN
     ‘20130101’ AND ‘20130315’ »
 Id       Date(DATETIME)                        Article        Id (BIGINT)          Date(DATE    Article(INT)
 (BIGINT)                                       (INT)                               TIME)
 1         2013-02-25 03:12:21                  24             1                    2013-02-25   24
 2         2013-03-15 11:24:00                  32                                  03:12:21
 3         2013-05-12 08:00:50                  12             2                    2013-03-15   32
                                                                                    11:24:00

Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi                               12
CLAUSES: WHERE
    Id   Id_student      Moyenne
                                                  Comment obtenir les
    1    124             12
    2    88              11                     moyennes des étudiants de
    3    62              7                       Charleroi en une seule
    4    12              15
                                                       requête?
    5    73              9
   Id     Nom            Ville
   12     Derp           Charleroi

   62     Herp           Mons
   73     Lill’ Derp     Charleroi

   88     Derpina        Mons
   124    Derpington     Mons


Université de Mons     Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   13
CLAUSES: WHERE
    Id   Id_student      Moyenne              En décomposant le problème en
    1    124             12                   sous-requêtes:
    2    88              11
                                              « SELECT * FROM Students
    3    62              7
                                              WHERE Ville=‘Charleroi’ »
    4    12              15
    5    73              9
                                                                +
   Id     Nom            Ville                « SELECT Moyenne FROM Notes »
   12     Derp           Charleroi                              =
   62     Herp           Mons
                                              « SELECT Moyenne FROM Notes
   73     Lill’ Derp     Charleroi
                                              WHERE Id_student = (SELECT Id
                                              FROM Students WHERE
   88     Derpina        Mons                 Ville=‘Charleroi’) »
   124    Derpington     Mons


Université de Mons     Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   14
CLAUSES: WHERE
     Queryception
     Les opérateurs de sous-requêtes




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   15
CLAUSES: WHERE
      Mots de contrôle
      In: à la condition d’être inclus dans la liste.
      Peut être remplacé par ‘= Any’
      Exemple:
      « SELECT * FROM Employees WHERE Salary IN
      (800,1300,1500) »
  Id (BIGINT) Name (CHAR)            Salary(INT)                Id (BIGINT)           Name (CHAR) Salary(INT)
  1           Miss Fortune           800                        1                     Miss Fortune   800
  2           Garen                  1500                       2                     Garen          1500
  3           Viktor                 2400
  4           Shaco                  950
  5           Amumu                  3100
  6           Sona                   1100

Université de Mons     Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi                         16
CLAUSES: WHERE
  Mots de contrôle
  All: la condition doit être respectée pour toute la liste.
  L’intérêt est qu’on ne connait pas le résultat de la sous-requête.
  Exemple:
  « SELECT * FROM Employees WHERE Salary
  >ALL(950,1300,1500) »
  Id (BIGINT) Name (CHAR)            Salary(INT)                Id (BIGINT)           Name (CHAR) Salary(INT)
  1           Miss Fortune           800                        3                     Viktor       2400
  2           Garen                  1500                       5                     Amumu        3100
  3           Viktor                 2400
  4           Shaco                  950
  5           Amumu                  3100
  6           Sona                   1100

Université de Mons     Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi                         17
CLAUSES: WHERE
  Mots de contrôle
  Any/Some: la condition doit être respectée pour au moins un
  élément de la liste.
  Exemple:
  « SELECT * FROM Employees WHERE Salary
  <ANY(950,1300,1500) »
  Id (BIGINT) Name (CHAR)            Salary(INT)                Id (BIGINT)           Name (CHAR) Salary(INT)
  1           Miss Fortune           800                        1                     Miss Fortune   800
  2           Garen                  1500                       4                     Shaco          950
  3           Viktor                 2400                       6                     Sona           1100
  4           Shaco                  950
  5           Amumu                  3100
  6           Sona                   1100

Université de Mons     Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi                         18
CLAUSES: WHERE
  Mots de contrôle
  Exists: Renvoie un résultat si la condition de la sous-requête est
  vérifiée (possède au moins un résultat)
  Exemple:
  « SELECT * FROM Employees WHERE NOT EXISTS( SELECT *
  FROM Employees WHERE Salary < 4000) »
  Id (BIGINT) Name (CHAR)            Salary(INT)                Id (BIGINT)           Name (CHAR) Salary(INT)
  1           Miss Fortune           800
  2           Garen                  1500
  3           Viktor                 2400
  4           Shaco                  950
  5           Amumu                  3100
  6           Sona                   1100

Université de Mons     Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi                         19
CLAUSES: GROUP BY
   Utilité: Regrouper les résultats d’une fonction d’agrégat
   Syntaxe: « SELECT #columns# #function()# FROM #table#
   GROUP BY #columns# »
   Exemples:
            SELECT Id_customer SUM(Price) FROM purchases
   GROUP BY Id_customer
    Id (BIGINT)      Price (INT)            Id_customer              Id_customer         SUM(Price) (INT)
                                            (BIGINT)                 (BIGINT)
    1                50                     1                        1                   80
    2                80                     2                        2                   100
    3                60                     3
                                                                     3                   60
    4                30                     1
    5                20                     2

Université de Mons        Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi                      20
CLAUSES: ORDER BY
   Utilité: Ordonner les données affectées
   Syntaxe: « SELECT #columns# FROM #table# ORDER
   BY #columns# #ASC/DSC#
   Exemples:
   Récupérer les noms par ordre alphabétique
          SELECT nom FROM students ORDER BY
   nom ASC
   Récupérer les noms par ordre anti-alphabétique
          SELECT nom FROM students ORDER BY
   nom DSC
Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   21
CLAUSES: LIMIT
   Utilité: limiter le nombre de données affectées
   Syntaxe: « SELECT #columns# FROM #table# LIMIT
   #start#,#number#
   Exemples:
   Récupérer les noms des 5 plus vieux étudiants:
          SELECT nom FROM students ORDER BY
   annee DESC LIMIT 0,5


Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   22
DML: INSERT
   Utilité: insérer des données
   Syntaxe: « INSERT INTO #table#(#columns#) VALUES
   (#val1#, #val2#, …)
   Exemples:
   Insérer un étudiant:
         INSERT INTO students(nom, prenom, option,
   annee) VALUES(‘Honore’, ‘Julie’, ‘GEN’, 1)
        = INSERT INTO students(prenom, option, nom,
   annee) VALUES(‘Julie’, ‘GEN’, ‘Honore’, 1)
Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   23
DML: UPDATE
   Utilité: modifier des données
   Syntaxe: « UPDATE #table# SET #colum# = #val#
   Exemples:
   Tout le monde réussit, et passe à l’année suivante:
           UPDATE students SET annee = annee + 1
   Youness (matricule = 2, en SDM) change d’option:
           UPDATE students SET option = ‘IG’
   WHERE mat = 2
Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   24
DML: DELETE
   Utilité: effacer des données
   Syntaxe: « DELETE FROM #table#
   Exemples:
   Julie (matricule = 12) abandonne polytech:
           DELETE FROM students WHERE mat = 12




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   25
Plus loin avec SQL ?
   Problème: Créons un « mini-moodle » :
   • On a une liste de cours avec titulaires/année
   • On a une liste de fichiers (liés aux cours)




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   26
Table « cours »
   Id                    Nom                             Année                      Titulaire
   001                   Thermique                       BA3                        Prof.A
   002                   Physique                        BA2                        Prof.B
   003                   ITR                             MA1                        Prof.C
   004                   BDD                             BA3                        Prof.C




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi               27
Table « fichiers »
    Id                Nom                                  Taille                   Timestamp       Cours
   001   Formulaire_examen.pdf                      2097152                            …        1
   002   Diagrames.pdf                              9971418415                         …        1
   003   Video_effet_doppler.avi                    58416483964                        …        2
   004   syllabus_optique.doc                       6848851                            …        2
   005   Informatique_distribuee.pdf                6848468                            …        3
   006   Objectifs_cours_ITR                        68413518                           …        3
   007   theorie_bdd_relationnelles.pdf             348441184                          …        4
   008   SQL_to_NoSQL.pdf                           43874577                           …        4




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi                           28
Plus loin avec SQL ?
   Cahier des charges:
   • Affichage des différents profs
   • Affichage des différents cours
   • Affichage des fichiers d’un cours
   • Affichage des fichiers par cours
   • Affichage des fichiers par année
   • Nombre de cours par prof
   • Nombre de fichiers par prof
   • Volume (stockage) utilisé par un prof
Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   29
Plus loin avec SQL ?
   Fonction: Affichage des différents profs



          SELECT Titulaire FROM Cours GROUP BY Titulaire




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   30
Plus loin avec SQL ?
   Fonction: Affichage des différents cours



                              SELECT Nom FROM Cours




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   31
Plus loin avec SQL ?
   Fonction: Affichage des fichiers par cours
    SQL> SELECT Id AS cours_id, Nom AS cours_nom FROM Cours;
                        for each cours_nom
      SQL> SELECT Nom FROM Fichiers WHERE Cours=cours_id
                                end




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   32
Les jointures à la rescousse !
                                         Jointures ?
                                      Jointures ?
                                 Jointures ?



Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   33
Les jointures à la rescousse !
   Jointures:
   « (…) la jointure est une opération qui consiste à
     effectuer un produit cartésien des
     enregistrements de deux tables (…) Le résultat
     de l'opération est une nouvelle table. » (wikipedia.org)
   « Une jointure (ou θ-jointure) est un produit
     cartésien de deux tables. » (commentcamarche.net)
   « Une jointure permet de lire des données depuis
     des tables liées. » (moi)
Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   34
Les jointures, c’est puissant !!!
   Fonction: Affichage des fichiers par cours


               SELECT * FROM Cours, Fichiers WHERE
                       Fichiers.Cours = Cours.Id




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   35
Plus loin avec SQL ?
   Fonction: Affichage des fichiers d’un cours
 SQL> SELECT Id AS cours_id FROM Cours WHERE Nom=‘Physique’;
                        for each cours_id
    SQL> SELECT Nom FROM Fichiers WHERE Cours=cours_id
                               end




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   36
Les jointures, c’est puissant !!!
   Fonction: Affichage des fichiers d’un cours


            SELECT * FROM Cours, Fichiers WHERE
      (Cours.Nom=‘Physique’ AND Fichiers.Cours = Cours.Id)




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   37
Les jointures, c’est puissant !!!
   Fonction: Affichage des fichiers par année


   SELECT Fichiers.Nom, Cours.annee FROM Cours, Fichiers
    WHERE Fichiers.Cours = Cours.Id ORDER BY Cours.Année




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   38
Les jointures, c’est puissant !!!
   Fonction: Nombre de cours par prof


 SELECT COUNT(*), titulaire FROM Cours GROUP BY Titulaire
                    ORDER BY Titulaire




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   39
Les jointures, c’est puissant !!!
   Fonction: Nombre de fichiers par prof

  SELECT COUNT(Fichiers.ID), titulaire FROM Fichiers, Cours
   WHERE Fichiers.Cours=Cours.Id GROUP BY Cours.Titulaire
                ORDER BY Cours.Titulaire




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   40
Les jointures, c’est puissant !!!
   Fonction: Volume (stockage) utilisé par un prof

  SELECT SUM(Fichiers.Taille), titulaire FROM Fichiers, Cours
   WHERE Fichiers.Cours=Cours.Id GROUP BY Cours.Titulaire
                ORDER BY Cours.Titulaire




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   41
BONUS


        Affichez tous les fichiers auxquels à accès
        Romain Cambier (en ne connaissant que son
                       nom/prénom)


                           TIPS: CONCAT(‘a’, ‘b’) == ‘ab’


Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   42
Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   43
Et n’oubliez-pas…




Université de Mons   Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi   44

Mais conteúdo relacionado

Mais procurados

TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-CorrectionLilia Sfaxi
 
Cours Base de données relationnelles
Cours Base de données relationnellesCours Base de données relationnelles
Cours Base de données relationnellesAymen Kasmi
 
Comment faire un rapport de stage
Comment faire un rapport de stageComment faire un rapport de stage
Comment faire un rapport de stageEl Hassasna Riadh
 
Data mining - Segmentation(k-means, cah)
Data mining - Segmentation(k-means, cah)Data mining - Segmentation(k-means, cah)
Data mining - Segmentation(k-means, cah)Mohamed Heny SELMI
 
Analyse et conception des systèmes d’information
Analyse et conception des systèmes d’informationAnalyse et conception des systèmes d’information
Analyse et conception des systèmes d’informationMireille Blay-Fornarino
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Ilyas CHAOUA
 
Deep Learning : Application à la reconnaissance d’objets de classes multiples...
Deep Learning : Application à la reconnaissance d’objets de classes multiples...Deep Learning : Application à la reconnaissance d’objets de classes multiples...
Deep Learning : Application à la reconnaissance d’objets de classes multiples...Haytam EL YOUSSFI
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Riadh K.
 
Plateforme de gestion des projets de fin d'études
Plateforme de gestion des projets de fin d'étudesPlateforme de gestion des projets de fin d'études
Plateforme de gestion des projets de fin d'étudesMajdi SAIBI
 
Pfe conception et développement d'une application web GMAO JEE
Pfe conception et développement d'une application web GMAO JEEPfe conception et développement d'une application web GMAO JEE
Pfe conception et développement d'une application web GMAO JEEOussama Djerba
 
Introduction au traitement d'images
Introduction au traitement d'imagesIntroduction au traitement d'images
Introduction au traitement d'imagesAbdelouahed Abdou
 
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...ATPENSC-Group
 
application desktop pour la gestion d'une auto-ecole
application desktop pour la gestion d'une auto-ecoleapplication desktop pour la gestion d'une auto-ecole
application desktop pour la gestion d'une auto-ecoleamat samiâ boualil
 
Rapport de stage d'été
Rapport de stage d'étéRapport de stage d'été
Rapport de stage d'étéJinenAbdelhak
 
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Yasmine Tounsi
 
[FR] Intro aux basiques de Photoshop et Lightroom
[FR] Intro aux basiques de Photoshop et Lightroom[FR] Intro aux basiques de Photoshop et Lightroom
[FR] Intro aux basiques de Photoshop et LightroomStéphane Baril
 
conception de gestion d'une station de service
conception de gestion d'une station de service conception de gestion d'une station de service
conception de gestion d'une station de service Nesrine Hached
 

Mais procurados (20)

Rapport pfe licence
Rapport pfe licenceRapport pfe licence
Rapport pfe licence
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
Cours Base de données relationnelles
Cours Base de données relationnellesCours Base de données relationnelles
Cours Base de données relationnelles
 
Comment faire un rapport de stage
Comment faire un rapport de stageComment faire un rapport de stage
Comment faire un rapport de stage
 
Data mining - Segmentation(k-means, cah)
Data mining - Segmentation(k-means, cah)Data mining - Segmentation(k-means, cah)
Data mining - Segmentation(k-means, cah)
 
Analyse et conception des systèmes d’information
Analyse et conception des systèmes d’informationAnalyse et conception des systèmes d’information
Analyse et conception des systèmes d’information
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...
 
Deep Learning : Application à la reconnaissance d’objets de classes multiples...
Deep Learning : Application à la reconnaissance d’objets de classes multiples...Deep Learning : Application à la reconnaissance d’objets de classes multiples...
Deep Learning : Application à la reconnaissance d’objets de classes multiples...
 
C’est quoi l’UX -
C’est quoi l’UX -C’est quoi l’UX -
C’est quoi l’UX -
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Plateforme de gestion des projets de fin d'études
Plateforme de gestion des projets de fin d'étudesPlateforme de gestion des projets de fin d'études
Plateforme de gestion des projets de fin d'études
 
Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)
 
Pfe conception et développement d'une application web GMAO JEE
Pfe conception et développement d'une application web GMAO JEEPfe conception et développement d'une application web GMAO JEE
Pfe conception et développement d'une application web GMAO JEE
 
Introduction au traitement d'images
Introduction au traitement d'imagesIntroduction au traitement d'images
Introduction au traitement d'images
 
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...
 
application desktop pour la gestion d'une auto-ecole
application desktop pour la gestion d'une auto-ecoleapplication desktop pour la gestion d'une auto-ecole
application desktop pour la gestion d'une auto-ecole
 
Rapport de stage d'été
Rapport de stage d'étéRapport de stage d'été
Rapport de stage d'été
 
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
 
[FR] Intro aux basiques de Photoshop et Lightroom
[FR] Intro aux basiques de Photoshop et Lightroom[FR] Intro aux basiques de Photoshop et Lightroom
[FR] Intro aux basiques de Photoshop et Lightroom
 
conception de gestion d'une station de service
conception de gestion d'une station de service conception de gestion d'une station de service
conception de gestion d'une station de service
 

Destaque

Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation le langage SQLAlphorm
 
introduction au SQL et MySQL
introduction au SQL et MySQLintroduction au SQL et MySQL
introduction au SQL et MySQLAbdoulaye Dieng
 
alphorm.com - Formation SQL Server 2012 (70-462)
alphorm.com - Formation SQL Server 2012 (70-462)alphorm.com - Formation SQL Server 2012 (70-462)
alphorm.com - Formation SQL Server 2012 (70-462)Alphorm
 
Introduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudouxIntroduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudouxLaurent Broudoux
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm
 
Journées SQL Server - Optimisation SQL Server pour SharePoint
Journées SQL Server - Optimisation SQL Server pour SharePointJournées SQL Server - Optimisation SQL Server pour SharePoint
Journées SQL Server - Optimisation SQL Server pour SharePointBenoit Jester
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)Alphorm
 
Lorraine JUG (dec 2010) - NoSQL, des grands du Web aux entreprises
Lorraine JUG (dec 2010) - NoSQL, des grands du Web aux entreprisesLorraine JUG (dec 2010) - NoSQL, des grands du Web aux entreprises
Lorraine JUG (dec 2010) - NoSQL, des grands du Web aux entreprisesMichaël Figuière
 
Transforming Business in a Digital Era with Big Data and Microsoft
Transforming Business in a Digital Era with Big Data and MicrosoftTransforming Business in a Digital Era with Big Data and Microsoft
Transforming Business in a Digital Era with Big Data and MicrosoftPerficient, Inc.
 
Why Big Data is the foundation for Digital Transformation ?
Why Big Data is the foundation for Digital Transformation ?Why Big Data is the foundation for Digital Transformation ?
Why Big Data is the foundation for Digital Transformation ?Koray Sonmezsoy
 
PL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de donnéesPL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de donnéessmiste
 
NoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationNoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationMicrosoft Technet France
 
Présentation de l'Architecture de Développement du projet TRANS@ctions
Présentation de l'Architecture de Développement du projet TRANS@ctionsPrésentation de l'Architecture de Développement du projet TRANS@ctions
Présentation de l'Architecture de Développement du projet TRANS@ctionsFrédéric Sagez
 
2008-09-30 Présentation Générale SQL Server 2008
2008-09-30 Présentation Générale SQL Server 20082008-09-30 Présentation Générale SQL Server 2008
2008-09-30 Présentation Générale SQL Server 2008Patrick Guimonet
 

Destaque (20)

Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation le langage SQL
 
introduction au SQL et MySQL
introduction au SQL et MySQLintroduction au SQL et MySQL
introduction au SQL et MySQL
 
Le langage sql
Le langage sqlLe langage sql
Le langage sql
 
alphorm.com - Formation SQL Server 2012 (70-462)
alphorm.com - Formation SQL Server 2012 (70-462)alphorm.com - Formation SQL Server 2012 (70-462)
alphorm.com - Formation SQL Server 2012 (70-462)
 
Introduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudouxIntroduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudoux
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQL
 
Journées SQL Server - Optimisation SQL Server pour SharePoint
Journées SQL Server - Optimisation SQL Server pour SharePointJournées SQL Server - Optimisation SQL Server pour SharePoint
Journées SQL Server - Optimisation SQL Server pour SharePoint
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
 
Lorraine JUG (dec 2010) - NoSQL, des grands du Web aux entreprises
Lorraine JUG (dec 2010) - NoSQL, des grands du Web aux entreprisesLorraine JUG (dec 2010) - NoSQL, des grands du Web aux entreprises
Lorraine JUG (dec 2010) - NoSQL, des grands du Web aux entreprises
 
Transforming Business in a Digital Era with Big Data and Microsoft
Transforming Business in a Digital Era with Big Data and MicrosoftTransforming Business in a Digital Era with Big Data and Microsoft
Transforming Business in a Digital Era with Big Data and Microsoft
 
Why Big Data is the foundation for Digital Transformation ?
Why Big Data is the foundation for Digital Transformation ?Why Big Data is the foundation for Digital Transformation ?
Why Big Data is the foundation for Digital Transformation ?
 
PL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de donnéesPL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de données
 
NoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisationNoSql : conception des schémas, requêtage, et optimisation
NoSql : conception des schémas, requêtage, et optimisation
 
NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
 
Présentation de l'Architecture de Développement du projet TRANS@ctions
Présentation de l'Architecture de Développement du projet TRANS@ctionsPrésentation de l'Architecture de Développement du projet TRANS@ctions
Présentation de l'Architecture de Développement du projet TRANS@ctions
 
SQL Server
SQL ServerSQL Server
SQL Server
 
Sql
SqlSql
Sql
 
Sgbdr merise
Sgbdr meriseSgbdr merise
Sgbdr merise
 
LES JOINTURES
LES JOINTURESLES JOINTURES
LES JOINTURES
 
2008-09-30 Présentation Générale SQL Server 2008
2008-09-30 Présentation Générale SQL Server 20082008-09-30 Présentation Générale SQL Server 2008
2008-09-30 Présentation Générale SQL Server 2008
 

Le sql pour les nuls

  • 1. Faculté Polytechnique Le SQL pour les nuls Romain Cambier, Youness El Mouhafidi
  • 2. SQL ? 3 catégories de commandes :  DML (data manipulation language)  Lire, écrire, modifier, …  DDL (data definition language)  DCL (data control language) Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 2
  • 3. Table « students » Matricule Nom Prénom Option Année 001 Cambier Romain IG 3 002 El Mouhafidi Youness SDM 2 003 Honoré Marc IG 3 004 Baudinet Élodie MECA 3 005 Fontaine Simon IG 4 006 Kosciesza Kamil ELEC 4 007 Infantino Giuliano ELEC 5 008 Ozdemir Eren MINES 2 009 Colassin Benjamin MECA 5 010 Goudemant Thomas ELEC 2 011 Regnier Guillaume SDM 5 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 3
  • 4. DML: SELECT Utilité: récupérer des données Syntaxe: "SELECT #columns# FROM #table#" Exemples: Récupérer toutes les infos de tous les étudiants:  SELECT * FROM students Récupérer tous les noms & prénoms:  SELECT nom, prenom FROM students Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 4
  • 5. DML: SELECT Distinct: récupérer des données sans doublon Syntaxe: "SELECT DISTINCT #columns# FROM #table#" Exemples: « SELECT DISTINCT Name FROM Students » Id (BIGINT) Name Name (VARCHAR) (VARCHAR) 1 Riri Fifi 2 Fifi Riri 3 Riri Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 5
  • 6. DML: FONCTIONS Fonctions scalaires N entrées N sorties FONCTION SYNTAXE USAGE UPPER/UCASE UPPER(column) Renvoi le champs en majuscule LOWER/LCASE LOWER(column) Renvoi le champs en minuscule LENGTH/LEN LEN(column) Renvoi le nombre de caractères dans le champs ROUND ROUND(column, decimals) Renvoi les valeurs arrondies à la décimale la plus proche « SELECT #function(param)# AS #var# FROM #table# » Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 6
  • 7. DML: FONCTIONS Fonctions d’agrégat N entrées 1 sortie FONCTION SYNTAXE USAGE COUNT COUNT(*/(DISTINCT) column) Renvoi le nombre d’entrées AVG AVG(column) Renvoi la moyenne des entrées SUM SUM(column) Renvoi la somme des entrées MIN MIN(column) Renvoi la valeur minimum MAX MAX(column) Renvoi la valeur maximum FIRST FIRST(column) Renvoi la première entrée LAST LAST(column) Renvoi la dernière entrée « SELECT #function(param)# AS #var# FROM #table# » Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 7
  • 8. CLAUSES: WHERE Utilité: récupérer certaines données (condition) Syntaxe: "SELECT #columns# FROM #table#« WHERE #column# = #value# " Exemples: Récupérer tous les IG:  SELECT * FROM students WHERE option=‘IG’ Récupérer tous les noms des BA2:  SELECT nom FROM students WHERE annee=‘BA2’ Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 8
  • 9. CLAUSES: WHERE Opérateurs Comparatifs: <, <=, <>, >=, >, =, <=> Mathématiques: +, -, *, / Logiques: OR, AND, NOT, IS Valeurs: TRUE, FALSE, UNKNOWN, NULL, int, ‘char’ Exemple: « SELECT Id FROM Purchases WHERE (Stock IS NOT NULL) AND ((5*Price)>=25) » Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 9
  • 10. CLAUSES: WHERE Mots de contrôle Like: permet d’approximer une recherche. Note: ‘_’ remplace une lettre alors que ‘%’ remplace plusieurs lettres Exemple: « SELECT * FROM Students WHERE Name LIKE ‘Ro%’ » Id (BIGINT) Name (VARCHAR) Id (BIGINT) Name (VARCHAR) 1 Romain 1 Romain 2 Raoul 3 Robin 3 Robin 4 Marc Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 10
  • 11. CLAUSES: WHERE Mots de contrôle Contains: est l’équivalent de LIKE ‘%word%’. Exemple: « SELECT * FROM Students WHERE CONTAINS(Name, ‘o’) » Id (BIGINT) Name (VARCHAR) Id (BIGINT) Name (VARCHAR) 1 Romain 1 Romain 2 Raoul 2 Raoul 3 Robin 3 Robin 4 Marc Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 11
  • 12. CLAUSES: WHERE Mots de contrôle Between… And : permet d’obtenir un intervalle (bornes incluses) Exemple: « SELECT * FROM Purchases WHERE Date BETWEEN ‘20130101’ AND ‘20130315’ » Id Date(DATETIME) Article Id (BIGINT) Date(DATE Article(INT) (BIGINT) (INT) TIME) 1 2013-02-25 03:12:21 24 1 2013-02-25 24 2 2013-03-15 11:24:00 32 03:12:21 3 2013-05-12 08:00:50 12 2 2013-03-15 32 11:24:00 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 12
  • 13. CLAUSES: WHERE Id Id_student Moyenne Comment obtenir les 1 124 12 2 88 11 moyennes des étudiants de 3 62 7 Charleroi en une seule 4 12 15 requête? 5 73 9 Id Nom Ville 12 Derp Charleroi 62 Herp Mons 73 Lill’ Derp Charleroi 88 Derpina Mons 124 Derpington Mons Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 13
  • 14. CLAUSES: WHERE Id Id_student Moyenne En décomposant le problème en 1 124 12 sous-requêtes: 2 88 11 « SELECT * FROM Students 3 62 7 WHERE Ville=‘Charleroi’ » 4 12 15 5 73 9 + Id Nom Ville « SELECT Moyenne FROM Notes » 12 Derp Charleroi = 62 Herp Mons « SELECT Moyenne FROM Notes 73 Lill’ Derp Charleroi WHERE Id_student = (SELECT Id FROM Students WHERE 88 Derpina Mons Ville=‘Charleroi’) » 124 Derpington Mons Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 14
  • 15. CLAUSES: WHERE Queryception Les opérateurs de sous-requêtes Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 15
  • 16. CLAUSES: WHERE Mots de contrôle In: à la condition d’être inclus dans la liste. Peut être remplacé par ‘= Any’ Exemple: « SELECT * FROM Employees WHERE Salary IN (800,1300,1500) » Id (BIGINT) Name (CHAR) Salary(INT) Id (BIGINT) Name (CHAR) Salary(INT) 1 Miss Fortune 800 1 Miss Fortune 800 2 Garen 1500 2 Garen 1500 3 Viktor 2400 4 Shaco 950 5 Amumu 3100 6 Sona 1100 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 16
  • 17. CLAUSES: WHERE Mots de contrôle All: la condition doit être respectée pour toute la liste. L’intérêt est qu’on ne connait pas le résultat de la sous-requête. Exemple: « SELECT * FROM Employees WHERE Salary >ALL(950,1300,1500) » Id (BIGINT) Name (CHAR) Salary(INT) Id (BIGINT) Name (CHAR) Salary(INT) 1 Miss Fortune 800 3 Viktor 2400 2 Garen 1500 5 Amumu 3100 3 Viktor 2400 4 Shaco 950 5 Amumu 3100 6 Sona 1100 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 17
  • 18. CLAUSES: WHERE Mots de contrôle Any/Some: la condition doit être respectée pour au moins un élément de la liste. Exemple: « SELECT * FROM Employees WHERE Salary <ANY(950,1300,1500) » Id (BIGINT) Name (CHAR) Salary(INT) Id (BIGINT) Name (CHAR) Salary(INT) 1 Miss Fortune 800 1 Miss Fortune 800 2 Garen 1500 4 Shaco 950 3 Viktor 2400 6 Sona 1100 4 Shaco 950 5 Amumu 3100 6 Sona 1100 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 18
  • 19. CLAUSES: WHERE Mots de contrôle Exists: Renvoie un résultat si la condition de la sous-requête est vérifiée (possède au moins un résultat) Exemple: « SELECT * FROM Employees WHERE NOT EXISTS( SELECT * FROM Employees WHERE Salary < 4000) » Id (BIGINT) Name (CHAR) Salary(INT) Id (BIGINT) Name (CHAR) Salary(INT) 1 Miss Fortune 800 2 Garen 1500 3 Viktor 2400 4 Shaco 950 5 Amumu 3100 6 Sona 1100 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 19
  • 20. CLAUSES: GROUP BY Utilité: Regrouper les résultats d’une fonction d’agrégat Syntaxe: « SELECT #columns# #function()# FROM #table# GROUP BY #columns# » Exemples: SELECT Id_customer SUM(Price) FROM purchases GROUP BY Id_customer Id (BIGINT) Price (INT) Id_customer Id_customer SUM(Price) (INT) (BIGINT) (BIGINT) 1 50 1 1 80 2 80 2 2 100 3 60 3 3 60 4 30 1 5 20 2 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 20
  • 21. CLAUSES: ORDER BY Utilité: Ordonner les données affectées Syntaxe: « SELECT #columns# FROM #table# ORDER BY #columns# #ASC/DSC# Exemples: Récupérer les noms par ordre alphabétique SELECT nom FROM students ORDER BY nom ASC Récupérer les noms par ordre anti-alphabétique SELECT nom FROM students ORDER BY nom DSC Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 21
  • 22. CLAUSES: LIMIT Utilité: limiter le nombre de données affectées Syntaxe: « SELECT #columns# FROM #table# LIMIT #start#,#number# Exemples: Récupérer les noms des 5 plus vieux étudiants: SELECT nom FROM students ORDER BY annee DESC LIMIT 0,5 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 22
  • 23. DML: INSERT Utilité: insérer des données Syntaxe: « INSERT INTO #table#(#columns#) VALUES (#val1#, #val2#, …) Exemples: Insérer un étudiant:  INSERT INTO students(nom, prenom, option, annee) VALUES(‘Honore’, ‘Julie’, ‘GEN’, 1) = INSERT INTO students(prenom, option, nom, annee) VALUES(‘Julie’, ‘GEN’, ‘Honore’, 1) Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 23
  • 24. DML: UPDATE Utilité: modifier des données Syntaxe: « UPDATE #table# SET #colum# = #val# Exemples: Tout le monde réussit, et passe à l’année suivante:  UPDATE students SET annee = annee + 1 Youness (matricule = 2, en SDM) change d’option:  UPDATE students SET option = ‘IG’ WHERE mat = 2 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 24
  • 25. DML: DELETE Utilité: effacer des données Syntaxe: « DELETE FROM #table# Exemples: Julie (matricule = 12) abandonne polytech:  DELETE FROM students WHERE mat = 12 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 25
  • 26. Plus loin avec SQL ? Problème: Créons un « mini-moodle » : • On a une liste de cours avec titulaires/année • On a une liste de fichiers (liés aux cours) Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 26
  • 27. Table « cours » Id Nom Année Titulaire 001 Thermique BA3 Prof.A 002 Physique BA2 Prof.B 003 ITR MA1 Prof.C 004 BDD BA3 Prof.C Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 27
  • 28. Table « fichiers » Id Nom Taille Timestamp Cours 001 Formulaire_examen.pdf 2097152 … 1 002 Diagrames.pdf 9971418415 … 1 003 Video_effet_doppler.avi 58416483964 … 2 004 syllabus_optique.doc 6848851 … 2 005 Informatique_distribuee.pdf 6848468 … 3 006 Objectifs_cours_ITR 68413518 … 3 007 theorie_bdd_relationnelles.pdf 348441184 … 4 008 SQL_to_NoSQL.pdf 43874577 … 4 Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 28
  • 29. Plus loin avec SQL ? Cahier des charges: • Affichage des différents profs • Affichage des différents cours • Affichage des fichiers d’un cours • Affichage des fichiers par cours • Affichage des fichiers par année • Nombre de cours par prof • Nombre de fichiers par prof • Volume (stockage) utilisé par un prof Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 29
  • 30. Plus loin avec SQL ? Fonction: Affichage des différents profs SELECT Titulaire FROM Cours GROUP BY Titulaire Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 30
  • 31. Plus loin avec SQL ? Fonction: Affichage des différents cours SELECT Nom FROM Cours Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 31
  • 32. Plus loin avec SQL ? Fonction: Affichage des fichiers par cours SQL> SELECT Id AS cours_id, Nom AS cours_nom FROM Cours; for each cours_nom SQL> SELECT Nom FROM Fichiers WHERE Cours=cours_id end Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 32
  • 33. Les jointures à la rescousse ! Jointures ? Jointures ? Jointures ? Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 33
  • 34. Les jointures à la rescousse ! Jointures: « (…) la jointure est une opération qui consiste à effectuer un produit cartésien des enregistrements de deux tables (…) Le résultat de l'opération est une nouvelle table. » (wikipedia.org) « Une jointure (ou θ-jointure) est un produit cartésien de deux tables. » (commentcamarche.net) « Une jointure permet de lire des données depuis des tables liées. » (moi) Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 34
  • 35. Les jointures, c’est puissant !!! Fonction: Affichage des fichiers par cours SELECT * FROM Cours, Fichiers WHERE Fichiers.Cours = Cours.Id Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 35
  • 36. Plus loin avec SQL ? Fonction: Affichage des fichiers d’un cours SQL> SELECT Id AS cours_id FROM Cours WHERE Nom=‘Physique’; for each cours_id SQL> SELECT Nom FROM Fichiers WHERE Cours=cours_id end Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 36
  • 37. Les jointures, c’est puissant !!! Fonction: Affichage des fichiers d’un cours SELECT * FROM Cours, Fichiers WHERE (Cours.Nom=‘Physique’ AND Fichiers.Cours = Cours.Id) Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 37
  • 38. Les jointures, c’est puissant !!! Fonction: Affichage des fichiers par année SELECT Fichiers.Nom, Cours.annee FROM Cours, Fichiers WHERE Fichiers.Cours = Cours.Id ORDER BY Cours.Année Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 38
  • 39. Les jointures, c’est puissant !!! Fonction: Nombre de cours par prof SELECT COUNT(*), titulaire FROM Cours GROUP BY Titulaire ORDER BY Titulaire Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 39
  • 40. Les jointures, c’est puissant !!! Fonction: Nombre de fichiers par prof SELECT COUNT(Fichiers.ID), titulaire FROM Fichiers, Cours WHERE Fichiers.Cours=Cours.Id GROUP BY Cours.Titulaire ORDER BY Cours.Titulaire Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 40
  • 41. Les jointures, c’est puissant !!! Fonction: Volume (stockage) utilisé par un prof SELECT SUM(Fichiers.Taille), titulaire FROM Fichiers, Cours WHERE Fichiers.Cours=Cours.Id GROUP BY Cours.Titulaire ORDER BY Cours.Titulaire Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 41
  • 42. BONUS Affichez tous les fichiers auxquels à accès Romain Cambier (en ne connaissant que son nom/prénom) TIPS: CONCAT(‘a’, ‘b’) == ‘ab’ Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 42
  • 43. Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 43
  • 44. Et n’oubliez-pas… Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 44