Il linguaggio SQL
SQL è il linguaggio dichiarativo usato per l’accesso, la definizione e la manipolazione di collezioni di dati supportato da tutti i database relazionali. La specifica del risultato consiste in una selezione di una parte dei dati mediante condizioni sul contenuto di essi (condizioni basate su calcoli e algebra relazionale). Divenuto standard ufficiale nel 1986, è stato revisionato diverse volte (ultimo standard 2003) e nel 1999 sono state introdotte le caratteristiche “object-relational” (per le relazioni tra oggetti).
Il linguaggio comprende dunque istruzioni (sia DDL che DML) per la definizione, l’interrogazione e l’aggiornamento dei dati. Inoltre, ogni implementazione di SQL prevede comandi SDL.
DDL – Linguaggio di definizione dei dati
Nell’ultimo standard SQL i tipi di dato si suddividono in predefiniti e user-defined (definiti dall’utente).
I tipi predefiniti
- Tipi numerici: suddivisi a loro volta in numerici esatti e numerici approssimati.
- Numerici esatti (valori interi o decimali in virgola fissa, es. 6.2). I numerici esatti vengono rappresentati con:
- INTEGER (per valori interi) usualmente il numero totale di cifre è su 32 bit.
- SMALLINT (per valori interi) usati per dati di dimensioni inferiori a INTEGER, solitamente è 16 bit (hanno precisione inferiore a INTEGER).
- BIGINT (per valori interi) hanno precisione superiore a INTEGER e si usano per dati grandi, solitamente è 64 bit.
- NUMERIC/DECIMAL (per valori decimali) caratterizzato da una precisione (n° tot di cifre) e da una scala (n° di cifre dopo la virgola) es. NUMERIC (4,1) conterrà 999.9.
- Numerici approssimati invece sono rappresentati tramite:
- REAL (per valori reali a singola precisione in virgola mobile) la precisione dipende dall’implementazione di SQL.
- DOUBLE PRECISION (per valori reali a doppia precisione in virgola mobile) la precisione dipende dall’implementazione di SQL ma dev’esser maggiore di REAL.
- FLOAT (per valori reali alla precisione desiderata) indicata con FLOAT [(precisione)], anche qui la precisione massima dipende dall’implementazione di SQL.
- Numerici esatti (valori interi o decimali in virgola fissa, es. 6.2). I numerici esatti vengono rappresentati con:
- Tipi carattere: utilizzati per rappresentare caratteri, si suddividono in:
- CHARACTER (per stringhe di caratteri di lunghezza predefinita) spesso abbreviato in CHAR, la forma è CHAR[(n)] con n lunghezza della stringa, si possono inserire stringhe più brevi che vengono completate con spazi fino a raggiungere la lunghezza di n.
- CHARACTER VARYING (per stringhe di caratteri di lunghezza massima predefinita).