dal 2015 - visita n. 615
Clausola where
Clausola where

 

Clausola where

Dopo aver visto il comando SELECT per prelevare i dati da una tabella MySQL, vediamo come filtrare i risultati tramite la clausola condizionale WHERE. Questa clausola consente di specificare un criterio di selezione durante il prelievo dei record di una tabella.

Sintassi

Ecco la sintassi generale del comando SELECT con la clausola WHERE per il prelievo di dati da una tabella MySQL:

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....

La clausola WHERE funziona come la condizione if in un qualsiasi linguaggio di programmazione. Questa clausola viene utilizzata per confrontare il valore fornito con il valore del campo disponibile nella tabella MySQL. Il record viene restituito se il valore dato dall'esterno è uguale al valore del campo disponibile nella tabella MySQL.

Ecco l'elenco degli operatori che possono essere utilizzati con WHERE.
La colonna Esempio è stata compilata assumendo A=10 e B=20.

OperatoreDescrizioneEsempio
=Controlla se i valori dei due operandi sono uguali o meno, se uguali allora la condizione diventa vera. (A = B) falso.
!=Controlla se i valori dei due operandi sono uguali o meno, se diversi, allora la condizione diventa vera. (A != B) vero.
>Controlla se il valore dell'operando di sinistra è maggiore dell'operando di destra. Se vero, allora la condizione diventa vera. (A > B) falso.
<Controlla se il valore dell'operando di sinistra è minore dell'operando di destra. Se vero, allora la condizione diventa vera. (A < B) vero.
>=Controlla se il valore dell'operando di sinistra è maggiore o uguale rispetto all'operando di destra. Se vero, allora la condizione diventa vera. (A >= B) falso.
<=Controlla se il valore dell'operando di sinistra è minore o uguale rispetto all'operando di destra. Se vero, allora la condizione diventa vera. (A <= B) vero.

La clausola WHERE è molto utile quando si desidera recuperare le righe selezionate da una tabella, soprattutto quando si utilizza Join. I join verranno trattati in una prossima sezione.

E' una pratica comune ricercare i record utilizzando la chiave primaria al fine di rendere la ricerca più veloce.

Se una data condizione non corrisponde ad alcun record nella tabella non verrà restituito nessuna riga.


Prelievo dati a linea di comando

Ecco come usare il comando SELECT con clausola WHERE per recuperare i dati selezionati dalla tabella dbprova_tbl.

Esempio

L'esempio proposto restituirà tutti i record dalla tabella dbprova_tbl dove il nome dell'autore è S. Pinco:

# mysql -u root -p password;

E, dopo l'inserimento della password di root:

mysql> use DBPROVA;
Database changed
mysql> SELECT * from dbprova_tbl WHERE prova_author='S. Pinco';
+-------------+----------------+-----------------+-----------------+
| prova_id    | prova_title    | prova_author    | submission_date |
+-------------+----------------+-----------------+-----------------+
|           3 | JAVA Tutorial  | S. Pinco        | 2015-02-18      |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)

Il confronto viene effettuato non tenendo conto delle maiusucole/minuscole. L'aggiunta dell'operatore BINARY, invece, obbliga il confronto a tenere conto delle maiuscole/minuscole, come nell'esempio seguente:

# mysql -u root -p password;

E, dopo l'inserimento della password di root:

mysql> use DBPROVA;
Database changed
mysql> SELECT * from dbprova_tbl WHERE BYNARY prova_author='s. pinco';
Empty set (0.02 sec)

NOTA: l'operatore LIKE è il duale dell'operatore BINARY, nel senso che se viene applicato al confronto di stringhe lo rende insensibile alle maiuscole/minuscole.


Prelievo dati con script PHP

È possibile utilizzare lo stesso comando SELECT con la clausola WHERE nella funzione PHP mysql_query(). Questa funzione consente di eseguire il comando SQL, poi viene utilizzata la funzione mysql_fetch_array() per recuperare tutti i dati selezionati, come abbiamo già fatto in precedenza.

Esempio

Nell'esempio vengono restituiti tutti i record dalla tabella dbprova_tbl dove il nome dell'autore è S. Pinco:

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
  die('Connessione impossibile. Errore: ' . mysql_error());
}
$sql = 'SELECT prova_id, prova_title, 
               prova_author, submission_date
        FROM dbprova_tbl
        WHERE prova_author="S. Pinco"';

mysql_select_db('DBPROVA');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
  die('Prelievo dei dati impossibile. Errore: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
    echo "Tutorial ID :{$row['prova_id']}  <br> ".
         "Title: {$row['prova_title']} <br> ".
         "Author: {$row['prova_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
} 
echo "Prelievo dei dati riuscito\n";
mysql_close($conn);
?>

NOTA: Vedi il paragrafo precedente per l'uso degli operatori BINARY e LIKE.

















Introduzione
Installazione
Amministrazione
MySQL e PHP
Gestione database
Tipi di dati
Gestione tabelle
Query insert
Query select
Query update e delete
Clausola where
Clausola like e regexp
Clausola order by
Clausola join
Il valore NULL
Le transazioni
Il comando ALTER
Gli indici
Tabelle temporanee e cloni
Info sul database
Generazione di sequenze
Gestione dei duplicati
Iniezione di codice SQL
Export / Import



Chi brama vivere secondo le dottrine di Cristo, dev'essere perfettamente e assolutamente se stesso. Può essere un grande poeta, o un grande scienziato; o un giovane studente dell'università, o un guardiano di pecore presso la palude; o un drammaturgo come Shakespeare, o uno che medita sul mistero di Dio come Spinoza; o un bambino che so trastulla in un giardino, o un pescatore che getta le sue reti in mare. Non importa cosa sia, basta che si renda conto della perfezione dell'anima che è dentro di lui.
Oscar Wilde

Valid CSS!
pagina generata in 0.001 secondi