Aller au contenu
M06 · C. Manipuler les données

Créer la base et les tables

Créer une base de données, choisir le moteur, créer des tables avec des colonnes bien typées, puis les modifier (ALTER) ou les supprimer (DROP).

1Situer

Le MLD de Souk Atlas est validé, MySQL est installé. Place au SQL : on crée la base « souk », puis chaque table avec ses colonnes. Choisir le bon type pour chaque colonne (un prix n'est pas un texte, une date n'est pas un nombre) évite beaucoup d'erreurs plus tard.

2Comprendre

CREATE TABLE : une table, des colonnes typées
CREATE TABLE produits ( id INT AUTO_INCREMENT PRIMARY KEY, nom VARCHAR(80) NOT NULL, prix DECIMAL(8,2), stock INT DEFAULT 0 ); 🔑 id nom prixstock (aucune ligne) 1Tajine180.0014 2Bol45.000 NULL comme nom → refusé (NOT NULL)

CREATE TABLE produits crée une table vide : un tableau sans lignes.

1 / 5

Créer la base de données

CREATE DATABASE souk CHARACTER SET utf8mb4;  -- utf8mb4 : accents et emojis
USE souk;                                    -- on travaille désormais dans souk
SHOW TABLES;                                 -- vide pour l'instant

Choisir le moteur

On l’indique à la fin du CREATE TABLE : ENGINE=InnoDB. Sauf raison particulière, on garde InnoDB.

Créer une table et typer ses colonnes

TypePourExemple
INTnombres entiersstock, quantité, identifiant
DECIMAL(8,2)nombres exacts à virgule (8 chiffres dont 2 après la virgule)prix : 1200.00
VARCHAR(n)texte court, au plus n caractèresnom, email, téléphone
TEXTtexte longdescription
DATE / DATETIMEdate / date et heure'2025-03-09', '2025-03-09 14:30:00'
BOOLEANvrai / faux (0 ou 1)actif
ENUM('a','b')une valeur dans une liste fixestatut
CREATE TABLE produits (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nom VARCHAR(80) NOT NULL,
  prix DECIMAL(8,2) NOT NULL,
  stock INT NOT NULL DEFAULT 0
) ENGINE=InnoDB;

Modifier ou supprimer une table

ALTER TABLE produits ADD description TEXT;              -- ajouter une colonne
ALTER TABLE produits MODIFY nom VARCHAR(120) NOT NULL;  -- changer son type
ALTER TABLE produits RENAME COLUMN stock TO quantite;   -- la renommer
ALTER TABLE produits DROP COLUMN description;           -- la supprimer
DROP TABLE produits;                                    -- supprimer la table
Exemple simple

Les étagères étiquetées

Une table est une étagère avec des cases étiquetées : la case « prix » n'accepte que des nombres, la case « date » que des dates. Le type de la colonne, c'est l'étiquette.

CREATE TABLE villes (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nom VARCHAR(50) NOT NULL
);
Exemple simple

Le ticket numéroté

AUTO_INCREMENT fonctionne comme le distributeur de tickets à la banque : chaque nouvelle ligne reçoit le numéro suivant, sans qu'on ait à le choisir.

3Manipuler

La base est vide. Créez la table categories, puis la table produits demandée. Le panneau Tables à gauche montre le résultat. Exécutez avec le bouton ou Ctrl + Entrée.
Pas à pas dans le lab ↗ La base de départ se crée dans votre navigateur (moteur SQL d’environ 700 Ko, chargé une fois).
Résultat

Le résultat de chaque requête s'affichera ici.

Consignes 0 / 6

  1. La table produits existe
  2. produits.id est la clé primaire
  3. nom est obligatoire (NOT NULL)
  4. prix est un DECIMAL
  5. stock vaut 0 par défaut
  6. Ajoutez une colonne description (TEXT) avec ALTER TABLE

4Pratiquer

Exercice 1 · Choisir les types

Donnez le type MySQL de : un numéro de téléphone marocain, une date de naissance, un prix en dirhams, un nombre de pièces, une description longue.

Voir le corrigé
téléphone    : VARCHAR(15)   (pas INT : le 0 du début se perdrait,
                              et on ne calcule pas avec)
naissance    : DATE
prix         : DECIMAL(8,2)  (exact, pas FLOAT)
pièces       : INT
description  : TEXT

Exercice 2 · Écrire la table clients

Écrivez CREATE TABLE clients : id auto-incrémenté, nom et prénom obligatoires (50), email (100), date_inscription (date obligatoire).

Voir le corrigé
CREATE TABLE clients (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nom VARCHAR(50) NOT NULL,
  prenom VARCHAR(50) NOT NULL,
  email VARCHAR(100),
  date_inscription DATE NOT NULL
) ENGINE=InnoDB;

Exercice 3 · Modifier une table

Ajoutez une colonne telephone à clients, agrandissez nom à 80 caractères, puis renommez la table en client.

Voir le corrigé
ALTER TABLE clients ADD telephone VARCHAR(15);
ALTER TABLE clients MODIFY nom VARCHAR(80) NOT NULL;
ALTER TABLE clients RENAME TO client;

5Vérifier

1. Quel type choisir pour un prix ?
2. Quel moteur MySQL gère les clés étrangères et les transactions ?
3. Que fait DROP TABLE produits ?