Med Learning
  • Accueil
  • Cours
  • Formation OFPPT
  • Roadmaps
  • Projets
  • Articles
  • Contact
Med Learning

La plateforme d’apprentissage structurée pour les étudiants OFPPT et les autodidactes.

  • medlearning905@gmail.com
  • 06 87 49 76 05
  • @medle_arning

Navigation

  • Accueil
  • Cours
  • Roadmaps
  • Projets pratiques
  • Classement
  • Articles
  • Contact

Formation OFPPT

  • 1ère année
  • 2ème année
  • Filière Full Stack
  • Filière Mobile
  • Cours, TP, EFM et EFF

Mon compte

  • Connexion
  • Créer un compte
  • Mon espace
  • Mot de passe oublié

Med Learning a été créé par Anas Mounchit à la mémoire de son frère Mohammed Maadallah. Ce site est une sadaqa jariya pour lui : chaque leçon apprise ici, chaque ligne de code écrite, est une bonne action qui continue de l’accompagner.

Si Med Learning t’a aidé, pense à lui dans tes prières.

Qu’Allah lui accorde Sa miséricorde et l’accueille dans Son vaste paradis. رحمه الله

© 2026 Med Learning — Fait au Maroc, pour les étudiants.

ConfidentialitéContact & FAQ
Retour au cours

Gérer les données avec MySQL

Crée un compte pour sauvegarder ta progression.

  • 1.1 Rappeler le langage de manipulation des données (SQL)
  • 1.2 Le langage procédural de MySQL et les types de programmes
  • 1.3 Maîtriser les instructions de base
  • 1.4 Maîtriser les structures de contrôle
  • 1.5 Gérer les transactions
  • 1.6 Gérer les exceptions
  • 1.7 Manipuler les curseurs
  • 1.8 Créer les procédures stockées et les fonctions (synthèse)
  • 1.9 Mettre en place les déclencheurs (triggers)
CoursGérer les données avec MySQLModule 1
01

Module 1Maîtriser le langage de programmation procédurale sous MySQL

Chapitre 1 sur 12

Rappeler le langage de manipulation des données (SQL)

Le LDD (CREATE, ALTER, DROP), les requêtes SELECT et les jointures, les vues, les tables temporaires et le LMD (INSERT, UPDATE, DELETE).

  • ≈ 105 min
  • 3 leçons
  • 9 vidéos
  • 3 exercices
  • TP

Objectifs

Avec ce chapitre, tu sauras…

  • créer et supprimer une base et une table (LDD : CREATE, DROP, ALTER) ;
  • interroger les données avec SELECT : filtre, tri, jointure ;
  • enregistrer une requête dans une vue ;
  • utiliser une table temporaire ;
  • ajouter, modifier et supprimer des lignes (LMD : INSERT, UPDATE, DELETE).

Le SQL se découpe en familles d'instructions :

Famille Rôle Instructions
LDD (Langage de Définition de Données) créer la structure : bases, tables, colonnes CREATE, ALTER, DROP
LID (Langage d'Interrogation de Données) lire les données SELECT
LMD (Langage de Manipulation de Données) modifier les données INSERT, UPDATE, DELETE

Au programme

  1. Objectifs
  2. 1.Le langage de définition de données (LDD)
  3. 2.Le langage d'interrogation de données (LID)
  4. 3.Le langage de manipulation de données (LMD)
  5. TP · La vue et la table temporaire
  6. Exercices corrigés
  7. L'essentiel
1

Leçon 1

Le langage de définition de données (LDD)

Créer et supprimer une base de données

sql
CREATE DATABASE nom_de_la_base;
CREATE DATABASE eshop_app_db;

DROP DATABASE nom_de_la_base;
DROP DATABASE `eshop_app_db`;

Les accents graves ` entourent un nom de base, de table ou de colonne. Ils sont obligatoires seulement si le nom contient un espace ou un mot réservé.

Créer une table

Syntaxe
sql
USE nom_de_la_base;
CREATE TABLE nom_de_la_table (
  nom_champ1 type_champ1(longueur) attributs,
  nom_champ2 type_champ2(longueur) attributs, ...
  type_clé1 nom_clé1,
  type_clé2 nom_clé2, ...
)
ENGINE = moteur_bd;
Exemple : la table clients
sql
CREATE TABLE clients (
  id INT NOT NULL AUTO_INCREMENT,
  nom CHAR(50) NOT NULL,
  prenom CHAR(40),
  date_naissance DATE,
  adresse VARCHAR(50) DEFAULT 'Agadir',
  PRIMARY KEY (id)
)
ENGINE = InnoDB;
ÉlémentSignification
INT, CHAR(50), VARCHAR(50), DATEle type de la colonne (entier, texte de longueur fixe, texte de longueur variable, date)
NOT NULLla colonne est obligatoire
AUTO_INCREMENTMySQL donne lui-même la valeur suivante (1, 2, 3…)
DEFAULT 'Agadir'la valeur mise si on n'en donne pas
PRIMARY KEY (id)la clé primaire : identifie chaque ligne de façon unique
ENGINE = InnoDBle moteur de stockage. InnoDB gère les transactions et les clés étrangères (chapitre 5)

Piège classique

Dans le résumé

L'exemple du résumé commence par CREATE DATABASE clients ( : c'est CREATE TABLE clients ( qu'il faut écrire (on crée une table, pas une base). La valeur par défaut est écrite ‘’Agadir’’ (deux apostrophes typographiques) : en SQL, une chaîne s'écrit entre apostrophes droites : 'Agadir'.

Remarque : pour créer une table qui a la même structure qu'une autre (les données ne sont pas copiées) :

sql
CREATE TABLE nouvelle_table LIKE ancienne_table;

Vidéo · À regarder

FR

Base de données : MySQL et le langage de définition des données

Algomius · YouTube

Regarde de 2:46 à 9:336 min 47 s
Ouvrir sur YouTube à 2:46

Ce que tu vas voir (7 min) : les chapitres « Création de table - CREATE », « Types de colonne », « Suppression de table - DROP ». Le formateur crée une table avec CREATE TABLE, présente les types de colonnes, supprime la table avec DROP, puis refait la même chose dans MySQL Workbench.

Vidéo · À regarder

FR

Base de données : MySQL et le langage de définition des données

Algomius · YouTube

Regarde de 14:44 à 32:3817 min 54 s
Ouvrir sur YouTube à 14:44

Ce que tu vas voir (18 min) : les chapitres « Clé primaire », « Colonne auto-incrémentale », « Clé étrangère ». Il ajoute une clé primaire, une colonne AUTO_INCREMENT et une clé étrangère : les attributs de la table clients.

Supprimer une table

L'instruction DROP TABLE supprime une table existante (sa structure et ses données) :

sql
DROP TABLE nom_table;
DROP TABLE `clients`;

Modifier une table

L'instruction ALTER TABLE ajoute, supprime ou modifie des colonnes d'une table existante. Elle ajoute ou supprime aussi des contraintes.

sql
ALTER TABLE clients
ADD Email varchar(255);                                -- ajouter une colonne

ALTER TABLE clients
ADD pays VARCHAR(50),
ADD sexe VARCHAR(20) AFTER prenom;                     -- ajouter deux colonnes, sexe après prenom

ALTER TABLE clients
MODIFY COLUMN date_naissance int;                      -- changer le type d'une colonne

ALTER TABLE clients CHANGE COLUMN adresse ville
VARCHAR(100) NOT NULL;                                 -- renommer ET changer le type

ALTER TABLE clients
DROP COLUMN pays;                                      -- supprimer une colonne

ALTER TABLE commandes
RENAME TO achats;                                      -- renommer la table

DESCRIBE clients;                                      -- afficher la structure
ClauseEffet
ADDajoute une colonne (AFTER col pour la placer)
MODIFY COLUMNchange le type ou les attributs, garde le nom
CHANGE COLUMN ancien nouveau typechange le nom et le type
DROP COLUMNsupprime la colonne
RENAME TOrenomme la table

DESCRIBE nom_table; affiche la structure de la table (colonnes, types, clés).

Piège classique

Attention aux exemples

Le résumé écrit aussi ALTER TABLE clients DROP COLUMN ; : il manque le nom de la colonne à supprimer. Et MODIFY COLUMN date_naissance int ou CHANGE COLUMN adresse ville changent vraiment ta table : si tu les exécutes, remets ensuite la structure d'origine (MODIFY COLUMN date_naissance DATE, CHANGE COLUMN ville adresse VARCHAR(50) DEFAULT 'Agadir') pour la suite du cours.

Vidéo · À regarder

FR

Base de données : MySQL et le langage de définition des données

Algomius · YouTube

Regarde de 32:38 à 36:504 min 12 s
Ouvrir sur YouTube à 32:38

Ce que tu vas voir (4 min) : les chapitres « Modification de table - ALTER ». Il modifie une table existante avec ALTER TABLE (ajouter, modifier, supprimer une colonne).

2

Leçon 2

Le langage d'interrogation de données (LID)

Sélectionner des données

Syntaxe
sql
SELECT [ { DISTINCT | DISTINCTROW } | ALL ] listeColonnes
FROM nomTable1 [,nomTable2]...
[ WHERE condition ]
[ clauseRegroupement ]
[ HAVING condition ]
[ clauseOrdonnancement ]
[ LIMIT clause_limitation ];

Les crochets [ ] signifient optionnel. * à la place des noms de colonnes sélectionne toutes les colonnes.

ClauseRôle
DISTINCTsupprime les doublons
WHEREfiltre les lignes
GROUP BY (regroupement)regroupe les lignes pour calculer (COUNT, SUM…)
HAVINGfiltre les groupes
ORDER BY (ordonnancement)trie (ASC ou DESC)
LIMITlimite le nombre de lignes
Les clients d'Agadir, du plus âgé au plus jeune
sql
SELECT nom, YEAR(CURDATE()) - YEAR(date_naissance) AS age
FROM clients
WHERE adresse = 'Agadir'
ORDER BY age DESC;
Une jointure : les produits avec le nom de leur catégorie
sql
SELECT produit.id, produit.designation, produit.pu, categorie.nom_cat
FROM produit
INNER JOIN categorie
ON produit.id_cat = categorie.id;

INNER JOIN … ON relie deux tables par leur colonne commune : ici, la clé étrangère produit.id_cat et la clé primaire categorie.id.

Piège classique

Dans le résumé

Le calcul de l'âge est écrit ROUND(YEAR(CURDATE())date_naissance) : il manque l'opération. On écrit YEAR(CURDATE()) - YEAR(date_naissance), ou, plus exact (anniversaire déjà passé ou non), TIMESTAMPDIFF(YEAR, date_naissance, CURDATE()).

Astuce

Agadir ou agadir ?

Avec le classement (collation) par défaut de MySQL, les comparaisons de texte ne tiennent pas compte de la casse : WHERE adresse = 'Agadir' trouve aussi « agadir ». Le résumé utilise UPPER(adresse) = UPPER('agadir') pour être sûr : ça marche, mais empêche MySQL d'utiliser un index (chapitre 10).

Vidéo · À regarder

FR

Base de données : MySQL et le langage de manipulation des données

Algomius · YouTube

Regarde de 17:02 à 21:204 min 18 s
Ouvrir sur YouTube à 17:02

Ce que tu vas voir (4 min) : les chapitres « Sélectionner dans une table - SELECT ». Le formateur écrit ses premiers SELECT sur une table MySQL.

Vidéo · À regarder

FR

Base de données : MySQL et le langage de manipulation des données

Algomius · YouTube

Regarde de 25:18 à 35:1910 min 1 s
Ouvrir sur YouTube à 25:18

Ce que tu vas voir (10 min) : les chapitres « La clause WHERE », « Exemples de sélections avec WHERE ». Il filtre avec WHERE et montre plusieurs exemples de conditions.

Vidéo · À regarder

FR

Apprendre SQL pour Débutant - Tutoriel SQL COMPLET

Dataseito · YouTube

Regarde de 20:59 à 29:378 min 38 s
Ouvrir sur YouTube à 20:59

Ce que tu vas voir (9 min) : les chapitres « Les jointures SQL », « LEFT JOIN », « RIGHT JOIN », « INNER JOIN », « FULL OUTER JOIN », « CROSS JOIN », « Exemples de jointures SQL ». Les jointures SQL : LEFT, RIGHT, INNER, FULL OUTER et CROSS JOIN, avec des exemples. (La vidéo utilise SQL Server : le TOP N du début s'écrit LIMIT en MySQL.)

Les vues

Définition

Vue

Une vue est un objet de la base qui enregistre une requête SELECT sous un nom, et qu'on interroge comme une table. Elle ne stocke pas les données : à chaque utilisation, MySQL exécute la requête.

sql
CREATE VIEW `nom_view` AS requête_select;

CREATE VIEW vw_clients_agadir AS
SELECT * FROM clients
WHERE UPPER(adresse) = UPPER("agadir");

SELECT * FROM vw_clients_agadir;     -- on l'utilise comme une table

Remarque : on peut inclure une vue dans une autre requête, comme une table. On peut aussi faire des INSERT, UPDATE et DELETE à travers une vue (cela modifie la table d'origine), à condition que la vue ne contienne pas : MIN, MAX, SUM, AVG, COUNT, DISTINCT, GROUP BY, HAVING, UNION, LEFT JOIN ou OUTER JOIN.

Modifier à travers la vue
sql
UPDATE vw_clients_agadir SET prenom = 'Fatima' WHERE id = 2;   -- modifie la table clients

Vidéo · À regarder

FR

Base de données : Vues

Algomius · YouTube

Regarde de 0:57 à 30:1929 min 22 s
Ouvrir sur YouTube à 0:57

Ce que tu vas voir (29 min) : les chapitres « Qu'est-ce qu'une vue ? », « Création d'une vue », « Consulter une vue ». Le formateur explique ce qu'est une vue, en crée une, l'interroge comme une table, puis la modifie.

Les tables temporaires

Une table temporaire stocke un résultat intermédiaire, réutilisable plusieurs fois pendant la même session. Elle est pratique quand une seule requête SELECT avec des JOIN serait impossible ou trop coûteuse : on stocke le premier résultat, puis une autre requête le traite.

PropriétéExplication
supprimée automatiquementà la fin de la session ou de la connexion (ou avec DROP TEMPORARY TABLE)
privéevisible seulement par le client qui l'a créée
peut avoir le même nom qu'une table normalela table normale est alors masquée dans les requêtes
sql
CREATE TEMPORARY TABLE nom_table (column_1_definition, column_2_definition, ..., table_constraints);

-- ou à partir du résultat d'un SELECT :
CREATE TEMPORARY TABLE temp_nom_table
SELECT * FROM original_table
LIMIT 0;                                   -- LIMIT 0 : copie la structure, sans les lignes

DROP TEMPORARY TABLE nom_table;
3

Leçon 3

Le langage de manipulation de données (LMD)

INSERT

sql
INSERT INTO nom_table (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

INSERT INTO clients (nom, prenom, date_naissance, adresse)
VALUES ("alami", "said", "1980-5-22", "casa");

INSERT INTO clients (nom, prenom, date_naissance)
VALUES ("Zaki", "Fatima", "1986-5-22");        -- adresse prend la valeur par défaut 'Agadir'

id n'est pas donné : il est en AUTO_INCREMENT.

UPDATE

sql
UPDATE nom_table
SET colonne1 = valeur1, colonne2 = valeur2, ...
WHERE condition;

UPDATE clients
SET nom = 'Fadani', adresse = "Rabat"
WHERE id = 2;

DELETE

sql
DELETE FROM nom_table WHERE condition;
DELETE FROM clients WHERE id = 3;

Piège classique

Le WHERE oublié

UPDATE ou DELETE sans WHERE modifie ou supprime toutes les lignes de la table. MySQL Workbench protège contre ça avec le mode safe updates (erreur 1175) ; on le désactive avec SET SQL_SAFE_UPDATES = 0; (le résumé le fait au chapitre 9). Relis toujours ton WHERE avant d'exécuter.

Vidéo · À regarder

FR

Base de données : MySQL et le langage de manipulation des données

Algomius · YouTube

Regarde de 3:30 à 17:0213 min 32 s
Ouvrir sur YouTube à 3:30

Ce que tu vas voir (14 min) : les chapitres « Insérer dans une table - INSERT ». Le formateur insère des lignes avec INSERT INTO … VALUES, avec et sans la liste des colonnes.

Vidéo · À regarder

FR

Base de données : MySQL et le langage de manipulation des données

Algomius · YouTube

Regarde de 21:20 à 25:183 min 58 s
Ouvrir sur YouTube à 21:20

Ce que tu vas voir (4 min) : les chapitres « Mettre à jour - UPDATE », « Supprimer une ligne - DELETE ». Il modifie des lignes avec UPDATE … SET … WHERE, puis en supprime avec DELETE.

Travaux pratiques

TP · La vue et la table temporaire

(1) Crée la vue vw_produits_complets (id, désignation, prix, stock, nom de la catégorie). (2) Affiche avec cette vue les produits de la catégorie « Informatique ». (3) Crée une table temporaire tmp_stock_faible qui contient les produits dont le stock est inférieur à 10, puis affiche son contenu.

Exercices

Exercice 1.1

QCM : rappel SQL

  1. 1CREATE, ALTER et DROP appartiennent au…

  2. 2Pour ajouter une colonne email à la table clients :

  3. 3MODIFY COLUMN et CHANGE COLUMN : lequel permet de renommer la colonne ?

  4. 4CREATE TABLE t2 LIKE t1; copie…

  5. 5La clause qui filtre les groupes est…

  6. 6Une vue stocke…

  7. 7On ne peut pas modifier les données à travers une vue qui contient…

  8. 8Une table temporaire est supprimée…

  9. 9DELETE FROM clients; (sans WHERE)…

0/9 répondues
Exercice 1.2

Le LDD

(1) Crée la table commandes : id (clé primaire auto-incrémentée), date_cmd (date, obligatoire), id_client (entier, clé étrangère vers clients.id), montant (décimal 10,2, 0 par défaut). (2) Ajoute la colonne statut VARCHAR(20) DEFAULT 'en cours' après date_cmd. (3) Affiche la structure.

Exercice 1.3

Les requêtes

Écris les requêtes : (1) les produits de plus de 1 000 DH, du plus cher au moins cher ; (2) le nombre de produits par catégorie (nom de la catégorie et nombre) ; (3) les catégories qui ont au moins 2 produits ; (4) les 2 produits les moins chers.

L'essentiel du chapitre

À retenir

  • LDD : CREATE DATABASE/TABLE, DROP, ALTER TABLE … ADD / MODIFY COLUMN / CHANGE COLUMN / DROP COLUMN / RENAME TO, DESCRIBE, CREATE TABLE b LIKE a (structure seule).
  • Colonnes : type, NOT NULL, AUTO_INCREMENT, DEFAULT, PRIMARY KEY ; moteur InnoDB (transactions, clés étrangères).
  • LID : SELECT … FROM … [WHERE] [GROUP BY] [HAVING] [ORDER BY] [LIMIT] ; jointure INNER JOIN … ON.
  • Vue : CREATE VIEW nom AS SELECT … ; s'utilise comme une table ; modifiable seulement sans agrégat, DISTINCT, GROUP BY, HAVING, UNION, jointure externe.
  • Table temporaire : CREATE TEMPORARY TABLE ; privée et supprimée à la fin de la session.
  • LMD : INSERT INTO … VALUES, UPDATE … SET … WHERE, DELETE FROM … WHERE (jamais sans WHERE par erreur).
Inscris-toi pour suivre ta progression →
Chapitre suivantLe langage procédural de MySQL et les types de programmes

Sur cette page

  1. Objectifs
  2. 1.Le langage de définition de données (LDD)
  3. 2.Le langage d'interrogation de données (LID)
  4. 3.Le langage de manipulation de données (LMD)
  5. TP · La vue et la table temporaire
  6. Exercices corrigés
  7. L'essentiel