Introduction aux bases de données relationnelles
MySQL est un Système de Gestion de Base de Données Relationnelle (SGBDR) open source. Les données sont organisées en tables (comme des feuilles de tableur), chaque table ayant des colonnes (attributs) et des lignes (enregistrements).
| Terme | Définition |
|---|---|
| Table | Ensemble structuré de données sur un même sujet (ex : utilisateurs) |
| Colonne | Un attribut de la table (ex : email, nom) |
| Ligne (enregistrement) | Une entrée précise dans la table |
| Clé primaire | Colonne qui identifie de façon unique chaque ligne |
Créer une base de données et des tables (DDL)
password_hash() en PHP avant l'insertion, et VARCHAR(255) pour laisser assez de place au hash.Types de données MySQL
| Type | Usage |
|---|---|
INT | Nombre entier |
DECIMAL(8,2) | Nombre décimal précis (ex : prix, montants) |
VARCHAR(n) | Chaîne de texte de longueur variable, max n caractères |
TEXT | Long texte (article, message) |
DATE / DATETIME | Date seule / date + heure |
BOOLEAN | Vrai/faux (stocké comme TINYINT 0/1) |
VARCHAR(150) suffit largement pour un email.CRUD : Insérer, lire, modifier, supprimer
UPDATE ou DELETE sans clause WHERE s'applique à toutes les lignes de la table — vérifiez toujours avant d'exécuter.WHERE, ORDER BY, JOIN et fonctions d'agrégation
| Type de JOIN | Retourne |
|---|---|
| INNER JOIN | Uniquement les lignes qui correspondent dans les deux tables |
| LEFT JOIN | Toutes les lignes de la table de gauche, correspondance ou non |
Relations entre tables et clés étrangères
Une base bien conçue évite de dupliquer l'information : on la répartit dans plusieurs tables reliées par des clés étrangères (foreign key).
ON DELETE CASCADE supprime automatiquement les messages liés si l'utilisateur correspondant est supprimé — évite les données orphelines.
Sécurité et bonnes pratiques
La faille la plus fréquente sur les sites mal sécurisés est l'injection SQL : insérer du code SQL dans un champ de formulaire pour manipuler la base.
- Toujours utiliser des requêtes préparées (voir cours PHP) plutôt que de concaténer des chaînes SQL
- Créer un utilisateur MySQL dédié par application, avec des droits limités (pas
root) - Sauvegarder régulièrement la base avec
mysqldump - Ne jamais exposer les identifiants de connexion dans un fichier accessible publiquement
cours (id, titre, niveau, duree) et une table inscriptions (id, utilisateur_id, cours_id, date_inscription) avec les clés étrangères adéquates. Écrivez la requête qui liste le nom de chaque utilisateur avec le titre de chaque cours auquel il est inscrit.Exercices & Quiz de vérification
Testez vos connaissances avant de passer au cours suivant. Chaque question a une correction détaillée à dérouler.
1. Quelle instruction permet d'ajouter une nouvelle ligne dans une table ?
- A. UPDATE
- B. INSERT INTO
- C. ADD ROW
Voir la correction
Réponse : B. INSERT INTO table (...) VALUES (...) ajoute un nouvel enregistrement.
2. Que se passe-t-il si on exécute un DELETE sans clause WHERE ?
- A. Rien, MySQL bloque l'opération
- B. Toutes les lignes de la table sont supprimées
- C. Seule la première ligne est supprimée
Voir la correction
Réponse : B. Sans condition, l'instruction s'applique à l'intégralité de la table — d'où l'importance de toujours vérifier son WHERE avant d'exécuter.
3. Quel type de clé garantit qu'une valeur de colonne est unique et identifie une ligne ?
- A. Clé primaire
- B. Clé étrangère
- C. Index secondaire
Voir la correction
Réponse : A. La clé primaire (PRIMARY KEY) identifie de manière unique chaque enregistrement de la table.
4. Qu'est-ce que l'injection SQL ?
- A. Une méthode d'optimisation de requêtes
- B. Une attaque exploitant une entrée utilisateur non filtrée pour manipuler la base
- C. Un type de sauvegarde
Voir la correction
Réponse : B. Elle se prévient avec des requêtes préparées et une validation stricte des entrées utilisateur.