Linguaggio SQL
Definizione di database
Un Data Base non è altro che un insieme di archivi di dati, strettamente correlati e ben strutturati, memorizzati su supporti di memoria di massa, che costituiscono una base di lavoro per più programmi applicativi e utenti diversi. Lo scopo di tale organizzazione dei dati è quello di garantire una maggiore efficienza (e quindi un aumento della produttività aziendale) nel loro trattamento, superando i limiti delle strutture "tradizionali" degli archivi; in particolare devono essere garantite la "consistenza" dei dati (ossia i dati devono risultare "significativi"), la loro sicurezza (in modo che non vengano danneggiati da manipolazioni non autorizzate o accidentali) e la loro "integrità" (in modo da evitare una perdita di consistenza dei dati stessi).
L'SQL
Uno dei requisiti fondamentali per poter utilizzare un Data Base Relazionale è avere un linguaggio che ci permetta di "interrogarlo" opportunamente; tale linguaggio si chiama RDBMS (Relational Data Base Management System). Nel 1986 l'ANSI, l'istituto americano per gli standard nazionali, pubblicò l'ANSI-SQL (Structured Query Language), il primo standard del linguaggio, ma da allora sono nate diverse versioni, che hanno differenze sostanziali l'una con l'altra. I più diffusi linguaggi SQL oggi sono:
- Oracle SQL;
- SQLServer;
- PostgreSQL;
- MySQL;
- SQLInformix;
- Access.
Nel presente trattato si farà riferimento all'ANSI-SQL.
Il linguaggio SQL
La sigla SQL è diventata sinonimo di linguaggio standard per la gestione dei Data Base Relazionali e la sua nascita risale al 1981, quando venne presentato dall'IBM come prodotto per la gestione di dati in ambiente DOS/VSE, con il nome di SQL/DS. L'SQL è un linguaggio speciale: è una specie di strato virtuale tra tutto ciò che utilizza i dati (utenti e programmi) e la struttura dei dati stessi (Data Base). Segue, non sempre fedelmente, il modello relazionale ed è, in un certo senso, un linguaggio chiuso, cioè ha come elemento base le tabelle e ogni suo operatore produce sempre tabelle.
Assolve alle funzioni di Data Description Language (DDL), per la definizione della struttura dei dati, e di Data Management Language (DML), per la modifica dei dati, e può essere usato sia come linguaggio di interrogazione (QL) a sé stante, di tipo non procedurale, che come linguaggio ospite (Embedded) di un linguaggio procedurale. Nel primo caso il lavoro viene impostato in modalità interattiva (non ci sono routine batch), nel secondo caso si sviluppano programmi che devono essere "immersi" in altri programmi sviluppati in un linguaggio evoluto (ad es. il Cobol) e solo in questo modo possono essere eseguiti.
L'interfaccia utente varia da ambiente ad ambiente ma, quasi sempre, c'è un prompt, alcuni messaggi di aiuto (riga di stato) e una segnalazione relativa all'esecuzione del comando impostato. I dati sono organizzati in tabelle, dove le colonne sono gli attributi e le righe sono le istanze degli attributi (record). Le tabelle sono di due tipi: le tabelle-base, create dall'utente, permettono la memorizzazione fisica dei dati, e le tabelle-derivate, che sono il risultato logico (non fisico) di operazioni relazionali sulle tabelle-base.
All'interno del Data Base, oltre alle tabelle relative ai dati informativi dell'utente, c'è una zona speciale, detta DataBaseSpaces, che contiene tabelle di descrizione delle tabelle dei dati, dette tabelle-catalog, nonché informazioni sull'utente che ha generato il Data Base e che risulta il solo autorizzato a gestire le tabelle lì contenute. Questo aspetto garantisce il livello di sicurezza necessario in ambiente multiutente, in cui si condividono risorse non solo fisiche ma, soprattutto, logiche.
Tra gli attributi (colonne) "giocano" un ruolo importante le chiavi, che sono combinazioni di attributi che consentono di individuare univocamente una riga. Una volta comunicato al sistema se vi sia una chiave per la tabella in uso, SQL ne garantisce la coerenza, cioè non accetta due record (righe) con la stessa chiave e la chiave deve necessariamente contenere un valore definito per ogni record.
Identificatori e tipi di dati
Nel linguaggio SQL gli identificatori, cioè i nomi delle tabelle e degli attributi, sono costituiti da sequenze di caratteri con lunghezza massima di 18 caratteri, devono iniziare con una lettera e possono contenere il carattere "_" (underscore o underline). I tipi di dati standard del linguaggio SQL sono:
- CHARACTER(n) (o CHAR(n)): stringa di lunghezza n (con 1<n<15000);
- DATE: data nella forma MM/GG/AA;
- TIME: ora nella forma HH:MM;
- INTEGER(p) (o INT(p)); numero intero con precisione p (con 1<p<45);
- SMALLINT: numero intero con precisione 5 cifre (da -32768 a 32767);
- INTEGER: numero intero con precisione 10 cifre (-2.147.483.648 a 2.147.483.647);
- DECIMAL(p,s): numero decimale con precisione p e s numeri decimali (con 1<p<45 e 0<s<p);
- REAL: numero reale con mantissa di precisione 7;
- FLOAT: numero reale con mantissa di precisione 15;
- FLOAT(p): numero reale con mantissa di precisione p (con 1<p<45).
Nel Data Base, i campi in cui non è disponibile alcun valore assumono il valore di "Null". Negli ordinamenti il valore Null compare all'inizio delle sequenze crescenti e alla fine delle sequenze decrescenti. Nella scrittura delle condizioni si possono utilizzare gli operatori logici NOT, AND e OR.
-
Programmazione - le basi
-
Linguaggio SQL
-
Basi di dati - linguaggio SQL
-
Basi di dati - il linguaggio di interrogazione SQL - esercitazione