Linguaggio SQL – 1

Introduzione al linguaggio SQL

Video Lezione 1 – Il linguaggio SQL
introduzione

Il linguaggio SQL “Structered Query Language”, è stato ideato negli anni settanta, da un ricercatore americano nei laboratori della IBM nel 1974.
La sua ispirazione, venne dall’introduzione dalla necessità di rappresentare, e operare con i dati logici ovvero le informazioni, senza avere elevati skill informatici.
In seguito il matematico Cood, che ideo il modello “relazionale” per i database, la diffusione di SQL ebbe una diffusione enorme e venne adottato da tutti i software RDBMS “Relation Database Managment System”.
La sua potenza, è legata alla possibilità di lavorare in modo astratto sui dati e non sprecare tempo per organizzare, gestire i meccanismi di memorizzazione degli stessi che sono delegati al software DBMS. L’indipendenza della struttura logica del Database dalla struttura fisica come per altro teorizzato dalla regole di Cood, e affermato anche nel modello ANSI/SPARC consente ad operatori informatici di manipolare una grande quantità di dati in tempo reale e senza particolare difficoltà.
In questo articolo, illustro la struttura fondamentale del linguaggio SQL in modo sintetico.
Il linguaggio SQL secondo la teoria dei Database è costituito da un lessico e da una semantica non ambigua che attraverso la scrittura di frasi contenenti la rappresentazione astratta o logica dei dati, consente in poche istruzioni di realizzare operazioni di creazione del database e della sua struttura, di inserire e manipolare i dati, interrogare il database per operazioni di consultazione, e di amministrare il database.
Tali istruzioni sono raggruppate in istruzioni DDL “Data Definition Language”, DML “Data Manipulation Language”, QL “Query Language”, e DCL “Database Control Language”. Alcune di queste operazioni non sono permesse a tutti gli utenti ma solo ad utenti che possiedono privilegi sufficienti.
Possiamo quindi raggruppare le istruzioni in base alla loro tipologia:

TIPOLOGIA DDL, DML, QL, DCLISTRUZIONEDESCRIZIONE BREVE
DCLCREATE TABELECreazione della tabella
DDLALTER TABLEModifica della struttura della tabella
DMLINSERT INTOInserimento dati nella tabella
DMLUPDATEAggiornamento dati nella tabella
DMLDELETECancellazione dati nella tabella
QLSELECTInterrogazione delle tabelle
DCLGRANT, REVOKEassegnazione priviligei all’utente e revoca

Nella tabella ho riportato una parte piccolissima del lessico di SQL, con sintassi appena accennate.
E’ utile comprendere però la distinzione delle istruzioni secondo la loro tipologia. Man mano che saranno utilizzate sarà esposta la sintassi completa corredati di esempi.

Principi base del modello Relazionale

Nella progettazione logica mediante il modello relazionale, Cood ha definito un insieme di regole per derivare a partire dal modello concettuale Entità – Relazioni il modello Relazione.
In sintesi ad ogni entità corrisponde una relazione (tabella), composta da un numero di colonne pari al numero di attributi dell’entità. Ad ogni tabella è definita una chiave primaria come uno o più colonne che identificano una sola istanza (informazione sull’entità). Le Entità associate mediante relazioni 1 a 1, 1 a M e M a N, determinano la presenza di una o più chiavi esterne.
Tali chiavi esterne sono definite come colonne aggiuntive nell’Entità di destinazione, con i relativi vincoli di integrità referenziale.
Nel caso di due entità legate da una relazione a 1 a M.

Ogni attributo deve essere preceduto dal nome della tabella nelle operazioni che coinvolgono più
tabelle separate dal carattere “.”
Ogni stringa e data sono indicati fra all’interno dei caratteri ” ‘ ‘ “
Ogni frase SQL può contenere una serie operatori di relazione più l’operatore Like che significa
“Simile”. Indicando ad esempio “f*” indica tutte le parole che iniziano con la lettera “f”, ma con una
sequenza di caratteri qualsiasi. Con il simbolo “?” indichiamo un solo carattere qualunque. Ad
esempio “quadr?” può essere “quadro”, “quadrr”, ecc.
Nelle frasi SQL fra parentesi quadre si indica un Input atteso dall’utente durante l’esecuzione delle
query
Esistono delle funzioni di conteggio COUNT, somma SUM, media AVG, MAX che permette di
calcolare il massimo di N valori che permettono di effettuare delle elaborazioni sui dati di tipo
matematico.
Tipi di dati di SQL
Il lingauggio SQL ammette diversi tipi di dati citeremo quelli più importanti:
Interi piccolissimi ovvero TINYINT fra -127 a +128, o fra 0 e 255 senza segno “UNSIGNED”;
Interi piccoli ovvero SMALLINT fra -32767 a + 32768 o fra 0 e 65535 senza segno “UNSIGNED”;
Interi grandi INT a 4 byte;
Interi Enormi BIGINT a 8 byte;
Reali in precisione M,D ovvero FLOAT(M,D) ovvero M cifre intere e D dopo la virgola, o anche
REAL(M,D);
Decimali in precisione X,Y ovvero DECIMAL(X,Y) cioè quante cifre X sono significative, e quante
cifre Y dopo la virgola
Stringhe CHAR(n) o VARCHAR(n) ovvero stringhe di lunghezza fissa di n caratteri o di lunghezza
massima fino a n caratteri;
Stringhe grandi di tipo LONGTEXT, MEDIUMTEXT, BIGTEXT in formato ASCII;
Stringhe binarie di tipo BLOB, MEDIUMBLOB, LONGBLOB per immagazinare immagini, file ecc.
Date in vari formati: DATE “aaaa-mm-dd”, oppure DATETIME “aaaa-mm-dd hh:mm:ss”;
Definizione Tabelle
In SQL per creare una tabella si usa la frase CREATE TABLE.
La sintassi della CRETE TABLE è:
CREATE TABLE nome tabella (nome campo 1 tipo 1, nome campo 2 tipo 2, nome campo 3 tipo 3, ..,
nome campo n tipo n,)
Nella dicitura nome campo 1 tipo 1 posso scrivere anche nome campo 1 tipo PRIMARY KEY NOT
NULL, per dire che è chiave primaria della tabella, oppure nome campo 1 tipo 1 REFERENCES
tabella(nome campo collegato) per collegare due tabelle mediante chiave esterna. SI può anche utilizzare
una frase del tipo nome campo 1 tipo 1 DEFAULT valore indicando un valore iniziale per il campo.
Come esempio creiamo una tabella dei conti correnti bancari di una banca si ha:
CREATE TABLE CONTI (COD_CONTO CHAR(10) PRIMARY KEY NOT NULL,
INTESTATARIO VARCHAR(50) NOT NULL, DATA_NASCITA DATE NOT NULL DEFAULT ‘1950-01-01’, SALDO
DECIMAL(10,2));
Si osservi che il codice conto è chiave primaria con lunghezza fissa di 10 caratteri, mentre l’intestatario ha
un campo stringa variabile, la data di nascita ha un valore predefinito, mentre il saldo del conto viene
messo in 10 cifre intere e 2 decicmali.
Inserimento dati nelle tabelle
A questa classe appartiene l’istruzione INSERT
La sintassi completa è INSERT INTO nome tabella VALUES (valore campo1, valore campo2, …, valore
campoN); con la distinzione che i valori dei campi sono fra apici se stringhe e dati, e che si deve ricordare
l’ordine dei campi nella tabella. Infatti la sintassi completa è:
INSERT INTO nome tabella (campo1, campo2, …, campoN) VALUES (valore campo1, valore campo2, …,
valor ecampoN);
Supponendo di voler inserire i dati nella tabelle precedente si ha:
INSERT INTO CONTI VALUES (‘000000sp001’, ‘DE RITIS ANTONIO’, ’02/10/1959”, 3000);.
Modifica dei dati
A questa categoria appartengono le istruzioni UPDATE, DELETE, la prima permette di aggiornare dati, la
seconda di cancellarli. La sintassi completa è:
UPDATE nome tabella SET nome campo1=valore1, nome campo2=valore, .., nome campoN = valore;
Ovviamente è possibile cambiare anche solo un attributo ad esempio nella tabella conti si vuole impostare
il saldo a 5000 euri, allora si ha:
UPDATE CONTI SET saldo=5000;
Per cancellare la tabella si può effettuare la cancellazione completa con DELETE * FROM nome tabella;
oppure in modo selettivo con l’istruzione:
DELETE FROM nome tabella WHERE condizione;
Ad esempio è possibile cancellare dalla tabella conti tutti quelli con saldo < 0. In questo caso si ha:
DELETE FROM CONTI WHERE saldo<0;
Istruzioni di modifica struttura alla tabella
Modificare la struttura della tabella è sempre possibile anche se è consigliabile di creare la tabella già con
tutti i campi necessari alla soluzione del problema posto. Spesso viene però utilizzata per estendere le
tabelle con nuove richieste per la gestione. In questo caso la frase SQL è:
ALTER TABLE nome tabella ADD COLUMN nome campo tipo BEFORE | AFTER nome campo
esistente;
Ad esempio aggiungiamo alla tabella CONTI, il campo CODICE FISCALE dopo il cognome si ha:

ALTER TABLE CONTI ADD COLUMN codice_fiscale AFTER cognome;

Per cancellare un campo si ha:

ALTER TABLE nome tabella DROP COLUMN nome campo;.

Video Lezione 1 – Il linguaggio SQL