Faculté PolytechniqueLe SQL pour les nulsRomain Cambier, Youness El Mouhafidi
SQL ?   3 catégories de commandes :    DML (data manipulation language)       Lire, écrire, modifier, …    DDL (data de...
Table « students »   Matricule         Nom                     Prénom                   Option         Année   001        ...
DML: SELECT   Utilité: récupérer des données   Syntaxe: "SELECT #columns# FROM #table#"   Exemples:   Récupérer toutes les...
DML: SELECT   Distinct: récupérer des données sans doublon   Syntaxe: "SELECT DISTINCT #columns# FROM #table#"   Exemples:...
DML: FONCTIONS   Fonctions scalaires   N entrées N sorties   FONCTION          SYNTAXE                                  US...
DML: FONCTIONS   Fonctions d’agrégat   N entrées 1 sortie  FONCTION      SYNTAXE                                      USAG...
CLAUSES: WHERE   Utilité: récupérer certaines données (condition)   Syntaxe: "SELECT #columns# FROM #table#« WHERE   #colu...
CLAUSES: WHERE   Opérateurs   Comparatifs: <, <=, <>, >=, >, =, <=>   Mathématiques: +, -, *, /   Logiques: OR, AND, NOT, ...
CLAUSES: WHERE   Mots de contrôle   Like: permet d’approximer une recherche.   Note: ‘_’ remplace une lettre alors que ‘%’...
CLAUSES: WHERE   Mots de contrôle   Contains: est l’équivalent de LIKE ‘%word%’.   Exemple:   « SELECT * FROM Students WHE...
CLAUSES: WHERE     Mots de contrôle     Between… And : permet d’obtenir un intervalle     (bornes incluses)     Exemple:  ...
CLAUSES: WHERE    Id   Id_student      Moyenne                                                  Comment obtenir les    1  ...
CLAUSES: WHERE    Id   Id_student      Moyenne              En décomposant le problème en    1    124             12      ...
CLAUSES: WHERE     Queryception     Les opérateurs de sous-requêtesUniversité de Mons   Le SQL pour les nuls | Romain Camb...
CLAUSES: WHERE      Mots de contrôle      In: à la condition d’être inclus dans la liste.      Peut être remplacé par ‘= A...
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 conna...
CLAUSES: WHERE  Mots de contrôle  Any/Some: la condition doit être respectée pour au moins un  élément de la liste.  Exemp...
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...
CLAUSES: GROUP BY   Utilité: Regrouper les résultats d’une fonction d’agrégat   Syntaxe: « SELECT #columns# #function()# F...
CLAUSES: ORDER BY   Utilité: Ordonner les données affectées   Syntaxe: « SELECT #columns# FROM #table# ORDER   BY #columns...
CLAUSES: LIMIT   Utilité: limiter le nombre de données affectées   Syntaxe: « SELECT #columns# FROM #table# LIMIT   #start...
DML: INSERT   Utilité: insérer des données   Syntaxe: « INSERT INTO #table#(#columns#) VALUES   (#val1#, #val2#, …)   Exem...
DML: UPDATE   Utilité: modifier des données   Syntaxe: « UPDATE #table# SET #colum# = #val#   Exemples:   Tout le monde ré...
DML: DELETE   Utilité: effacer des données   Syntaxe: « DELETE FROM #table#   Exemples:   Julie (matricule = 12) abandonne...
Plus loin avec SQL ?   Problème: Créons un « mini-moodle » :   • On a une liste de cours avec titulaires/année   • On a un...
Table « cours »   Id                    Nom                             Année                      Titulaire   001        ...
Table « fichiers »    Id                Nom                                  Taille                   Timestamp       Cour...
Plus loin avec SQL ?   Cahier des charges:   • Affichage des différents profs   • Affichage des différents cours   • Affic...
Plus loin avec SQL ?   Fonction: Affichage des différents profs          SELECT Titulaire FROM Cours GROUP BY TitulaireUni...
Plus loin avec SQL ?   Fonction: Affichage des différents cours                              SELECT Nom FROM CoursUniversi...
Plus loin avec SQL ?   Fonction: Affichage des fichiers par cours    SQL> SELECT Id AS cours_id, Nom AS cours_nom FROM Cou...
Les jointures à la rescousse !                                         Jointures ?                                      Jo...
Les jointures à la rescousse !   Jointures:   « (…) la jointure est une opération qui consiste à     effectuer un produit ...
Les jointures, c’est puissant !!!   Fonction: Affichage des fichiers par cours               SELECT * FROM Cours, Fichiers...
Plus loin avec SQL ?   Fonction: Affichage des fichiers d’un cours SQL> SELECT Id AS cours_id FROM Cours WHERE Nom=‘Physiq...
Les jointures, c’est puissant !!!   Fonction: Affichage des fichiers d’un cours            SELECT * FROM Cours, Fichiers W...
Les jointures, c’est puissant !!!   Fonction: Affichage des fichiers par année   SELECT Fichiers.Nom, Cours.annee FROM Cou...
Les jointures, c’est puissant !!!   Fonction: Nombre de cours par prof SELECT COUNT(*), titulaire FROM Cours GROUP BY Titu...
Les jointures, c’est puissant !!!   Fonction: Nombre de fichiers par prof  SELECT COUNT(Fichiers.ID), titulaire FROM Fichi...
Les jointures, c’est puissant !!!   Fonction: Volume (stockage) utilisé par un prof  SELECT SUM(Fichiers.Taille), titulair...
BONUS        Affichez tous les fichiers auxquels à accès        Romain Cambier (en ne connaissant que son                 ...
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
Prochain SlideShare
Chargement dans…5
×

Le sql pour les nuls

18 642 vues

Publié le

Un simple petit cours sur les BASES du SQL que j'ai pu donner récemment à des étudiants de troisième bachelier (Ingénieurs Civils, orientation Informatique & Gestion)

0 commentaire
28 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
18 642
Sur SlideShare
0
Issues des intégrations
0
Intégrations
17
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
28
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Le sql pour les nuls

  1. 1. Faculté PolytechniqueLe SQL pour les nulsRomain Cambier, Youness El Mouhafidi
  2. 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. 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 5Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 3
  4. 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 studentsUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 4
  5. 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 RiriUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 5
  6. 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. 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. 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. 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. 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 MarcUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 10
  11. 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 MarcUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 11
  12. 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:00Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 12
  13. 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 MonsUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 13
  14. 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 MonsUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 14
  15. 15. CLAUSES: WHERE Queryception Les opérateurs de sous-requêtesUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 15
  16. 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 1100Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 16
  17. 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 1100Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 17
  18. 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 1100Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 18
  19. 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 1100Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 19
  20. 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 2Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 20
  21. 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 DSCUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 21
  22. 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,5Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 22
  23. 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. 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 = 2Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 24
  25. 25. DML: DELETE Utilité: effacer des données Syntaxe: « DELETE FROM #table# Exemples: Julie (matricule = 12) abandonne polytech:  DELETE FROM students WHERE mat = 12Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 25
  26. 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. 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.CUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 27
  28. 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 … 4Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 28
  29. 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 profUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 29
  30. 30. Plus loin avec SQL ? Fonction: Affichage des différents profs SELECT Titulaire FROM Cours GROUP BY TitulaireUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 30
  31. 31. Plus loin avec SQL ? Fonction: Affichage des différents cours SELECT Nom FROM CoursUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 31
  32. 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 endUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 32
  33. 33. Les jointures à la rescousse ! Jointures ? Jointures ? Jointures ?Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 33
  34. 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 lopé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. 35. Les jointures, c’est puissant !!! Fonction: Affichage des fichiers par cours SELECT * FROM Cours, Fichiers WHERE Fichiers.Cours = Cours.IdUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 35
  36. 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 endUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 36
  37. 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. 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éeUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 38
  39. 39. Les jointures, c’est puissant !!! Fonction: Nombre de cours par prof SELECT COUNT(*), titulaire FROM Cours GROUP BY Titulaire ORDER BY TitulaireUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 39
  40. 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.TitulaireUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 40
  41. 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.TitulaireUniversité de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 41
  42. 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. 43. Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 43
  44. 44. Et n’oubliez-pas…Université de Mons Le SQL pour les nuls | Romain Cambier & Youness El Mouhafidi 44

×