SQL (Structured Query Language) est un langage qui permet de créer, lire, modifier et supprimer des données dans une base de données relationnelle (MySQL, PostgreSQL, SQL Server, etc.).
Dans ce mini-cours, on va partir de 0 : qu’est-ce qu’une base de données, quels sont les sous-langages de SQL (LDD, LMD, etc.) puis les principales commandes.
Pour créer une base de données en local avec WAMP :
http://localhost/phpmyadmin).root (par défaut, pas de mot de passe).magasin), choisis le interclassement (utf8_general_ci conseillé), puis clique sur Créer.
CREATE TABLE utilisateurs (
id INT PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL,
date_creation DATE
);
Pour importer des données dans une table depuis un fichier CSV avec phpMyAdmin :
,), puis lance l’import.
Les formes normales sont des règles pour organiser les données et éviter les redondances :
Le modèle relationnel organise les données en tables reliées entre elles par des relations (clés étrangères). Chaque table représente une entité (ex : utilisateurs, commandes), chaque ligne une instance, chaque colonne un attribut.
id).utilisateur_id dans commandes).
Le langage d’interrogation de données (LID) permet de lire et rechercher des données dans les tables. Il s’appuie principalement sur la commande SELECT et ses variantes (WHERE, ORDER BY, GROUP BY, etc.).
SELECT nom, email FROM utilisateurs WHERE actif = TRUE;
SELECT COUNT(*) FROM commandes WHERE montant > 100;
AUTO_INCREMENT permet d’ajouter automatiquement une valeur unique à chaque nouvelle ligne.
Pour activer l'auto-incrémentation via l'interface graphique de phpMyAdmin :
INSERT INTO utilisateurs (id, nom) VALUES (10, 'Manuel');
CREATE TABLE utilisateurs (
id INT PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(100) NOT NULL
);
Pour trier les résultats d’une requête, on utilise ORDER BY :
SELECT nom, email FROM utilisateurs
ORDER BY nom ASC; -- Tri alphabétique croissant
SELECT * FROM commandes
ORDER BY montant DESC; -- Tri du plus grand au plus petit
Les fonctions d’agrégation permettent de calculer des statistiques sur une colonne :
COUNT() : nombre de lignesSUM() : sommeAVG() : moyenneMIN() / MAX() : minimum / maximumSELECT COUNT(*) FROM utilisateurs;
SELECT AVG(montant) FROM commandes;
SELECT MAX(date_commande) FROM commandes;
Les contraintes permettent de garantir la validité et la cohérence des données dans une table :
NOT NULL : la colonne ne peut pas être vide.UNIQUE : chaque valeur doit être différente dans cette colonne.PRIMARY KEY : identifiant unique de la ligne (oblige NOT NULL et UNIQUE).FOREIGN KEY : référence une clé primaire d’une autre table (pour lier les tables).CHECK : impose une condition sur les valeurs (ex : valeur positive).DEFAULT : valeur par défaut si rien n’est précisé.CREATE TABLE utilisateurs (
id INT PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(100) NOT NULL,
email VARCHAR(150) UNIQUE,
age INT CHECK (age >= 0),
actif BOOLEAN DEFAULT TRUE
);
CREATE TABLE commandes (
id INT PRIMARY KEY AUTO_INCREMENT,
utilisateur_id INT,
montant DECIMAL(10,2) NOT NULL CHECK (montant > 0),
date_commande DATE,
FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs(id)
);
La jointure simple (INNER JOIN) permet de lier deux tables selon une clé étrangère :
SELECT u.nom, c.montant
FROM utilisateurs u
INNER JOIN commandes c ON c.utilisateur_id = u.id;
Pour manipuler les dates en SQL :
SELECT * FROM commandes WHERE date_commande > '2024-01-01';
SELECT * FROM commandes WHERE YEAR(date_commande) = 2024;
SELECT * FROM commandes WHERE MONTH(date_commande) = 6;
Les jointures multitables permettent de combiner plusieurs tables en une seule requête :
SELECT u.nom, c.montant, p.nom AS produit
FROM utilisateurs u
INNER JOIN commandes c ON c.utilisateur_id = u.id
INNER JOIN produits p ON c.produit_id = p.id;
CREATE TABLE : créer une table.INSERT INTO : ajouter des lignes.SELECT (+ WHERE) : lire et filtrer des données.UPDATE : modifier des données.DELETE : supprimer des données.JOIN : combiner plusieurs tables.Comme pour HTML et CSS, le mieux pour apprendre SQL est de tester ces commandes dans un vrai système (par exemple MySQL ou PostgreSQL) et d’observer le résultat.