Cours PHP pour Débutants

Module 3 : Introduction à MySQL

Niveau : Intermédiaire

Pourquoi apprendre MySQL ?

MySQL en quelques chiffres

  • 2ème système de gestion de base de données le plus utilisé au monde
  • Utilisé par Facebook, YouTube, Twitter, WordPress
  • Plus de 20 ans d'existence (créé en 1995)
  • Open-source et gratuit

Concepts fondamentaux

  • Base de données relationnelle - Données organisées en tables
  • SQL - Langage de requête structuré
  • Tables - Collections de données organisées en lignes et colonnes
  • Relations - Liens logiques entre les tables

1. Concepts des Bases de Données

Structure d'une Base de Données

Exemple de schéma de base de données

utilisateurs
id INT (PK)
nom VARCHAR
email VARCHAR
date_inscription DATETIME
articles
id INT (PK)
auteur_id INT (FK)
titre VARCHAR
contenu TEXT
date_publication DATETIME
commentaires
id INT (PK)
article_id INT (FK)
utilisateur_id INT (FK)
texte TEXT
date_commentaire DATETIME

Tables

Structure principale qui contient les données, comparable à une feuille de calcul avec des lignes (enregistrements) et des colonnes (champs).

Clé Primaire (PK)

Identifiant unique pour chaque enregistrement dans une table. Souvent un champ id auto-incrémenté.

Clé Étrangère (FK)

Champ qui fait référence à une clé primaire dans une autre table, établissant une relation entre les tables.

2. SQL de Base

Commandes SQL Essentielles

CRUD - Les 4 opérations fondamentales

  • CREATE - Insérer des données
  • READ - Lire des données
  • UPDATE - Mettre à jour des données
  • DELETE - Supprimer des données

Syntaxe de base

-- Structure générale d'une requête SQL
SELECT colonnes
FROM table
WHERE condition
ORDER BY colonne
LIMIT nombre;

Exemples de Requêtes

Création de table

CREATE TABLE utilisateurs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    mot_de_passe VARCHAR(255) NOT NULL,
    date_inscription DATETIME DEFAULT CURRENT_TIMESTAMP
);

Insertion de données

INSERT INTO utilisateurs (nom, email, mot_de_passe)
VALUES ('Alice', 'alice@exemple.com', 'motdepassehashé');

Sélection de données

-- Sélectionner tous les utilisateurs
SELECT * FROM utilisateurs;

-- Sélectionner avec conditions
SELECT nom, email FROM utilisateurs 
WHERE date_inscription > '2023-01-01'
ORDER BY nom ASC
LIMIT 10;

Mise à jour et suppression

-- Mettre à jour un utilisateur
UPDATE utilisateurs 
SET email = 'nouvel@email.com'
WHERE id = 1;

-- Supprimer un utilisateur
DELETE FROM utilisateurs
WHERE id = 5;

3. Types de Données et Contraintes

Types de Données Courants

Type Description Exemple
INT Nombre entier 42
VARCHAR(n) Chaîne de caractères (max n) "Bonjour"
TEXT Texte long "Lorem ipsum..."
DATE Date (sans heure) "2023-05-15"
DATETIME Date et heure "2023-05-15 14:30:00"
BOOLEAN Vrai/Faux TRUE

Contraintes de Table

PRIMARY KEY

Identifiant unique pour chaque ligne

FOREIGN KEY

Référence à une clé primaire dans une autre table

UNIQUE

Valeur doit être unique dans la colonne

NOT NULL

La colonne ne peut pas être vide

DEFAULT

Valeur par défaut si non spécifiée

AUTO_INCREMENT

Incrémente automatiquement (pour les PK)

Exemple Complet

CREATE TABLE commandes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    utilisateur_id INT NOT NULL,
    date_commande DATETIME DEFAULT CURRENT_TIMESTAMP,
    montant DECIMAL(10,2) NOT NULL,
    statut VARCHAR(20) DEFAULT 'en attente',
    FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs(id)
);

Exercice Pratique

Création d'une Base de Données pour un Blog

Créez un schéma de base de données pour un blog simple avec :

  1. Une table utilisateurs pour stocker les auteurs
  2. Une table articles pour les posts du blog
  3. Une table commentaires pour les réactions des lecteurs
  4. Une table categories pour classer les articles
  5. Une table de jointure article_categorie pour la relation many-to-many

Solution