SELECT - Interrogazione di una tabella
Eccoci arrivati al capitolo più lungo ed articolato ma se vogliamo anche più semplice ed intuitivo della guida. COn l'istruzione SELECT possiamo creare degli script di interrogazione al database, interrogazioni dette query.
La sintassi base di una SELECT SQL è la seguente:
SELECT * FROM nome_tabelladove * sta per tutti i campi. La query
SELECT id, autore FROM autoriestrae tutti i campi dalla tabella autori. Al posto di * posso usare i nomi dei campi che mi interessa estrarre. Inseriamo adesso un filtro nella query utilizzando l'operatore WHERE:
SELECT autore FROM autori WHERE id = 1Il risultato sarà J.R.R. Tolkien. Possiamo anche decidere di conoscere l'id di una tabella in funzione di un altro parametro di ricerca. Ad esempio:
SELECT id FROM autori WHERE autore = 'J.R.R. Tolkien'Attenzione: effettuando una ricerca in funzione di un dato di tipo numerico non dobbiamo utilizzare gli apici per racchiudere il valore; in SQL i singoli apici delimitano una stringa.
Creiamo adesso una serie di query sulla tabella libri che, essendo più ampia, ci permette di giocare un po di più.
Estraiamo tutti i titoli dalla tabella libri dove l'id dell'autore è 1 ed il titolo inizia per I utilizzando gli operatori AND per stabilire due condizioni entrambe vere e LIKE per effettuare una ricerca generica:
SELECT titolo FROM libri WHERE id_autore = 1 AND titolo LIKE 'I*'L'operatore LIKE necessita del sotto-operatore * per identificare tutto il resto della stringa. 'I*' vuol dire tutto ciò che inizia per I.
LIKE permette di effettuare ricerche su stringhe a partire dall'inizio della stringa, dalla fine della stringa o dalla fine. Rispettivamente potremmo avere:
SELECT * FROM libri WHERE titolo LIKE '*Anelli'e/o
SELECT * FROM libri WHERE titolo LIKE '*Signore*'impostando semplicemente * come conviene. In altri DBMS il simbolo * per il LIKE viene sostituito da %.
Proviamo ad effettuare quattro ricerche in cui il prezzo è: inferiore a 50 euro; superiore a 50 euro; diverso da 50 euro; compreso tra 30 e 60 euro. Avremo rispettivamente:
SELECT * FROM libri WHERE prezzo < 50
SELECT * FROM libri WHERE prezzo > 50
SELECT * FROM libri WHERE prezzo <> 50
SELECT * FROM libri WHERE prezzo BETWEEN 30 AND 60Esiste poi il modo di unire i risultati di due tabelle in un unico risultato con le query di unione, grazie alla clausola UNION. Vediamo un esempio:
SELECT * FROM autori UNION SELECT * FROM libriPer fare altri esempi dobbiamo immaginare un diverso caso di studio. Create la tabella utenti composta dai campi id (AutoIncrement), nome (Text) e cognome (Text). In un simile caso possiamo avere molti nomi o cognomi uguali; se ad esempio avessimo una tabella dove ci sono molti utenti di nome Luca e volessimo estrarre solo una volta il dato Luca in una ricerca, dovremmo utilizzare la clausola DISTINCT come segue:
SELECT DISTINCT nome FROM utenti WHERE nome = 'Luca'Riprenderemo l'istruzione SELECT nei capitoli 11 e 12, parlando rispettivamente di relazioni e di funzioni di aggregazione dei dati.







