MySQL - clausola WHERE

Abbiamo visto l'SQL SELECTcomando per recuperare i dati da una tabella MySQL. Possiamo usare una clausola condizionale chiamataWHERE Clauseper filtrare i risultati. Utilizzando questa clausola WHERE, possiamo specificare un criterio di selezione per selezionare i record richiesti da una tabella.

Sintassi

Il seguente blocco di codice ha una sintassi SQL generica del comando SELECT con la clausola WHERE per recuperare i dati dalla tabella MySQL -

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • È possibile utilizzare una o più tabelle separate da una virgola per includere varie condizioni utilizzando una clausola WHERE, ma la clausola WHERE è una parte facoltativa del comando SELECT.

  • È possibile specificare qualsiasi condizione utilizzando la clausola WHERE.

  • È possibile specificare più di una condizione utilizzando il AND o il OR operatori.

  • Una clausola WHERE può essere utilizzata insieme al comando SQL DELETE o UPDATE anche per specificare una condizione.

Il WHERE la clausola funziona come un file if conditionin qualsiasi linguaggio di programmazione. Questa clausola viene utilizzata per confrontare il valore fornito con il valore del campo disponibile in una tabella MySQL. Se il valore fornito dall'esterno è uguale al valore del campo disponibile nella tabella MySQL, restituisce quella riga.

Ecco l'elenco degli operatori, che possono essere utilizzati con il WHERE clausola.

Supponiamo che il campo A abbia 10 e il campo B ne abbia 20, quindi -

Operatore Descrizione Esempio
= Controlla se i valori dei due operandi sono uguali o meno, in caso affermativo la condizione diventa vera. (A = B) non è vero.
! = Controlla se i valori dei due operandi sono uguali o meno, se i valori non sono uguali la condizione diventa vera. (A! = B) è vero.
> Controlla se il valore dell'operando sinistro è maggiore del valore dell'operando destro, in caso affermativo la condizione diventa vera. (A> B) non è vero.
< Controlla se il valore dell'operando sinistro è inferiore al valore dell'operando destro, in caso affermativo la condizione diventa vera. (A <B) è vero.
> = Verifica se il valore dell'operando sinistro è maggiore o uguale al valore dell'operando destro, in caso affermativo la condizione diventa vera. (A> = B) non è vero.
<= Controlla se il valore dell'operando sinistro è minore o uguale al valore dell'operando destro, se sì, 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 il MySQL Join. I join sono discussi in un altro capitolo.

È pratica comune cercare i record utilizzando Primary Key per rendere la ricerca più veloce.

Se la condizione data non corrisponde a nessun record nella tabella, la query non restituirà alcuna riga.

Recupero dei dati dal prompt dei comandi

Questo utilizzerà il comando SQL SELECT con la clausola WHERE per recuperare i dati selezionati dalla tabella MySQL - tutorials_tbl.

Esempio

Il seguente esempio restituirà tutti i record da tutorials_tbl tabella per la quale il nome dell'autore è Sanjay.

[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl WHERE tutorial_author = 'Sanjay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|      3      | JAVA Tutorial  |      Sanjay     |    2007-05-21   |      
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)

mysql>

A meno che non si esegua un file LIKEconfronto su una stringa, il confronto non fa distinzione tra maiuscole e minuscole. Puoi rendere sensibile la tua ricerca tra maiuscole e minuscole utilizzando l'estensioneBINARY parola chiave come segue -

[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl \
   WHERE BINARY tutorial_author = 'sanjay';
Empty set (0.02 sec)

mysql>

Recupero dei dati utilizzando uno script PHP

È possibile utilizzare lo stesso comando SQL SELECT con WHERE CLAUSE nella funzione PHP mysql_query(). Questa funzione viene utilizzata per eseguire il comando SQL e successivamente un'altra funzione PHPmysql_fetch_array()può essere utilizzato per recuperare tutti i dati selezionati. Questa funzione restituisce una riga come matrice associativa, matrice numerica o entrambi. Questa funzione restituisce FALSE se non ci sono più righe.

Esempio

Il seguente esempio restituirà tutti i record da tutorials_tbl tabella per la quale il nome dell'autore è Sanjay -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT tutorial_id, tutorial_title, 
      tutorial_author, submission_date
      FROM tutorials_tbl
      WHERE tutorial_author = "Sanjay"';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
      "Title: {$row['tutorial_title']} <br> ".
      "Author: {$row['tutorial_author']} <br> ".
      "Submission Date : {$row['submission_date']} <br> ".
      "--------------------------------<br>";
   } 

   echo "Fetched data successfully\n";
   mysql_close($conn);
?>