Accueil › Cours › Requêtes SQL simples
Requêtes SQL : SELECT, WHERE, ORDER BY, UPDATE, DELETE
Interroge une table : choisis les colonnes, filtre les lignes avec WHERE, trie-les, puis modifie et supprime des lignes avec UPDATE et DELETE.
Les leçons de ce chapitre
- Choisir des colonnes et des lignes
- Trier et filtrer mieux
- Modifier et supprimer des lignes
Leçon 28.1 : Choisir des colonnes et des lignes
Une requête SELECT lit une table sans la modifier. Après SELECT, on écrit les colonnes voulues ; après FROM, la table ; après WHERE, la condition que les lignes doivent remplir.
SELECT * FROM eleve;
SELECT nom, prenom FROM eleve WHERE ville = 'Sfax';
*veut dire toutes les colonnes.- Comparaisons :
=,<>(différent),<,>,<=,>=. Un texte se compare entre apostrophes :ville = 'Sfax'. - On combine les conditions avec
AND(les deux),OR(l'une ou l'autre) etNOT. Des parenthèses fixent l'ordre :(ville = 'Sfax' OR ville = 'Sousse') AND moyenne >= 10.
Calculer et renommer une colonne
SELECT prenom, moyenne + 1 AS moyenne_bonus FROM eleve;
Astuce : AS donne un nom à la colonne du résultat. Sans AS, MySQL l'appelle comme on l'a écrite : moyenne + 1.
Attention : Une virgule oubliée entre deux colonnes ne donne pas d'erreur : SELECT nom prenom affiche une seule colonne, nom, renommée prenom.
En SQL
La table eleve est créée en haut du script. Change la condition du WHERE : les élèves de Sousse, puis ceux qui ont plus de 12.
CREATE TABLE eleve (
id INT PRIMARY KEY,
nom VARCHAR(30) NOT NULL,
prenom VARCHAR(30) NOT NULL,
ville VARCHAR(20),
moyenne DECIMAL(4,2)
);
INSERT INTO eleve VALUES
(1, 'Ben Salah', 'Amine', 'Sfax', 12.50),
(2, 'Trabelsi', 'Sarra', 'Tunis', 16.25),
(3, 'Jaziri', 'Yassine', 'Sfax', 9.75),
(4, 'Mansour', 'Rim', 'Sousse', 14.00),
(5, 'Bouzid', 'Hedi', NULL, 11.00);
SELECT nom, prenom, moyenne FROM eleve WHERE ville = 'Sfax';
Leçon 28.2 : Trier et filtrer mieux
Trier : ORDER BY
SELECT prenom, moyenne FROM eleve ORDER BY moyenne DESC, prenom;
ORDER BY trie le résultat : ASC du plus petit au plus grand (par défaut), DESC du plus grand au plus petit. Après une virgule, une deuxième colonne départage les égalités. Sans ORDER BY, MySQL ne promet aucun ordre.
Des conditions plus riches
moyenne BETWEEN 10 AND 14: entre 10 et 14, bornes comprises.ville IN ('Sfax', 'Sousse'): l'une des valeurs de la liste.nom LIKE 'B%': commence par B.%remplace n'importe quelle suite de caractères,_un seul caractère :'%a%'contient un a.ville IS NULL: la ville est vide. Jamaisville = NULL, qui ne trouve rien.
SELECT DISTINCT ville FROM eleve;
SELECT prenom FROM eleve ORDER BY moyenne DESC LIMIT 3;
Astuce : DISTINCT enlève les lignes en double du résultat. LIMIT 3 garde les 3 premières lignes : avec ORDER BY ... DESC, ce sont les 3 meilleurs.
En SQL
Essaie chaque condition : remplace le WHERE par moyenne BETWEEN 10 AND 14, puis nom LIKE 'B%', puis ville IS NULL.
CREATE TABLE eleve (
id INT PRIMARY KEY,
nom VARCHAR(30) NOT NULL,
prenom VARCHAR(30) NOT NULL,
ville VARCHAR(20),
moyenne DECIMAL(4,2)
);
INSERT INTO eleve VALUES
(1, 'Ben Salah', 'Amine', 'Sfax', 12.50),
(2, 'Trabelsi', 'Sarra', 'Tunis', 16.25),
(3, 'Jaziri', 'Yassine', 'Sfax', 9.75),
(4, 'Mansour', 'Rim', 'Sousse', 14.00),
(5, 'Bouzid', 'Hedi', NULL, 11.00);
SELECT nom, prenom, ville FROM eleve WHERE ville IN ('Sfax', 'Sousse') ORDER BY nom;
Leçon 28.3 : Modifier et supprimer des lignes
Modifier : UPDATE
UPDATE eleve SET ville = 'Gabès' WHERE id = 5;
UPDATE eleve SET moyenne = moyenne + 0.5 WHERE ville = 'Sfax';
UPDATE change des valeurs : après SET, les colonnes et leurs nouvelles valeurs (séparées par des virgules) ; après WHERE, les lignes concernées. Une nouvelle valeur peut se calculer avec l'ancienne : moyenne + 0.5.
Supprimer : DELETE
DELETE FROM eleve WHERE moyenne < 10;
Attention : Sans WHERE, UPDATE change toutes les lignes et DELETE les efface toutes. Avant de lancer, lis ta condition avec un SELECT : il montre les lignes qui seront touchées.
En SQL
Exécute : le SELECT final montre les changements. Puis supprime les élèves sans ville avec un DELETE placé avant le SELECT.
CREATE TABLE eleve (
id INT PRIMARY KEY,
nom VARCHAR(30) NOT NULL,
prenom VARCHAR(30) NOT NULL,
ville VARCHAR(20),
moyenne DECIMAL(4,2)
);
INSERT INTO eleve VALUES
(1, 'Ben Salah', 'Amine', 'Sfax', 12.50),
(2, 'Trabelsi', 'Sarra', 'Tunis', 16.25),
(3, 'Jaziri', 'Yassine', 'Sfax', 9.75),
(4, 'Mansour', 'Rim', 'Sousse', 14.00),
(5, 'Bouzid', 'Hedi', NULL, 11.00);
UPDATE eleve SET moyenne = moyenne + 0.5 WHERE ville = 'Sfax';
SELECT * FROM eleve;
S'entraîner gratuitement
Chaque leçon a 3 exercices gratuits avec indices pour appliquer ce chapitre avec Hannibot.
← Chapitre précédent : Bases de données : créer les tables · Chapitre suivant : SQL : jointures, regroupements et sous-requêtes →
Tous les chapitres · Voir les devoirs corrigés de 2ème TI
Cours écrit pour Mission Carthage d'après le programme officiel. Ton professeur reste la référence.