SELECT n’est qu’une famille d’opérations
L’analyse est une excellente porte d’entrée : SELECT, filtres, jointures et agrégations répondent rapidement à des questions. Mais une application métier doit d’abord créer ses tables, enregistrer des faits, empêcher les états invalides, gérer plusieurs opérations et limiter les accès.
Le SQL exact dépend du SGBD, et certaines tâches relèvent de l’administration plutôt que du langage. La carte reste néanmoins utile pour comprendre jusqu’où une base relationnelle participe au système.
Créer la structure et garantir l’intégrité
CREATE TABLE et ALTER TABLE décrivent colonnes, types, identifiants et relations. NOT NULL, UNIQUE, CHECK et FOREIGN KEY placent les règles simples au plus près des données.
Une contrainte ne remplace pas la validation ergonomique de l’application. Elle constitue une dernière défense commune à tous les processus qui écrivent dans la base.
CREATE TABLE produits (
id_produit INTEGER PRIMARY KEY,
designation TEXT NOT NULL,
prix NUMERIC NOT NULL CHECK (prix >= 0)
);Modifier sans laisser une opération incomplète
INSERT, UPDATE et DELETE modifient les faits. Une transaction encadre plusieurs écritures qui doivent rester cohérentes. Si la seconde échoue, ROLLBACK annule l’ensemble ; COMMIT confirme lorsque tout est valide.
SAVEPOINT permet de revenir à une étape intermédiaire. L’isolation traite la manière dont deux transactions concurrentes voient les changements. Ces comportements doivent être testés sur le moteur réel.
BEGIN;
INSERT INTO commandes (id_commande, id_client, montant)
VALUES (108, 941, 120);
INSERT INTO paiements (id_paiement, id_commande, montant)
VALUES (77, 108, 120);
COMMIT;Réutiliser une logique et automatiser avec prudence
Une vue rend une requête réutilisable. Une vue matérialisée conserve un résultat à rafraîchir. Une fonction calcule ou retourne des données ; une procédure peut orchestrer une opération selon le moteur.
Un trigger réagit automatiquement à un événement INSERT, UPDATE ou DELETE. Il convient bien à certains audits et historiques, mais sa logique est moins visible dans la requête appelante. Pour une règle simple comme prix positif, préférez une contrainte.
Accélérer et limiter les accès
Un index peut accélérer une recherche, mais consomme de l’espace et ralentit les écritures. EXPLAIN révèle le plan prévu ; les statistiques aident le planificateur. Optimiser signifie mesurer un cas réel, pas ajouter des index à toutes les colonnes.
Les rôles, GRANT et REVOKE appliquent le moindre privilège. PostgreSQL propose aussi la sécurité au niveau des lignes. L’application doit encore authentifier ses utilisateurs et utiliser une connexion correctement protégée.
CREATE ROLE reporting;
GRANT SELECT ON ventes_mensuelles TO reporting;
REVOKE UPDATE, DELETE ON commandes FROM reporting;SQL alimente des systèmes plus larges
Applications, API, Power BI et pipelines ETL/ELT se connectent à des bases ou entrepôts. SQL prépare, contrôle et expose les données, mais ne remplace pas l’interface, l’API, la supervision, la sauvegarde ni le réseau.
PostgreSQL ajoute JSONB, recherche textuelle et extensions géographiques. Ces fonctions sont puissantes, mais elles ne font pas partie d’un SQL identique sur tous les moteurs.
Quel outil choisir pour chaque problème ?
Essayez cette association : prix négatif → contrainte ; commande et paiement ensemble → transaction ; ancien prix à historiser → trigger ; rapport mensuel réutilisable → vue ; recherche par e-mail lente → index ; commercial limité à ses clients → permissions ou sécurité des lignes.
La page Puissance de SQL indique maintenant, pour chaque famille, ce qui est réellement praticable dans SQL.tn, seulement expliqué ou encore en préparation.
Découvrez jusqu’où SQL peut aller.
Explorez les capacités de SQL, leur dialecte et leur disponibilité réelle sur SQL.tn.
