Skip to main content

📚 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

  1. Toujours utiliser des transactions pour les opérations critiques:
START TRANSACTION;
-- vos requêtes ici
COMMIT; -- ou ROLLBACK en cas d'erreur
  1. Utiliser des index pour optimiser les performances:
CREATE INDEX nom_index ON table(colonne);
  1. Sauvegarder régulièrement:
mysqldump -u utilisateur -p nom_base > backup.sql
  1. Utiliser EXPLAIN pour analyser les requêtes:
EXPLAIN SELECT * FROM table WHERE condition;

⚡ Raccourcis et Astuces

  • LIMIT 1 pour obtenir un seul résultat
  • ORDER BY RAND() pour un ordre aléatoire
  • COALESCE(colonne, 'valeur_defaut') pour gérer les NULL
  • DISTINCT pour éliminer les doublons
  • NOW() pour la date/heure actuelle
  • CONCAT(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