Selezionare i dati con la clausola WHERE
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".
Successivo: Contare i record di una tabella: COUNT AS
Precedente: Limitare i recordi in SELECT: clausola LIMIT