MySQL - Wybierz zapytanie

SQL SELECTpolecenie służy do pobierania danych z bazy danych MySQL. Możesz użyć tego polecenia w zachęcie mysql>, a także w dowolnym skrypcie, takim jak PHP.

Składnia

Oto ogólna składnia SQL polecenia SELECT do pobierania danych z tabeli MySQL -

SELECT field1, field2,...fieldN 
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • Możesz użyć jednej lub kilku tabel oddzielonych przecinkami, aby uwzględnić różne warunki za pomocą klauzuli WHERE, ale klauzula WHERE jest opcjonalną częścią polecenia SELECT.

  • Możesz pobrać jedno lub więcej pól za pomocą jednego polecenia SELECT.

  • W miejscu pól można podać gwiazdkę (*). W takim przypadku SELECT zwróci wszystkie pola.

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

  • Możesz określić odsunięcie za pomocą OFFSETskąd SELECT zacznie zwracać rekordy. Domyślnie przesunięcie zaczyna się od zera.

  • Możesz ograniczyć liczbę zwrotów za pomocą LIMIT atrybut.

Pobieranie danych z wiersza polecenia

Spowoduje to użycie polecenia SQL SELECT do pobrania danych z tabeli MySQL tutorials_tbl.

Przykład

Poniższy przykład zwróci wszystkie rekordy z pliku tutorials_tbl stół -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl 
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | John Poul       | 2007-05-21      |
|           2 | Learn MySQL    | Abdul S         | 2007-05-21      |
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.01 sec)

mysql>

Pobieranie danych za pomocą skryptu PHP

Możesz użyć tego samego polecenia SQL SELECT w funkcji PHP mysql_query(). Ta funkcja jest używana do wykonania polecenia SQL, a następnie 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.

Poniższy program jest prostym przykładem, który pokaże, jak pobrać / wyświetlić rekordy z tutorials_tbl stół.

Przykład

Poniższy blok kodu wyświetli wszystkie rekordy z tabeli tutorials_tbl.

<?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';

   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);
?>

Zawartość wierszy jest przypisywana do zmiennej $ row, a wartości w tym wierszu są następnie drukowane.

NOTE - Zawsze pamiętaj o umieszczeniu nawiasów klamrowych, gdy chcesz wstawić wartość tablicy bezpośrednio do ciągu.

W powyższym przykładzie stała MYSQL_ASSOC jest używany jako drugi argument funkcji PHP mysql_fetch_array(), więc zwraca wiersz jako tablicę asocjacyjną. Dzięki tablicy asocjacyjnej możesz uzyskać dostęp do pola, używając jego nazwy zamiast indeksu.

PHP udostępnia inną funkcję o nazwie mysql_fetch_assoc(), co również zwraca wiersz jako tablicę asocjacyjną.

Przykład

Poniższy przykład przedstawia wszystkie rekordy z tabeli tutorial_tbl przy użyciu funkcji mysql_fetch_assoc ().

<?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';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_assoc($retval)) {
      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);
?>

Możesz także użyć stałej MYSQL_NUMjako drugi argument funkcji PHP mysql_fetch_array (). Spowoduje to, że funkcja zwróci tablicę z indeksem liczbowym.

Przykład

Wypróbuj poniższy przykład, aby wyświetlić wszystkie rekordy z tabeli tutorials_tbl przy użyciu argumentu MYSQL_NUM.

<?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';

   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_NUM)) {
      echo "Tutorial ID :{$row[0]}  <br> ".
         "Title: {$row[1]} <br> ".
         "Author: {$row[2]} <br> ".
         "Submission Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Wszystkie powyższe trzy przykłady dadzą ten sam wynik.

Uwalnianie pamięci

Dobrą praktyką jest zwolnienie pamięci kursora na końcu każdej instrukcji SELECT. Można to zrobić za pomocą funkcji PHPmysql_free_result(). Poniższy program jest przykładem pokazującym, jak należy go używać.

Przykład

Wypróbuj następujący przykład -

<?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';

   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_NUM)) {
      echo "Tutorial ID :{$row[0]}  <br> ".
         "Title: {$row[1]} <br> ".
         "Author: {$row[2]} <br> ".
         "Submission Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }
   mysql_free_result($retval);
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Podczas pobierania danych możesz napisać tak złożony kod, jak chcesz, ale procedura pozostanie taka sama, jak wspomniano powyżej.