Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

Partie 2 · SQL de base

MySQL, le modèle relationnel et l'algèbre

Une base de données est une collection structurée de données (de la liste de courses à l'information d'un réseau d'entreprise). Pour y ajouter, accéder et traiter des données, il faut un SGBD (système de gestion de base de données). MySQL en est un : sa première version est apparue le 23 mai 1995. Son nom vient de My, la fille du cofondateur Monty Widenius ; son dauphin s'appelle Sakila.

  • MySQL est relationnel : les données sont stockées dans des tables séparées, avec des règles (un-à-un, un-à-plusieurs, unique, obligatoire ou facultatif…) qui empêchent les données incohérentes, en double, orphelines ou manquantes.
  • Le SQL (Structured Query Language) est le langage normalisé le plus courant pour accéder aux bases ; défini par la norme ANSI/ISO, qui évolue depuis 1986 (SQL-92, SQL:1999, SQL:2003).
  • MySQL est Open Source (licence GPL) ; une version commerciale existe si la GPL ne convient pas.

Comment on y accède : les clients se connectent par TCP/IP (ou tubes nommés / mémoire partagée sous Windows, sockets Unix), avec des API pour C, C++, Java, Perl, PHP, Python, Ruby…, des connecteurs ODBC, JDBC (Connector/J) ou .NET, et des outils comme mysqldump, mysqladmin ou MySQL Workbench.

Vérifie que tu as compris

Que signifie « SQL » dans MySQL ?

Le jargon du modèle relationnel

TermeDéfinition du cours
Domaineensemble des valeurs d'un attribut
Relationsous-ensemble du produit cartésien d'une liste de domaines : en pratique un tableau à deux dimensions (colonnes = domaines, lignes = tuples), chaque colonne ayant un nom
Attributune colonne d'une relation, caractérisée par un nom
Tupleliste des valeurs d'une ligne (aussi appelée enregistrement)

Exemple : la relation Personne a pour attributs nom, prénom, adresse, téléphone. Une relation ressemble à une classe qui n'aurait que des attributs, chaque tuple étant une instance.

L'algèbre relationnelle : trois opérations

OpérationEffetRequête du cours
Projectiongarde certaines colonnesSELECT nom, prénom FROM Personnes
Sélectiongarde certaines lignes (critère sur les valeurs)SELECT * FROM Personnes WHERE nom = 'Dupond'
Jointurefabrique une relation à partir de plusieurs, via une colonne pivotSELECT Personnes.prénom, dernierlivre FROM Personnes, Bibliothèque WHERE Personnes.nom = Bibliothèque.nom

Pour la jointure, préfixe les colonnes par le nom de la table dès que deux tables ont une colonne du même nom (ambiguïté).

À toi de coder

Projection : nom et prénom

La projection garde seulement certaines colonnes d'une relation et ignore les autres, mais elle ne filtre aucune ligne. La base en mémoire contient la table Personnes(id, nom, prenom, adresse, telephone) avec 4 personnes (elle est créée pour toi dans le code).

Complète la requête pour ne projeter que nom puis prenom. Le résultat est dans res. (Les exercices tournent avec SQLite, le cours présente MySQL : la syntaxe de base est la même.)

Ctrl/⌘+Entrée

Vérifie que tu as compris

Que fait une projection ?

Où vit MySQL dans une application web ?

Rappel MySQL + PHP (architecture à trois niveaux) : 1) le client demande la page PHP au serveur ; 2) PHP se connecte à MySQL et demande la liste des contacts ; 3) MySQL répond au serveur PHP ; 4) PHP renvoie la page au client en HTML ; 5) le navigateur interprète la page.