SQL è il linguaggio di definizione e manipolazione dei dati universalmente usato nelle basi di dati relazionali. Esso ha le seguenti funzioni:
Queste tre componenti del linguaggio, che esamineremo separatamente, sono in realtà interconnesse: la definizione e l'aggiornamento dei dati possono far uso delle interrogazioni sui dati. Inoltre, da definizione di particolari vincoli sui dati (le regole attive) coinvolge le operazioni di aggiornamento. Logicamente, la definizione dei dati precede l'aggiornamento che precede l'interrogazione. Didatticamente, data le dipendenze citate, è conveniente descrivere queste componenti in ordine inverso, cioè interrogazione, aggiornamento e definizione dei dati.
SQL è l'acronimo di Structured Query Language ed era originariamente il linguaggio di System R, uno dei primi prototipi di DBMS relazionale svuluppato dall'IBM a metà degli anni 70. Il successo di SQL è dovuto principalmente alla sua standardizzazione presso ANSI (American National Standards Institute) e ISO (International Standard Organization), processo a cui hanno partecipato gran parte dei produttori di DBMS relazionali. Esistono tre grosse versioni di SQL:
E' importante notare il comportamento dei sistemi commerciali a fronte di questi standard. Le funzionalità di base sono state implementate da quasi tutti i DBMS commerciali secondo lo standard. D'altronde, le funzionalità più avanzate sono raramente state realizzate. In particolare, SQL-3 è ben lontano da essere comunemente adottato, mentre SQL-2 è sostanzialmente stato implementato dai produttori del settore. Inoltre, alcuni DBMS hanno introdotto costrutti (ad esempio, domini) non presenti negli standard o modificato la sintassi dei comandi SQL. Il risultato è che ogni DBMS ha un proprio dialetto di SQL che condivide con lo standard le parti di base ma può aggiungere o mancare di altre funzionalità. In questo corso cercheremo di mostrare la parte dello standard SQL comunemente implementata.