Sei qui: Home » Guide » MySQL » Guida di base a MySQL » Selezionare i dati con la clausola WHERE

Selezionare i dati con la clausola WHERE

La potenzialità dei database SQL sta nel fatto che possono restituire un set di dati "filtrato". Abbiamo visto che con SELECT possiamo ottenere i record presenti nella tabella di riferimento; spesso però non sono necessari tutti i dati di una tabella ma soltanto parte di essi. Nel nostro esempio "bancario" potremmo aver bisogno di visionare dei record che corrispondono a dei criteri che, ad esempio, potrebbero essere quelli relativi all'ID, al nome, al tipo di conto e via dicendo. In altre parole potremmo necessitare di informazioni "filtrate" dalla tabella. In questo caso useremo le clausole.

La clausola WHERE

La clausa WHERE istruisce a MySQL di reperire i record che soddisfino una certa condizione. Se ad esempio volessimo vedere chi è il cliente con l'ID 1, useremo questa quera:
SELECT * FROM clienti WHERE ID = '1';
+----+-------+---------+----------+---------------------+------------+
| ID | nome | cognome | telefono | data_apertura_conto | tipo_conto |
+----+-------+---------+----------+---------------------+------------+
| 1 | Mario | Rossi | 02-12345 | 2008-01-10 | family |
+----+-------+---------+----------+---------------------+------------+
1 row in set (0.00 sec)
Da notare che il valore ID è racchiuso tra apici. Sebbene non sia necessario racchiudere i valori tra apici dovrebbe essere una buona abitudine farlo.

Un altro esempio potrebbe essere il seguente: vogliamo trovare tutti i clienti che hanno un conto di tipo family.
SELECT * FROM clienti WHERE tipo_conto = 'family';
+----+---------+---------+----------+---------------------+------------+
| ID | nome | cognome | telefono | data_apertura_conto | tipo_conto |
+----+---------+---------+----------+---------------------+------------+
| 1 | Mario | Rossi | 02-12345 | 2008-01-10 | family |
| 2 | Antonio | Bianchi | 02-55555 | 2008-10-01 | family |
| 3 | Adele | Sereni | 06-12345 | 1999-10-01 | family |
+----+---------+---------+----------+---------------------+------------+
Possiamo anche immettere più condizioni che sono relazionate tra loro tramite gli operatori logici AND ed OR. Ad esempio se volessimo ritrovare tutti i record che corrispondono al conto di tipo family ma la cui apertura è successiva all'anno 2000 dovremmo usare la query:
SELECT * FROM clienti WHERE tipo_conto = 'family' AND data_apertura_conto > '2000-01-01';
+----+---------+---------+----------+---------------------+------------+
| ID | nome | cognome | telefono | data_apertura_conto | tipo_conto |
+----+---------+---------+----------+---------------------+------------+
| 1 | Mario | Rossi | 02-12345 | 2008-01-10 | family |
| 2 | Antonio | Bianchi | 02-55555 | 2008-10-01 | family |
+----+---------+---------+----------+---------------------+------------+
2 rows in set (0.00 sec)
Anche in questo caso è opportuno ricordare che la data rispetta il formato SQL (YYY-MM-DD) e non quello classico (GG-MM-YYYY).

La clausola WHERE LIKE

Fino adesso abbiamo specificato esattamente il valore delle condizioni (ID, tipo_conto e data). In alcuni casi potremmo necessitare di una maggiore flessibilità per quello che concerne la ricerca in dei determinati campi. Ad esempio se volessimo ricavare tutti i clienti il cui prefisso del numero di telefono inizia per 02 potremmo usare la clausola WHERE LIKE.
SELECT * FROM clienti WHERE telefono LIKE '02%';
+----+---------+---------+----------+---------------------+------------+
| ID | nome | cognome | telefono | data_apertura_conto | tipo_conto |
+----+---------+---------+----------+---------------------+------------+
| 1 | Mario | Rossi | 02-12345 | 2008-01-10 | family |
| 2 | Antonio | Bianchi | 02-55555 | 2008-10-01 | family |
+----+---------+---------+----------+---------------------+------------+
2 rows in set (0.00 sec)
Ponendo LIKE istruiamo MySQL a ricercare il campo con una certa flessibilità. Il carattere percentuale, ad esempio, vuol dire "cerca successivamente qualsiasi altro carattere o stringa".
Ricerca
News
giu 3, 2010
È stato appena rilasciato, dalla società JetBrains, un nuovo IDE per la creazione rapida di progetti Web/PHP/MySQL.

tag: phpstorm, IDE, php

apr 3, 2010
Rilasciato JQuery UI in versione stabile. La release 1.8, oltre a numerosi bugfix, possiede due interessanti Widgets.

tag: jquery

mar 12, 2010
È stato da poco rilasciato il famoso forum SMF in versione 2.0RC3; tanti bugfix e un'aspetto più consolidato.

tag: smf, vbulletin, forum

mar 11, 2010
Un articolo "passo-passo" che spiega come configurare Google Apps con un qualsiasi tipo di pacchetto TopHost. Un'accoppiata vincente!

tag: TopHost, Google Apps

mar 9, 2010
Inserita la guida completa a PHP

tag: howtoprog

mar 8, 2010
Il sito è in fase di restyling; ci scusiamo per gli eventuali disagi ma, come vedrete a breve, vale la pena pazientare qualche giorno!