Klauzula MySQL - WHERE

Widzieliśmy SQL SELECTpolecenie pobierania danych z tabeli MySQL. Możemy użyć klauzuli warunkowej zwanejWHERE Clauseaby odfiltrować wyniki. Używając tej klauzuli WHERE, możemy określić kryteria wyboru, aby wybrać wymagane rekordy z tabeli.

Składnia

Poniższy blok kodu ma ogólną składnię SQL polecenia SELECT z klauzulą ​​WHERE do pobierania danych z tabeli MySQL -

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • Możesz użyć jednej lub więcej tabel oddzielonych przecinkami, aby uwzględnić różne warunki za pomocą klauzuli WHERE, ale klauzula WHERE jest opcjonalną częścią polecenia SELECT.

  • Możesz określić dowolny warunek za pomocą klauzuli WHERE.

  • Możesz określić więcej niż jeden warunek za pomocą AND albo OR operatorów.

  • Klauzuli WHERE można używać razem z poleceniem DELETE lub UPDATE SQL również w celu określenia warunku.

Plik WHERE klauzula działa jak if conditionw dowolnym języku programowania. Ta klauzula służy do porównania podanej wartości z wartością pola dostępną w tabeli MySQL. Jeśli podana wartość z zewnątrz jest równa dostępnej wartości pola w tabeli MySQL, to zwraca ten wiersz.

Oto lista operatorów, których można używać z WHERE klauzula.

Załóżmy, że pole A ma 10, a pole B 20, a następnie -

Operator Opis Przykład
= Sprawdza, czy wartości dwóch operandów są równe, czy nie, jeśli tak, warunek staje się prawdziwy. (A = B) nie jest prawdą.
! = Sprawdza, czy wartości dwóch operandów są równe, czy nie. Jeśli wartości nie są równe, warunek staje się prawdziwy. (A! = B) jest prawdą.
> Sprawdza, czy wartość lewego operandu jest większa niż wartość prawego operandu. Jeśli tak, warunek staje się prawdziwy. (A> B) nie jest prawdą.
< Sprawdza, czy wartość lewego operandu jest mniejsza niż wartość prawego operandu. Jeśli tak, warunek staje się prawdziwy. (A <B) jest prawdą.
> = Sprawdza, czy wartość lewego operandu jest większa lub równa wartości prawego operandu. Jeśli tak, warunek staje się prawdziwy. (A> = B) nie jest prawdą.
<= Sprawdza, czy wartość lewego operandu jest mniejsza lub równa wartości prawego operandu. Jeśli tak, warunek staje się prawdziwy. (A <= B) jest prawdą.

Klauzula WHERE jest bardzo przydatna, gdy chcesz pobrać wybrane wiersze z tabeli, zwłaszcza gdy używasz MySQL Join. Połączenia są omówione w innym rozdziale.

Powszechną praktyką jest wyszukiwanie rekordów przy użyciu rozszerzenia Primary Key aby przyspieszyć wyszukiwanie.

Jeśli podany warunek nie pasuje do żadnego rekordu w tabeli, zapytanie nie zwróci żadnego wiersza.

Pobieranie danych z wiersza polecenia

Spowoduje to użycie polecenia SQL SELECT z klauzulą ​​WHERE w celu pobrania wybranych danych z tabeli MySQL - tutorials_tbl.

Przykład

Poniższy przykład zwróci wszystkie rekordy z pliku tutorials_tbl tabela, której autorem jest nazwisko Sanjay.

root@host# 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>

Chyba że wykonasz LIKEporównanie w ciągu, porównanie nie jest rozróżniane. W wyszukiwaniu można rozróżniać wielkość liter, używając rozszerzeniaBINARY słowo kluczowe w następujący sposób -

root@host# 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>

Pobieranie danych za pomocą skryptu PHP

Możesz użyć tego samego polecenia SQL SELECT z WHERE CLAUSE w funkcji PHP mysql_query(). Ta funkcja jest używana do wykonania polecenia SQL, a później innej funkcji PHPmysql_fetch_array()można użyć do pobrania wszystkich wybranych danych. Ta funkcja zwraca wiersz jako tablicę asocjacyjną, tablicę numeryczną lub obie. Ta funkcja zwraca FALSE, jeśli nie ma więcej wierszy.

Przykład

Poniższy przykład zwróci wszystkie rekordy z pliku tutorials_tbl tabela, której autorem jest nazwisko 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);
?>