ITSkillsCenter
Développement Web

Guide : Les bases de données MySQL pour débutants

4 min de lecture

MySQL : la base de données la plus populaire du web

MySQL stocke les données de 80% des sites web (WordPress, Facebook, Twitter). C’est une base de données relationnelle : les données sont organisées en tables avec des lignes et des colonnes, comme un tableur Excel structuré.

Installer et accéder à MySQL

# Avec XAMPP (Windows/Mac) : MySQL est inclus, lancez-le depuis le panneau de contrôle
# Accédez à phpMyAdmin : http://localhost/phpmyadmin

# En ligne de commande :
mysql -u root -p

Créer une base de données et une table

-- Créer la base de données
CREATE DATABASE ecole_formation;

-- L'utiliser
USE ecole_formation;

-- Créer une table "etudiants"
CREATE TABLE etudiants (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(100) NOT NULL,
    prenom VARCHAR(100) NOT NULL,
    email VARCHAR(150) UNIQUE,
    telephone VARCHAR(15),
    formation VARCHAR(100),
    date_inscription DATE DEFAULT CURRENT_DATE,
    actif BOOLEAN DEFAULT TRUE
);

-- Créer une table "formations"
CREATE TABLE formations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(150) NOT NULL,
    duree_heures INT,
    prix DECIMAL(10, 2),
    categorie VARCHAR(50)
);

📌 Types de données courants

Type Usage Exemple
INT Nombres entiers 25, 1000
VARCHAR(n) Texte court Noms, emails
TEXT Texte long Descriptions
DECIMAL(10,2) Prix, montants 15000.00 FCFA
DATE Dates 2024-03-15
BOOLEAN Vrai/Faux TRUE, FALSE

CRUD : les 4 opérations fondamentales

CREATE — Insérer des données

-- Insérer un étudiant
INSERT INTO etudiants (nom, prenom, email, telephone, formation)
VALUES ('Diallo', 'Mamadou', 'mamadou@email.com', '771234567', 'Développement Web');

-- Insérer plusieurs en une fois
INSERT INTO etudiants (nom, prenom, email, formation) VALUES
    ('Ndiaye', 'Fatou', 'fatou@email.com', 'Marketing Digital'),
    ('Sow', 'Ibrahima', 'ibrahima@email.com', 'Cybersécurité'),
    ('Ba', 'Aissatou', 'aissatou@email.com', 'Design UX');

READ — Lire les données

-- Tous les étudiants
SELECT * FROM etudiants;

-- Colonnes spécifiques
SELECT nom, prenom, formation FROM etudiants;

-- Avec condition (WHERE)
SELECT * FROM etudiants WHERE formation = 'Développement Web';

-- Tri (ORDER BY)
SELECT * FROM etudiants ORDER BY nom ASC;

-- Limiter les résultats
SELECT * FROM etudiants LIMIT 10;

-- Recherche partielle (LIKE)
SELECT * FROM etudiants WHERE nom LIKE 'Di%';  -- Commence par "Di"
SELECT * FROM etudiants WHERE email LIKE '%gmail.com';  -- Termine par gmail.com

-- Compter
SELECT COUNT(*) AS total FROM etudiants;
SELECT formation, COUNT(*) AS nombre FROM etudiants GROUP BY formation;

UPDATE — Modifier des données

-- Modifier un étudiant (par son ID)
UPDATE etudiants SET telephone = '781234567' WHERE id = 1;

-- Modifier plusieurs champs
UPDATE etudiants 
SET formation = 'IA & Data Science', actif = TRUE 
WHERE email = 'mamadou@email.com';

-- ⚠️ TOUJOURS utiliser WHERE sinon TOUS les enregistrements sont modifiés !

DELETE — Supprimer des données

-- Supprimer un étudiant
DELETE FROM etudiants WHERE id = 5;

-- Supprimer les inactifs
DELETE FROM etudiants WHERE actif = FALSE;

-- ⚠️ TOUJOURS utiliser WHERE sinon TOUTE la table est vidée !

Les JOIN : relier les tables entre elles

-- Ajouter une clé étrangère
ALTER TABLE etudiants ADD formation_id INT;
ALTER TABLE etudiants ADD FOREIGN KEY (formation_id) REFERENCES formations(id);

-- JOIN : récupérer étudiants avec le nom de leur formation
SELECT e.nom, e.prenom, f.nom AS formation, f.prix
FROM etudiants e
INNER JOIN formations f ON e.formation_id = f.id;

-- LEFT JOIN : tous les étudiants, même sans formation
SELECT e.nom, e.prenom, f.nom AS formation
FROM etudiants e
LEFT JOIN formations f ON e.formation_id = f.id;

Requêtes utiles au quotidien

-- Étudiants inscrits ce mois
SELECT * FROM etudiants 
WHERE MONTH(date_inscription) = MONTH(CURRENT_DATE)
AND YEAR(date_inscription) = YEAR(CURRENT_DATE);

-- Formation la plus populaire
SELECT formation, COUNT(*) AS inscrits 
FROM etudiants 
GROUP BY formation 
ORDER BY inscrits DESC 
LIMIT 1;

-- Chiffre d'affaires par formation
SELECT f.nom, f.prix, COUNT(e.id) AS inscrits, 
       f.prix * COUNT(e.id) AS chiffre_affaires
FROM formations f
LEFT JOIN etudiants e ON e.formation_id = f.id
GROUP BY f.id;

⚠️ Sécurité : injections SQL

Ne JAMAIS insérer directement des données utilisateur dans une requête :

// ❌ DANGEREUX (injection SQL possible)
$sql = "SELECT * FROM etudiants WHERE email = '$email'";

// ✅ SÉCURISÉ (requête préparée)
$stmt = $pdo->prepare("SELECT * FROM etudiants WHERE email = ?");
$stmt->execute([$email]);

Exercice pratique

🎯 Défi : Base de données pour un centre de formation

  1. Créez les tables : formations, etudiants, inscriptions
  2. Insérez 5 formations et 10 étudiants
  3. Écrivez une requête JOIN pour lister chaque étudiant avec sa formation
  4. Comptez le nombre d’étudiants par formation
  5. Trouvez la formation la plus chère et la moins chère
#base de données #mysql #sql
Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 350.000 FCFA
Parlons de Votre Projet
Publicité

Articles Similaires