Il linguaggio SQL (Structured Query Language) è lo standard con cui si interroga e si gestisce un database relazionale. Praticamente ogni motore relazionale lo supporta, ma ciascun vendor ne offre una propria variante: quella di Microsoft, usata da SQL Server e da Azure SQL Database, si chiama T-SQL (Transact-SQL). Per il DP-900 devi saper riconoscere le categorie di istruzioni SQL, capire che T-SQL è un dialetto (non un linguaggio diverso) e sapere a cosa serve ciascun oggetto di database.
Le categorie di istruzioni SQL
Le istruzioni SQL si raggruppano in famiglie in base a ciò che fanno:
- DDL (Data Definition Language) — definisce la struttura degli oggetti. Comandi tipici:
CREATE,ALTER,DROP. Esempio:CREATE TABLE Clienti (...)crea una nuova tabella. - DML (Data Manipulation Language) — lavora sui dati contenuti nelle tabelle. Comandi:
SELECT,INSERT,UPDATE,DELETE. (In alcune classificazioniSELECTè chiamato DQL, ma per l’esame rientra nella manipolazione dei dati.) - DCL (Data Control Language) — gestisce i permessi. Comandi:
GRANTeREVOKE, per concedere o togliere autorizzazioni a utenti e ruoli.
Un modo semplice per ricordarle: DDL = struttura, DML = dati, DCL = diritti.
T-SQL come dialetto Microsoft
T-SQL estende lo standard SQL con costrutti procedurali: variabili, logica condizionale (IF/ELSE), cicli (WHILE), gestione degli errori (TRY...CATCH) e funzioni proprietarie. Grazie a queste estensioni si possono scrivere oggetti programmabili come stored procedure e trigger, che il SQL puro non prevede.
I principali oggetti di database
Oltre alle tabelle, un database relazionale contiene diversi oggetti che ne migliorano riuso, prestazioni e integrità.
Viste (Views)
Una vista è una query salvata a cui si dà un nome, e che si comporta come una tabella virtuale. Non memorizza dati propri: li ricalcola al momento. Serve a semplificare query complesse e a esporre solo un sottoinsieme di colonne o righe, ad esempio nascondendo campi sensibili come lo stipendio.
Stored procedure
Una stored procedure è un blocco di codice T-SQL salvato ed eseguibile a comando. Può accettare parametri in ingresso, eseguire più istruzioni (anche INSERT/UPDATE) e restituire risultati. Vantaggi: riuso della logica, prestazioni (piano di esecuzione pre-compilato) e sicurezza. È ideale per incapsulare operazioni ricorrenti.
Funzioni (Functions)
Una funzione restituisce sempre un valore (scalare) o una tabella e si usa dentro una query, ad esempio nella clausola SELECT o WHERE. A differenza della stored procedure, di norma non modifica i dati: serve a calcolare o trasformare valori, come formattare una data o calcolare un totale.
Indici (Indexes)
Un indice è una struttura ausiliaria che velocizza la ricerca dei dati, come l’indice analitico di un libro. Migliora le prestazioni delle SELECT sulle colonne indicizzate, ma rallenta leggermente le scritture (INSERT/UPDATE/DELETE) perché va aggiornato. Serve quando cerchi spesso su determinate colonne.
Trigger
Un trigger è codice che si esegue automaticamente in risposta a un evento su una tabella, tipicamente un INSERT, UPDATE o DELETE. Si usa per auditing (registrare chi ha modificato cosa), per applicare regole di business complesse o per mantenere dati derivati coerenti. La parola chiave da riconoscere è “automaticamente, in reazione a una modifica”.
Trappole tipiche d’esame
- Scenario: devi eseguire automaticamente del codice ogni volta che qualcuno aggiorna una riga della tabella
Ordini. → Risposta giusta: un trigger (esecuzione automatica su evento DML), non una stored procedure (che va invocata esplicitamente). - Scenario: vuoi mostrare agli analisti solo alcune colonne di una tabella, nascondendo i dati sensibili, senza duplicare i dati. → Risposta giusta: una vista (tabella virtuale filtrata).
- Scenario: una query
SELECTsu milioni di righe è troppo lenta quando filtri perCodiceCliente. → Risposta giusta: creare un indice sulla colonnaCodiceCliente. - Scenario: un comando aggiunge una nuova colonna a una tabella esistente. A quale categoria SQL appartiene? → Risposta giusta: DDL (
ALTER TABLEmodifica la struttura), non DML. - Scenario: vuoi concedere a un ruolo il permesso di leggere una tabella. → Risposta giusta: DCL (
GRANT), non DDL né DML.