SELECT è solo una famiglia di operazioni
L'analisi è un ottimo punto di ingresso: SELECT, filtri, join e aggregazioni rispondono rapidamente alle domande. Ma un'applicazione aziendale deve prima creare le proprie tabelle, registrare i fatti, prevenire stati non validi, gestire diverse operazioni e limitare l'accesso.
L'esatto SQL dipende dallo DBMS e alcune attività sono amministrative anziché legate alla lingua. La mappa resta comunque utile per comprendere in che misura una database relazionale partecipa al sistema.
Creare struttura e garantire l'integrità
CREATE TABLE e ALTER TABLE descrivono colonne, tipi, identificatori e relazioni. NOT NULL, UNIQUE, CHECK e FOREIGN KEY posizionano regole semplici il più vicino possibile ai dati.
Un vincolo non sostituisce la validazione ergonomica dell'applicazione. Costituisce una difesa finale comune a tutti i processi che scrivono nel database.
CREATE TABLE produits (
id_produit INTEGER PRIMARY KEY,
designation TEXT NOT NULL,
prix NUMERIC NOT NULL CHECK (prix >= 0)
);Modifica senza lasciare un'operazione incompleta
INSERT, UPDATE e DELETE alterano i fatti. Uno transaction incornicia diverse voci che devono rimanere coerenti. Se il secondo fallisce, ROLLBACK annulla il tutto; COMMIT conferma quando tutto è valido.
SAVEPOINT consente di tornare a un passaggio intermedio. L'isolamento riguarda il modo in cui due transazioni concorrenti visualizzano i cambiamenti. Questi comportamenti devono essere testati sul motore reale.
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;Riutilizza la logica e automatizza con cautela
Una vista rende una query riutilizzabile. Una vista materializzata mantiene un risultato da aggiornare. Una funzione calcola o restituisce dati; una procedura può orchestrare un'operazione a seconda del motore.
Un trigger reagisce automaticamente a un evento INSERT, UPDATE o DELETE. È particolarmente adatto per alcuni controlli e cronologie, ma la sua logica è meno visibile nella query chiamante. Per una regola semplice come il prezzo positivo, preferisci un vincolo.
Accelera e limita l'accesso
Un indice può velocizzare una ricerca, ma consuma spazio e rallenta le scritture. EXPLAIN rivela il piano previsto; le statistiche aiutano il pianificatore. Ottimizzare significa misurare un caso reale, non aggiungere indici a tutte le colonne.
I ruoli GRANT e REVOKE impongono il privilegio minimo. PostgreSQL offre anche sicurezza a livello di linea. L'applicazione deve comunque autenticare i propri utenti e utilizzare una connessione adeguatamente protetta.
CREATE ROLE reporting;
GRANT SELECT ON ventes_mensuelles TO reporting;
REVOKE UPDATE, DELETE ON commandes FROM reporting;SQL alimenta sistemi più grandi
Applicazioni, API, pipeline Power BI e ETL/ELT si collegano a database o warehouse. SQL prepara, controlla ed espone i dati, ma non sostituisce l'interfaccia, l'API, il monitoraggio, il backup o la rete.
PostgreSQL aggiunge JSONB, ricerca testuale ed estensioni geografiche. Queste funzionalità sono potenti, ma non fanno parte di uno SQL identico su tutti i motori.
Quale strumento scegliere per ogni problema?
Prova questa combinazione: prezzo negativo → vincolo; ordine e pagamento insieme → transaction; vecchio prezzo da registrare → trigger; report mensile riutilizzabile → visualizza; ricerca e-mail lenta → indice; commerciale limitato ai propri clienti → autorizzazioni o sicurezza della linea.
La pagina SQL Power ora indica, per ogni famiglia, cosa è realmente praticabile in SQL.tn, solo spiegato o ancora in preparazione.
Scopri fin dove può arrivare SQL.
Esplora le capacità di SQL, il relativo dialetto e la disponibilità effettiva su SQL.tn.
