Tous les outils
Gratuit

Une référence MySQL consultable et imprimable — requêtes, jointures, index, fonctions, types de données et commandes d'administration. Gratuit.

Requêtes

10
SELECT * FROM users;
Sélectionner toutes colonnes et lignes
SELECT id, name FROM users;
Sélectionner des colonnes précises
SELECT DISTINCT city FROM users;
Valeurs uniques seulement
WHERE age > 18 AND active = 1
Filtrer les lignes par conditions
WHERE name LIKE 'A%'
Correspondance de motif (% = tout caractère)
WHERE id IN (1, 2, 3)
Correspondre à une valeur d'un ensemble
WHERE age BETWEEN 18 AND 30
Filtre de plage inclusif
ORDER BY created_at DESC
Trier en ordre décroissant
LIMIT 10 OFFSET 20
Paginer les résultats
WHERE email IS NULL
Correspondre aux valeurs nulles

Jointures

8
INNER JOIN orders ON orders.user_id = users.id
Lignes correspondantes dans les deux tables
LEFT JOIN orders ON ...
Toutes les lignes de gauche + correspondances
RIGHT JOIN orders ON ...
Toutes les lignes de droite + correspondances
CROSS JOIN colors
Produit cartésien
SELF JOIN: FROM emp e JOIN emp m ON e.mgr = m.id
Joindre une table à elle-même
USING (user_id)
Joindre sur une colonne de même nom
UNION / UNION ALL
Combiner des jeux de résultats
SELECT u.*, o.total FROM users u JOIN orders o
Aliaser les tables pour la clarté

Agrégation

9
COUNT(*)
Compter les lignes
SUM(amount)
Total d'une colonne numérique
AVG(price)
Valeur moyenne
MIN(price), MAX(price)
Plus petit et plus grand
GROUP BY country
Grouper les lignes pour agrégation
HAVING COUNT(*) > 5
Filtrer sur les groupes agrégés
GROUP_CONCAT(name)
Concaténer les valeurs groupées
COUNT(DISTINCT city)
Compter les valeurs uniques
ROW_NUMBER() OVER (ORDER BY id)
Classement par fonction de fenêtre

Modifier les données

8
INSERT INTO users (name) VALUES ('Sam');
Insérer une seule ligne
INSERT INTO users (name) VALUES ('A'),('B');
Insérer plusieurs lignes
UPDATE users SET active = 1 WHERE id = 5;
Mettre à jour les lignes correspondantes
DELETE FROM users WHERE id = 5;
Supprimer les lignes correspondantes
TRUNCATE TABLE logs;
Supprimer toutes les lignes rapidement
INSERT ... ON DUPLICATE KEY UPDATE
Upsert sur une clé unique
REPLACE INTO users ...
Supprimer + insérer en cas de conflit
INSERT IGNORE INTO ...
Ignorer les lignes en erreur

Schéma / DDL

9
CREATE TABLE users (id INT PRIMARY KEY);
Créer une nouvelle table
AUTO_INCREMENT
Colonne à numérotation auto.
ALTER TABLE users ADD COLUMN age INT;
Ajouter une colonne
ALTER TABLE users DROP COLUMN age;
Supprimer une colonne
ALTER TABLE users MODIFY name VARCHAR(100);
Changer le type d'une colonne
DROP TABLE IF EXISTS users;
Supprimer une table
FOREIGN KEY (user_id) REFERENCES users(id)
Référencer une autre table
ON DELETE CASCADE
Cascader les suppressions aux enfants
CREATE TABLE t2 LIKE t1;
Copier la structure d'une table

Index et clés

8
PRIMARY KEY (id)
Identifiant de ligne unique
UNIQUE (email)
Imposer des valeurs uniques
CREATE INDEX idx_name ON users (name);
Accélérer les recherches sur une colonne
CREATE INDEX idx_ab ON t (a, b);
Index composite (multi-colonnes)
DROP INDEX idx_name ON users;
Supprimer un index
FULLTEXT (body)
Index de recherche plein texte
EXPLAIN SELECT ...;
Afficher le plan de requête
SHOW INDEX FROM users;
Lister les index d'une table

Types de données

9
INT, BIGINT, TINYINT
Types entiers par taille
DECIMAL(10, 2)
Nombres exacts à virgule fixe
VARCHAR(255)
Chaîne de longueur variable
TEXT, LONGTEXT
Gros blocs de texte
DATE, DATETIME, TIMESTAMP
Types date et heure
BOOLEAN (TINYINT(1))
true/false stocké en 0/1
JSON
Colonne document JSON native
ENUM('a', 'b')
Une valeur d'un ensemble fixe
UNSIGNED
Modificateur numérique non négatif

Type sizes & limits

20
TINYINT
1 byte: -128..127 (0..255 UNSIGNED)
SMALLINT
2 bytes: -32,768..32,767 (0..65,535)
MEDIUMINT
3 bytes: -8.39M..8.39M (0..16.78M)
INT
4 bytes: -2.15B..2.15B (0..4.29B)
BIGINT
8 bytes: ±9.22×10^18 (0..1.84×10^19)
DECIMAL(M, D)
Exact: M up to 65 digits, D up to 30
FLOAT / DOUBLE
4 / 8 bytes approximate floating point
CHAR(M)
Fixed length, 0..255 characters
VARCHAR(M)
0..65,535 bytes (shared 64KB row limit)
TINYTEXT
Up to 255 bytes (~255 chars)
TEXT
Up to 65,535 bytes (64 KB)
MEDIUMTEXT
Up to 16,777,215 bytes (16 MB)
LONGTEXT
Up to 4,294,967,295 bytes (4 GB)
BLOB types
TINY/—/MEDIUM/LONG: 255B..4GB (binary)
JSON
Stored as LONGBLOB, up to ~4 GB
ENUM / SET
ENUM: 65,535 members; SET: 64 members
DATE
1000-01-01 to 9999-12-31 (3 bytes)
DATETIME
1000 to 9999, microseconds (5–8 bytes)
TIMESTAMP
1970-01-01 to 2038-01-19 UTC (4 bytes)
TIME / YEAR
±838:59:59 / 1901..2155

Fonctions

9
NOW(), CURDATE()
Date-heure / date courante
DATE_FORMAT(d, '%Y-%m-%d')
Formater une date
DATEDIFF(a, b)
Jours entre deux dates
CONCAT(a, ' ', b)
Joindre des chaînes
COALESCE(a, b, 'n/a')
Première valeur non nulle
IFNULL(x, 0)
Remplacer null par une valeur par défaut
CASE WHEN x > 0 THEN '+' ELSE '-' END
Expression conditionnelle
CAST(x AS CHAR)
Convertir le type d'une valeur
ROUND(x, 2)
Arrondir à des décimales

Transactions et admin

9
START TRANSACTION;
Démarrer une transaction
COMMIT;
Valider la transaction
ROLLBACK;
Annuler la transaction
SAVEPOINT sp1;
Définir un point de retour
SHOW TABLES;
Lister les tables de la base
DESCRIBE users;
Afficher la structure d'une table
SHOW PROCESSLIST;
Lister les connexions actives
GRANT ALL ON db.* TO 'u'@'%';
Accorder des privilèges utilisateur
mysqldump -u root db > db.sql
Sauvegarder une base (CLI)

Aucune entrée ne correspond à « :q ».


Besoin d'aide ?
Un problème avec cet outil ? Signalez-le à notre équipe.
Signaler un problème

Ajoutez cet outil gratuit à votre propre site web — copiez-collez le code ci-dessous.