Home

Lezione 2

Lezione 1 - SQL: DataBase, tabelle e query

Pre-requisiti necessari
Cos'è un database? Brevissimo ripasso
Significato e uso di SQL
Parole del linguaggio: SELECT ... FROM
Parole del linguaggio: ORDER BY ... WHERE

Pre-requisiti necessari

I pre-requisiti fondamentali per affrontare la gestione di un Database tramite SQL sono:

oppure

Cos'è un database? Brevissimo ripasso

Molto brevemente affrontiamo il concetto di database (DB), che comunque avremo modo di vedere a fondo con gli esempi che affronteremo lungo il percorso.
Un database è un insieme di informazioni organizzate, generalmente dotato di un'interfaccia in grado di orientarsi all'interno di tale organizzazione. L'interfaccia in questione, strettamente dipendente dal tipo di strutturazione dei dati del DB, prende il nome di DBMS (Data Base Management System).

In un database le informazioni elementari (possiamo chiamarle campi) possono essere caratterizzate da un tipo e da una dimensione. Per esempio, i dati possono essere numerici (interi o reali, "lunghi" o "corti"), possono essere un testo, una data (in senso temporale), un oggetto più complesso (un'immagine, un documento...), un'informazione logica (vera o falsa) o altro. I dati di tipo numerico e testo, generalmente possono essere definiti con una dimensione, che dipende dal tipo di informazione che verrà memorizzata.
I campi che hanno un legame logico vengono aggregati in tabelle. Per esempio tutti i dati anagrafici di una persona (Cognome, Nome, Data di nascita, Indirizzo, Telefono, CF, ecc.) sono campi. La loro aggregazione dà origine alla tabella Anagrafico che viene così strutturata:
una riga per ogni persona (record)
una colonna per ogni informazione elementare (campo).
Ne vedremo da qui in avanti esempi in abbondanza. La corretta suddivisione dei campi in tabelle, in un problema complesso, è la prima e fondamentale questione che deve affrontare chi si prepara a progettare un database.

Significato e uso di SQL

SQL è l'acronimo di Structured Query Language, vale a dire Linguaggio Strutturato di Interrogazione.
Interrogazione è qualsiasi intervento su un DB finalizzato al reperimento di dati. I dati individuati attraverso un'interrogazione (o query) saranno organizzati secondo criteri che possono essere stabiliti.

Ricordiamo che in un database le informazioni elementari (campi) sono memorizzate in tabelle delle quali va definita la struttura di base

Parole del linguaggio: SELECT ... FROM

La query più semplice in assoluto è quella che aggrega tutti i dati presenti in una tabella.

SELECT
individua i campi che verranno visualizzati
FROM
specifica in quale tabella si trovano le informazioni a cui la query stessa si riferisce

SELECT nome_campo[,nome_campo,...] FROM nome_tabella

oppure
SELECT nome_tabella.nome_campo[,nome_tabella.nome_campo,...] FROM nome_tabella
possono essere specificati tutti i campi desiderati della tabella, separati da una virgola.

SELECT * FROM nome_tabella

indica che si vogliono mostrare tutti i campi della struttura della tabella: un asterisco ( * ) sostituisce l'elenco dei campi.

Esempio 1


Istruzione SQL

SELECT * FROM Studenti

Esempio 2


Istruzione SQL

SELECT ID_Studente, Cognome, Città FROM Studenti

oppure

SELECT Studenti.ID_Studente, Studenti.Cognome, Studenti.Città
FROM Studenti

Parole del linguaggio: ORDER BY ... WHERE

Se non si stabilisce diversamente, l'ordinamento dei dati selezionati è determinato dalla chiave primaria. Quando serve un ordinamento rispetto ad un campo diverso, è possibile stabilire chiave e senso dell'ordinamento stesso.

ORDER BY nome_campo
stabilisce la visualizzazione in ordinamento crescente rispetto al campo indicato

ORDER BY nome_campo DESC
stabilisce la visualizzazione in ordinamento decrescente rispetto al campo indicato

E' possibile selezionare un sottoinsieme di record individuabili attraverso un criterio comune, basato sul contenuto di uno o più campi, nella struttura della tabella

WHERE nome_campo = Valore

oppure combinazioni diverse di condizioni

WHERE ( nome_campo1 > Valore1 ) AND ( nome_campo1 < Valore2 )
WHERE ( nome_campo1 = Valore1 ) OR ( nome_campo2 = Valore2 )
WHERE ( nome_campo <> Valore )

e così via.
Naturalmente le diverse specifiche del linguaggio possono essere usate insieme.

Esempio 3.1


Istruzione SQL

SELECT ID_Studente, Cognome, Città FROM Studenti ORDER BY Cognome

Esempio 3.2


Istruzione SQL

SELECT Cognome, Nome, Città FROM Studenti ORDER BY Nome DESC

Esempio 4


Istruzione SQL

SELECT ID_Studente, Cognome FROM Studenti ORDER BY Cognome
WHERE Città = 'Crema'


Attraverso questi esempi sono stati realizzati interventi diversi sui dati di partenza.
SELECT permette di estrarre dalla tabella iniziale un sottoinsieme di campi, quindi genera un set di dati, una sorta di "tabella" fittizia formata da un numero di colonne minore rispetto alla tabella originaria. Un'operazione del genere prende il nome di Proiezione

WHERE permette di estrarre dalla tabella iniziale un sottoinsieme di record, quindi genera anch'esso una "tabella" fittizia formata da un numero di righe minore rispetto alla tabella originaria. Un'operazione del genere prende il nome di Selezione

Inutile ricordare che sui dati di una tabella è possibile effettuare insieme le operazioni di proiezione e selezione.

Nota importante
Le informazioni visualizzate attraverso l'interrogazione di un DB, qualunque sia il tipo di selezione fatta attraverso la query, NON generano dati ulteriori rispetto alle tabelle di partenza del DB. Le uniche informazioni esistenti, vale a dire fisicamente memorizzate, sono quelle contenute nelle tabelle.
Le interrogazioni SQL permettono di aggregare i dati secondo criteri diversi, limitandosi a MOSTRARLI sulla base delle indicazioni della query.


Home

Lezione 2