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.

Servizi correlati

Altre voci

P

Prodotto minimo funzionante

Il prodotto minimo funzionante (in inglese minimum viable product, in acronimo MVP) è la versione di un prodotto con caratteristiche appena sufficienti per essere utilizzabile dai primi clienti, i quali possono quindi fornire feedback per lo sviluppo futuro del prodotto stesso.

Leggi la voce →
D

Database management system

Un database management system (in acronimo DBMS, lett. "sistema di gestione della base di dati" in italiano) è un sistema software progettato per consentire la creazione, la manipolazione e l'interrogazione di una o più basi di dati in modo corretto ed efficiente.

Leggi la voce →
Interfaccia graficaI

Interfaccia grafica

L'interfaccia grafica, nota anche come GUI (dall'inglese graphical user interface), in informatica è un tipo di interfaccia utente che consente l'interazione uomo-macchina in modo visuale utilizzando rappresentazioni grafiche (es. widget) piuttosto che utilizzando i comandi tipici di…

Leggi la voce →
M

MariaDB

MariaDB è un RDBMS nato da un fork di MySQL creato dal programmatore originale di tale programma. Aperto ai contributi della comunità, l'area di sviluppo principale è lo storage engine Aria, precedentemente chiamato Maria da cui deriva MariaDB; si tratta di un'evoluzione di MyISAM. Viene…

Leggi la voce →
C

Cloud computing

Il cloud computing, in italiano nuvola informatica o servizi nella nuvola, indica un paradigma di erogazione di servizi offerti su richiesta da un fornitore a un utente finale attraverso la rete internet (come l'archiviazione, l'elaborazione o la trasmissione dati), a partire da un insieme di…

Leggi la voce →
S

Specifica (ingegneria del software)

Il termine specifica, nell'ingegneria del software, viene usato in diversi contesti con significati diversi. In genere si può definire come un accordo tra un produttore di servizi ed un utente. A seconda del contesto il produttore e l'utente saranno diversi.

Leggi la voce →