SQL (Structured Query Language) è un linguaggio standard utilizzato per gestire e manipolare database relazionali. È stato progettato per permettere agli utenti di definire, interrogare, aggiornare e gestire i dati all’interno di un RDBMS (Relational Database Management System). SQL è uno standard approvato da ANSI (American National Standards Institute) e ISO (International Organization for Standardization).
Funzionalità Principali di SQL
SQL è composto da vari tipi di comandi e dichiarazioni che si suddividono in diversi gruppi principali:
- DDL (Data Definition Language): Comandi utilizzati per definire e gestire la struttura del database.
CREATE
: Crea nuovi oggetti nel database (come tabelle, viste, indici).ALTER
: Modifica la struttura di oggetti esistenti (come aggiungere o rimuovere colonne da una tabella).DROP
: Elimina oggetti dal database (come tabelle o viste).TRUNCATE
: Rimuove tutti i record da una tabella, senza eliminare la struttura.
- DML (Data Manipulation Language): Comandi utilizzati per la gestione dei dati all’interno delle tabelle.
SELECT
: Recupera dati dal database.INSERT
: Inserisce nuovi record in una tabella.UPDATE
: Modifica i record esistenti in una tabella.DELETE
: Elimina i record da una tabella.
- DCL (Data Control Language): Comandi utilizzati per controllare l’accesso ai dati.
GRANT
: Concede permessi a utenti o ruoli.REVOKE
: Revoca permessi concessi a utenti o ruoli.
- TCL (Transaction Control Language): Comandi utilizzati per gestire le transazioni nel database.
COMMIT
: Conferma una transazione, rendendo permanenti le modifiche.ROLLBACK
: Annulla una transazione, ripristinando lo stato del database a prima della transazione.SAVEPOINT
: Crea un punto di salvataggio all’interno di una transazione, consentendo di effettuare rollback parziali.
Standardizzazione di SQL
SQL è stato standardizzato da diversi enti normativi nel corso degli anni, con numerose versioni che hanno aggiunto nuove funzionalità:
- SQL-86 (SQL-1): Prima versione standardizzata da ANSI nel 1986.
- SQL-89: Aggiunge correzioni minori e miglioramenti.
- SQL-92 (SQL-2): Introduce molte nuove funzionalità, inclusi comandi DDL e una maggiore standardizzazione.
- SQL:1999 (SQL-3): Aggiunge supporto per l’Object-Relational Database (ORDBMS), trigger, oggetti, funzioni e ricorsione.
- SQL:2003: Introduce XML come tipo di dato, tabelle temporali, e query su dati XML.
- SQL:2008: Aggiunge nuove funzioni di tipo
MERGE
, array, miglioramenti nelle espressioni regolari e nel supporto a standard specifici. - SQL:2011: Introduce miglioramenti sulle funzionalità per la gestione di dati temporali e transazioni.
- SQL:2016: Introduce il supporto per JSON, nuove funzioni analitiche, e miglioramenti nelle espressioni di ricerca.
- SQL:2019: Aggiunge miglioramenti su JSON, tipi di dati polimorfici, e supporto per nuovi tipi di dati.
Funzionalità Avanzate di SQL
- Stored Procedures: Blocco di codice SQL che può essere salvato e riutilizzato, con parametri di input e output.
- Trigger: Meccanismi che eseguono automaticamente un’azione quando si verifica un evento specifico (come un
INSERT
oUPDATE
). - Views (Viste): Tabelle virtuali basate sul risultato di una query SQL, utili per semplificare l’accesso ai dati e migliorare la sicurezza.
- Indici (Indexes): Strutture di dati che migliorano la velocità delle operazioni di lettura, ma possono rallentare le operazioni di scrittura.
Implementazioni di SQL
Mentre SQL è uno standard, ci sono differenze tra le implementazioni di SQL nei vari database come:
- MySQL
- PostgreSQL
- Microsoft SQL Server
- Oracle Database
- SQLite
Ogni database può avere estensioni e funzionalità specifiche che possono andare oltre lo standard SQL.