📚 Glossaire des Commandes SQL Essentielles
🛠 Gestion des Bases de Données
Création et Suppression
-- Créer une base de données
CREATE DATABASE nom_de_la_base;
-- Supprimer une base de données
DROP DATABASE nom_de_la_base;
-- Utiliser une base de données
USE nom_de_la_base;
-- Voir toutes les bases de données
SHOW DATABASES;
📋 Gestion des Tables
Création et Modification
-- Créer une table
CREATE TABLE nom_table (
colonne1 type1 [contraintes],
colonne2 type2 [contraintes]
);
-- Supprimer une table
DROP TABLE nom_table;
-- Modifier une table (ajouter une colonne)
ALTER TABLE nom_table ADD COLUMN nom_colonne type;
-- Modifier une table (supprimer une colonne)
ALTER TABLE nom_table DROP COLUMN nom_colonne;
-- Voir la structure d'une table
DESCRIBE nom_table;
📝 Manipulation des Données (CRUD)
CREATE (Insertion)
-- Insérer une ligne
INSERT INTO table (colonne1, colonne2) VALUES (valeur1, valeur2);
-- Insérer plusieurs lignes
INSERT INTO table (colonne1, colonne2)
VALUES
(valeur1, valeur2),
(valeur3, valeur4);
READ (Lecture)
-- Sélectionner toutes les colonnes
SELECT * FROM table;
-- Sélectionner des colonnes spécifiques
SELECT colonne1, colonne2 FROM table;
-- Sélectionner avec condition
SELECT * FROM table WHERE condition;
-- Sélectionner avec tri
SELECT * FROM table ORDER BY colonne ASC|DESC;
-- Limiter le nombre de résultats
SELECT * FROM table LIMIT nombre;
UPDATE (Mise à jour)
-- Mettre à jour des données
UPDATE table SET colonne = valeur WHERE condition;
-- Mettre à jour plusieurs colonnes
UPDATE table
SET colonne1 = valeur1, colonne2 = valeur2
WHERE condition;
DELETE (Suppression)
-- Supprimer des lignes
DELETE FROM table WHERE condition;
-- Supprimer toutes les lignes
TRUNCATE TABLE table;
🔄 Jointures
-- Inner Join (intersection)
SELECT * FROM table1
INNER JOIN table2 ON table1.id = table2.id;
-- Left Join (tous de table1 + correspondances de table2)
SELECT * FROM table1
LEFT JOIN table2 ON table1.id = table2.id;
-- Right Join (tous de table2 + correspondances de table1)
SELECT * FROM table1
RIGHT JOIN table2 ON table1.id = table2.id;
🎯 Conditions et Filtres
-- WHERE avec différents opérateurs
SELECT * FROM table WHERE
colonne1 = valeur AND
colonne2 > valeur AND
colonne3 LIKE 'pattern%' AND
colonne4 IN (valeur1, valeur2) AND
colonne5 BETWEEN valeur1 AND valeur2;
-- GROUP BY avec HAVING
SELECT colonne, COUNT(*)
FROM table
GROUP BY colonne
HAVING COUNT(*) > valeur;
📊 Fonctions d'Agrégation
-- Compter le nombre de lignes
SELECT COUNT(*) FROM table;
-- Somme d'une colonne
SELECT SUM(colonne) FROM table;
-- Moyenne d'une colonne
SELECT AVG(colonne) FROM table;
-- Valeur minimum
SELECT MIN(colonne) FROM table;
-- Valeur maximum
SELECT MAX(colonne) FROM table;
🔒 Gestion des Utilisateurs
-- Créer un utilisateur
CREATE USER 'nom_utilisateur'@'localhost' IDENTIFIED BY 'mot_de_passe';
-- Donner des droits
GRANT permission ON base.table TO 'nom_utilisateur'@'localhost';
-- Révoquer des droits
REVOKE permission ON base.table FROM 'nom_utilisateur'@'localhost';
-- Supprimer un utilisateur
DROP USER 'nom_utilisateur'@'localhost';
🎓 Conseils d'Utilisation
- Toujours utiliser des transactions pour les opérations critiques:
START TRANSACTION;
-- vos requêtes ici
COMMIT; -- ou ROLLBACK en cas d'erreur
- Utiliser des index pour optimiser les performances:
CREATE INDEX nom_index ON table(colonne);
- Sauvegarder régulièrement:
mysqldump -u utilisateur -p nom_base > backup.sql
- Utiliser EXPLAIN pour analyser les requêtes:
EXPLAIN SELECT * FROM table WHERE condition;
⚡ Raccourcis et Astuces
LIMIT 1pour obtenir un seul résultatORDER BY RAND()pour un ordre aléatoireCOALESCE(colonne, 'valeur_defaut')pour gérer les NULLDISTINCTpour éliminer les doublonsNOW()pour la date/heure actuelleCONCAT(colonne1, ' ', colonne2)pour concaténer des chaînes
🚫 À Éviter
SELECT *en production (spécifier les colonnes)- Requêtes non indexées sur de grandes tables
- Jointures sans conditions
- Conditions WHERE sur des fonctions
- Sous-requêtes dans les boucles