Aller au contenu

MariaDB : requêtes

Les exemples reposent sur les tables clients et commandes de Bases et tables.

INSERT INTO clients (nom, email) VALUES ('Alice', 'alice@exemple.com');
INSERT INTO clients (nom, email) VALUES
('Bob', 'bob@exemple.com'),
('Chloé', 'chloe@exemple.com');
INSERT INTO clients (nom, email) VALUES ('Alice', 'alice@exemple.com')
ON DUPLICATE KEY UPDATE nom = VALUES(nom);
SELECT LAST_INSERT_ID();
SELECT * FROM clients;
SELECT nom, email FROM clients WHERE actif = TRUE ORDER BY nom LIMIT 10;
SELECT * FROM clients WHERE nom LIKE 'A%';
SELECT * FROM clients WHERE id IN (1, 2, 3);
SELECT * FROM commandes WHERE passee_le BETWEEN '2026-01-01' AND '2026-01-31';
SELECT DISTINCT statut FROM commandes;
SELECT * FROM clients WHERE email IS NULL;
UPDATE clients SET actif = FALSE WHERE id = 3;
DELETE FROM clients WHERE id = 3;
SELECT COUNT(*) FROM commandes;
SELECT statut, COUNT(*) AS nb, SUM(total) AS montant, AVG(total) AS moyenne
FROM commandes GROUP BY statut ORDER BY montant DESC;
SELECT client_id, SUM(total) AS depense FROM commandes
GROUP BY client_id HAVING SUM(total) > 100;

WHERE filtre les lignes avant le regroupement, HAVING filtre les groupes.

SELECT c.nom, o.id, o.total
FROM clients c
INNER JOIN commandes o ON o.client_id = c.id;
SELECT c.nom, COUNT(o.id) AS nb_commandes
FROM clients c
LEFT JOIN commandes o ON o.client_id = c.id
GROUP BY c.id, c.nom;
Jointure Résultat
INNER JOIN Lignes présentes des deux côtés
LEFT JOIN Toutes les lignes de gauche, même sans correspondance
RIGHT JOIN Toutes les lignes de droite
SELECT nom FROM clients
WHERE id IN (SELECT client_id FROM commandes WHERE total > 100);
WITH depenses AS (
SELECT client_id, SUM(total) AS total FROM commandes GROUP BY client_id
)
SELECT c.nom, d.total FROM clients c JOIN depenses d ON d.client_id = c.id
ORDER BY d.total DESC;
SELECT client_id, total,
RANK() OVER (PARTITION BY client_id ORDER BY total DESC) AS rang
FROM commandes;
SELECT NOW(), CURDATE();
SELECT DATE_FORMAT(passee_le, '%Y-%m') AS mois, SUM(total) FROM commandes GROUP BY mois;
SELECT CONCAT(nom, ' <', email, '>') FROM clients;
SELECT UPPER(nom), LENGTH(nom) FROM clients;
START TRANSACTION;
UPDATE commandes SET statut = 'payee' WHERE id = 10;
INSERT INTO clients (nom, email) VALUES ('Dan', 'dan@exemple.com');
COMMIT; -- ou ROLLBACK; pour annuler

Les tables InnoDB sont transactionnelles. Sans START TRANSACTION, chaque requête est validée immédiatement (autocommit).

Symptôme Piste
ERROR 1054 Unknown column Nom de colonne erroné : DESCRIBE table;
ERROR 1052 Column is ambiguous Préfixer par l’alias de table
ERROR 1064 syntax error Syntaxe : lire le texte après « near »
ERROR 1213 Deadlock found Relancer la transaction ; accéder aux tables dans le même ordre
Requête lente EXPLAIN : voir Index et performances

Ubuntu 24.04 et 26.04 : différences à connaître

Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »

Les requêtes de cette page fonctionnent sur MariaDB 10.11 et 11.8.