SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objetAmir Souissi
 
Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheMohamed Heny SELMI
 
Introduction aux bases de données
Introduction aux bases de donnéesIntroduction aux bases de données
Introduction aux bases de donnéesAbdoulaye Dieng
 
Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI Mansouri Khalifa
 
Atelier 3 gestion de bases de données sous odoo
Atelier 3 gestion de bases de données sous odooAtelier 3 gestion de bases de données sous odoo
Atelier 3 gestion de bases de données sous odooAbdelouahed Abdou
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac Amri Ossama
 
Cours Base de données relationnelles
Cours Base de données relationnellesCours Base de données relationnelles
Cours Base de données relationnellesAymen Kasmi
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfslimyaich3
 
Expose linux gestion des processus
Expose linux  gestion des processusExpose linux  gestion des processus
Expose linux gestion des processusFatima Zahra Fagroud
 
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI Mansouri Khalifa
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
introduction au SQL et MySQL
introduction au SQL et MySQLintroduction au SQL et MySQL
introduction au SQL et MySQLAbdoulaye Dieng
 
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI Mansouri Khalifa
 
Pl/sql - interaction avec la base de données & structures de contrôle
Pl/sql  - interaction avec la base de données & structures de contrôlePl/sql  - interaction avec la base de données & structures de contrôle
Pl/sql - interaction avec la base de données & structures de contrôleAbdelouahed Abdou
 

Tendances (20)

introduction à la modélisation objet
introduction à la modélisation objetintroduction à la modélisation objet
introduction à la modélisation objet
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de recherche
 
Introduction aux bases de données
Introduction aux bases de donnéesIntroduction aux bases de données
Introduction aux bases de données
 
Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI
 
Atelier 3 gestion de bases de données sous odoo
Atelier 3 gestion de bases de données sous odooAtelier 3 gestion de bases de données sous odoo
Atelier 3 gestion de bases de données sous odoo
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac
 
Cours Base de données relationnelles
Cours Base de données relationnellesCours Base de données relationnelles
Cours Base de données relationnelles
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
Expose linux gestion des processus
Expose linux  gestion des processusExpose linux  gestion des processus
Expose linux gestion des processus
 
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
UML
UMLUML
UML
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
introduction au SQL et MySQL
introduction au SQL et MySQLintroduction au SQL et MySQL
introduction au SQL et MySQL
 
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
 
Programmation shell
Programmation shellProgrammation shell
Programmation shell
 
Pl/sql - interaction avec la base de données & structures de contrôle
Pl/sql  - interaction avec la base de données & structures de contrôlePl/sql  - interaction avec la base de données & structures de contrôle
Pl/sql - interaction avec la base de données & structures de contrôle
 

En vedette

Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation le langage SQLAlphorm
 
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
 
NOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQLNOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQLRamakant Soni
 
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...Patrick Guimonet
 

En vedette (20)

Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation 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
 
NOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQLNOSQL- Presentation on NoSQL
NOSQL- Presentation on NoSQL
 
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
2008-10-02 Paris - Administration des applications critiques avec SQL Server ...
 

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