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
- conoscere il concetto teorico di Database
- conoscere le potenzialità pratiche di un DB
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 … FROMLa query più semplice in assoluto è quella che aggrega tutti i dati presenti in una tabella.SELECTindividua i campi che verranno visualizzatiFROMspecifica in quale tabella si trovano le informazioni a cui la query stessa si riferisce
SELECT nome_campo[,nome_campo,…] FROM nome_tabellaoppureSELECT nome_tabella.nome_campo[,nome_tabella.nome_campo,…] FROM nome_tabellapossono essere specificati tutti i campi desiderati della tabella, separati da una virgola.
SELECT * FROM nome_tabellaindica 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 … WHERESe 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_campostabilisce la visualizzazione in ordinamento crescente rispetto al campo indicatoORDER BY nome_campo DESCstabilisce 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 tabellaWHERE 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.