Structured Query Language
Structured Query Language o in breve SQL (/ɛskjuːˈɛl/ ) è un linguaggio standardizzato per database basati sul modello relazionale (RDBMS), progettato per le seguenti operazioni:
Structured Query Language o in breve SQL (/ɛskjuːˈɛl/ ) è un linguaggio standardizzato per database basati sul modello relazionale (RDBMS), progettato per le seguenti operazioni:
creare e modificare schemi di database (DDL = Data Definition Language);
inserire, modificare e gestire dati memorizzati (DML = Data Manipulation Language);
interrogare i dati memorizzati (DQL = Data Query Language);
creare e gestire strumenti di controllo e accesso ai dati (DCL = Data Control Language).
A dispetto del nome, non si tratta perciò di un semplice linguaggio di interrogazione: alcuni suoi sottoinsiemi, infatti, permettono di creare, gestire e amministrare database.
Storia
Il SQL nasce nel 1974 ad opera di Donald Chamberlin, nei laboratori dell'IBM. Nasce come strumento per lavorare con database che seguano il modello relazionale. A quel tempo però si chiamava SEQUEL (per questo la corretta pronuncia IPA di SQL è /ɛskjuːˈɛl/ e quella informale /ˈsiːkwəl/). Nel 1975 viene sviluppato un prototipo chiamato SEQUEL-XRM; con esso si eseguirono sperimentazioni che portarono, nel 1977, a una nuova versione del linguaggio, che inizialmente avrebbe dovuto chiamarsi SEQUEL/2 ma che poi divenne, per motivi legali (il nome SEQUEL era già stato usato, e soprattutto registrato, in un altro ambito per una compagnia aerea), SQL. Su di esso si sviluppò il prototipo System R, che venne utilizzato da IBM per usi interni e per alcuni suoi clienti. Ma, dato il suo successo, anche altre società iniziarono subito a sviluppare prodotti basati su SQL. Nel 1981 IBM iniziò a vendere alcuni prodotti relazionali e nel 1983 pubblicò DB2, il suo RDBMS (relational database management system) diffuso negli ultimi anni del XX secolo. SQL divenne subito lo standard industriale per i software che utilizzano il modello relazionale.
L'ANSI lo adottò come standard fin dal 1986, senza apportare modifiche sostanziali alla versione inizialmente sviluppata da IBM. Nel 1987 la ISO fece lo stesso. Questa prima versione standard è denominata SQL/86. Negli anni successivi si realizzarono altre versioni, che furono SQL/89, SQL/92 e SQL/2003. Tale processo di standardizzazione mirava alla creazione di un linguaggio che funzionasse su tutti i DBMS relazionali, ma questo obiettivo non fu raggiunto. Infatti, i vari produttori implementarono il linguaggio con numerose variazioni e, in pratica, adottarono gli standard ad un livello non superiore al minimo, definito dall'Ansi come Entry Level.
Caratteristiche
SQL è un linguaggio per interrogare e gestire basi di dati mediante l'utilizzo di costrutti di programmazione denominati query. Con SQL si leggono, modificano, cancellano dati e si esercitano funzioni gestionali e amministrative sul sistema dei database. La maggior parte delle implementazioni dispone di interfaccia alla riga di comando per l'esecuzione diretta di comandi, in alternativa alla sola interfaccia grafica GUI.
Originariamente progettato come linguaggio di tipo dichiarativo, si è successivamente evoluto con l'introduzione di costrutti procedurali, istruzioni per il controllo di flusso, tipi di dati definiti dall'utente e varie altre estensioni del linguaggio. A partire dalla definizione dello standard SQL:1999 molte di queste estensioni sono state formalmente adottate come parte integrante di SQL nella sezione SQL/PSM dello standard.
Alcune delle critiche più frequenti rivolte ad SQL riguardano la mancanza di portabilità del codice fra vendor diversi, il modo inappropriato con cui vengono trattati i dati mancanti (NULL), e la semantica a volte inutilmente complicata.
Struttura
Essendo un linguaggio dichiarativo, SQL non richiede la stesura di sequenze di operazioni (come ad esempio i linguaggi imperativi), piuttosto di specificare le proprietà logiche delle informazioni ricercate. Esso si divide in:
Data Definition Language (DDL) - permette di creare e cancellare database o di modificarne la struttura
Data Manipulation Language (DML) - permette di inserire, cancellare, modificare i dati
Data Control Language (DCL) - permette di gestire gli utenti e i permessi
Query language (QL) - permette di interrogare il database, cioè di leggere i dati.
Device Media Control Language (DMCL) - permette di controllare i supporti (memorie di massa) dove vengono memorizzati i dati.
Operatori
Gli operatori, messi a disposizione dal SQL standard si dividono in sette categorie:
Operatori di assegnazione
Operatori di confronto
Operatori stringa
Operatori aritmetici
Operatori condizionali
Operatori logici
Operatori tra bit
Operatori di assegnazione
Gli operatori di assegnazione assegnano un valore a una variabile o a un campo.
= Esprime un'assegnazione e non restituisce alcun valore.
:= Esprime un'assegnazione di un valore ad una variabile non ancora istanziata e non restituisce alcun valore.
MCMX