SQL – La base

SQL pour les (presque) vivants : commandes de base pour MySQL/MariaDB

Bienvenue dans le monde merveilleux des bases de données relationnelles. Un monde où la logique règne, les données sont bien rangées, et où une simple erreur de requête peut ruiner une journée de travail.

Que vous soyez admin sys, développeur, étudiant ou kamikaze en production, voici un tour d’horizon des commandes SQL de base à connaître pour survivre (et briller en réunion).

Mais d’abord, c’est quoi une base de données relationnelle ?

  • Base de données (DB) : conteneur logique pour stocker des données organisées. Comme un classeur, mais numérique et potentiellement explosif.
  • Table : ensemble structuré de données, sous forme de lignes et de colonnes. Comme une feuille Excel, mais avec du respect.
  • Enregistrement (ou ligne) : une ligne d’une table. Une entité de données (un utilisateur, un produit, un crime, etc.).
  • Champ : une colonne dans la table, représentant un attribut (nom, âge, date…).

MySQL/MariaDB est un système de gestion de bases de données (SGBD) relationnel populaire, léger, efficace, et… parfois capricieux.

Connexion à MySQL/MariaDB

mysql -u root -p

On vous demandera le mot de passe. Tapez-le (sans retour visuel) et vous voilà dans le prompt :

mysql>

Créer une base de données

CREATE DATABASE boutique;

Elle existe maintenant dans les limbes numériques. Mais encore vide.

Créer un utilisateur et lui donner des droits

CREATE USER 'paul'@'localhost' IDENTIFIED BY 'motdepassefort';
GRANT ALL PRIVILEGES ON boutique.* TO 'paul'@'localhost';
FLUSH PRIVILEGES;
  • localhost signifie que l’utilisateur se connecte depuis la machine locale.
  • Les droits peuvent être SELECT, INSERT, UPDATE, DELETE… ou ALL pour les fous de pouvoir.

Utiliser une base de données

USE boutique;

Vous êtes désormais dans la base boutique. Toute requête s’appliquera ici.

Créer une table

CREATE TABLE produits (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(100),
    prix DECIMAL(10,2),
    en_stock BOOLEAN
);

Ici, on crée une table produits avec :

  • un identifiant auto-incrémenté
  • un nom (chaine jusqu’à 100 caractères)
  • un prix (avec 2 décimales)
  • un champ booléen pour la disponibilité

Insérer des données

INSERT INTO produits (nom, prix, en_stock)
VALUES ('Couteau suisse', 49.99, TRUE);

Ajoute un enregistrement. La valeur id est automatique.

Lire les données : SELECT

SELECT * FROM produits;

Affiche toutes les colonnes de tous les produits. Pour filtrer :

SELECT nom, prix FROM produits WHERE en_stock = TRUE;

Tri :

SELECT * FROM produits ORDER BY prix DESC;

Mettre à jour des données

UPDATE produits SET prix = 39.99 WHERE nom = 'Couteau suisse';

On baisse les prix. Pour une fois.

Supprimer des données

DELETE FROM produits WHERE en_stock = FALSE;

Supprime les produits hors stock. RIP.

Afficher la structure d’une table

DESCRIBE produits;

Utile pour savoir ce qu’on manipule avant de tout casser.

Commandes de gestion des utilisateurs

SHOW GRANTS FOR 'paul'@'localhost';
REVOKE INSERT ON boutique.* FROM 'paul'@'localhost';
DROP USER 'paul'@'localhost';

REVOKE retire des droits. DROP USER efface l’utilisateur (ainsi que ses rêves).

Commandes utiles supplémentaires

  • SHOW DATABASES; : liste les bases disponibles
  • SHOW TABLES; : liste les tables de la base actuelle
  • SELECT NOW(); : affiche la date/heure actuelle
  • EXIT; : quitte MySQL (et retourne à la vraie vie)

Précautions et bonne pratiques

  • Ne travaillez jamais en tant que root sauf pour créer des utilisateurs.
  • Sauvegardez avant un DROP.
  • Utilisez les transactions (START TRANSACTION, COMMIT) pour les modifications critiques.
  • Ajoutez des index sur les colonnes utilisées dans les WHERE et JOIN.

Conclusion : SQL, c’est de la logique… jusqu’au moment où ça plante

Le langage SQL est relativement simple à lire et à écrire. Mais comme tout outil puissant, il devient dangereux quand mal compris. Une requête mal formulée peut modifier ou supprimer des milliers de lignes. Ou planter un site entier.

Mais bien utilisé, SQL est une bénédiction pour organiser, structurer et interroger les données. Un langage de la vérité. Sauf quand on oublie le WHERE.