środa, 19 września 2018

MySQL – zapytanie Select

MySQL – zapytanie Select


Polecenie SQL SELECT służy do pobierania danych z bazy danych MySQL. Możesz użyć tego polecenia w mysql>, jak również w dowolnym skrypcie, takim jak PHP.
Składnia
Oto ogólna składnia SQL polecenia SELECT do pobierania danych z tabeli MySQL 
SELECT pole1, pole2,...poleN
FROM nazwa_tabeli, nazwa_tabeli2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
·      Możesz użyć jednej lub więcej tabel oddzielonych przecinkami, aby uwzględnić różne warunki, używając klauzuli WHERE, ale klauzula WHERE jest opcjonalną częścią polecenia SELECT.
·      Możesz pobrać jedno lub więcej pól w jednym poleceniu SELECT.
·      Możesz użyć gwiazdkę (*) zamiast pól. W takim przypadku SELECT zwróci wszystkie pola.
·      Możesz określić dowolny warunek za pomocą klauzuli WHERE.
·      Możesz określić przesunięcie przy pomocy OFFSET, z którego SELECT rozpocznie zwracanie rekordów. Domyślnie przesunięcie rozpoczyna się od zera.
·      Możesz ograniczyć liczbę zwrotów za pomocą atrybutu LIMIT.

Pobieranie danych z wiersza polecenia

Wykorzystaj polecenie SQL SELECT do pobierania danych z tabeli MySQL kurs_tbl.
Przykład
Poniższy przykład zwróci wszystkie rekordy z tabeli kurs_tbl 
root@host# mysql -u root -p password;
Enter password:*******
mysql> use KURS;
Database changed
mysql> SELECT * from kurs_tbl
+-------------+----------------+-----------------+-----------------+
| kurs_id | kurs_title | kurs_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Nauka PHP      | B. Neil       | 2018-06-20      |
|           2 | Nauka MySQL    | C. Kern         | 2018-06-21      |
|           3 | JAVA Kurs  | N. Ader          | 2017-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 dla funkcji PHP mysql_query(). Ta funkcja służy do wykonywania polecenia SQL, a następnie do pobierania wszystkich wybranych danych można użyć innej funkcji PHP mysql_fetch_array(). Ta funkcja zwraca wiersz jako tablicę asocjacyjną, tablicę liczbową 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 pobierać / wyświetlać rekordy z tabeli kurs_tbl.
Przykład
Poniższy blok kodu wyświetli wszystkie rekordy z tabeli kurs_tbl.
<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
  
   if(! $conn ) {
      die('Nie można się połączyć: ' . mysql_error());
   }
   $sql = 'SELECT kurs_id, kurs_title, kurs_author, submission_date
      FROM kurs_tbl';

   mysql_select_db('KURS');
   $retval = mysql_query( $sql, $conn );
  
   if(! $retval ) {
      die('Nie można pobrać danych: ' . mysql_error());
   }
  
   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Kurs ID :{$row['kurs_id']}  <br> ".
         "Tytuł: {$row['kurs_title']} <br> ".
         "Autor: {$row['kurs_author']} <br> ".
         "Termin składania : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   }
   echo "Dane pobrano pomyślnie\n";
   mysql_close($conn);
?>

Treść wierszy jest przypisywana do zmiennej $row, a wartości w tym wierszu są drukowane.
UWAGA - Zawsze pamiętaj o wstawieniu nawiasów klamrowych, gdy chcesz wstawić wartość tablicy bezpośrednio do ciągu znaków.
W powyższym przykładzie stała MYSQL_ASSOC jest używana jako drugi argument funkcji PHP mysql_fetch_array(), więc zwraca wiersz jako tablicę asocjacyjną. W przypadku tablicy asocjacyjnej możesz uzyskać dostęp do pola, używając jego nazwy zamiast używania indeksu.
PHP udostępnia kolejną funkcję o nazwie mysql_fetch_assoc(), która również zwraca wiersz jako tablicę asocjacyjną.
Przykład
Poniższy przykład ilustruje wyświetlanie wszystkich rekordów z tabeli kurs_tbl za pomocą funkcji mysql_fetch_assoc().
<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
  
   if(! $conn ) {
      die('nie można się połączyć: ' . mysql_error());
   }
  
   $sql = 'SELECT kurs_id, kurs_title, kurs_author, submission_date
      FROM kurs_tbl';

   mysql_select_db('KURS');
   $retval = mysql_query( $sql, $conn );
  
   if(! $retval ) {
      die('Nie można pobrać danych: ' . mysql_error());
   }
  
   while($row = mysql_fetch_assoc($retval)) {
      echo "Kurs ID :{$row['kurs_id']}  <br> ".
         "Tytuł: {$row['kurs_title']} <br> ".
         "Autor: {$row['kurs_author']} <br> ".
         "Data : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   }
   echo "Pobrano dane pomyślnie\n";
   mysql_close($conn);
?>

Możesz również użyć stałej MYSQL_NUM jako drugiego argumentu 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, używając argumentu MYSQL_NUM.
<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Nie można się połączyć: ' . mysql_error());
   }
  
   $sql = 'SELECT kurs_id, kurs_title, kurs_author, submission_date
      FROM kurs_tbl';

   mysql_select_db('KURS');
   $retval = mysql_query( $sql, $conn );
  
   if(! $retval ) {
      die('Nie można pobrać danych: ' . mysql_error());
   }
  
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Kurs ID :{$row[0]}  <br> ".
         "Tytuł: {$row[1]} <br> ".
         "Autor: {$row[2]} <br> ".
         "Data : {$row[3]} <br> ".
         "--------------------------------<br>";
   }
   echo "Dane pobrano pomyślnie\n";
   mysql_close($conn);
?>
Wszystkie powyższe trzy przykłady dadzą taki sam wynik.

Zwalnianie pamięci

Dobrą praktyką jest zwolnienie pamięci kursora na końcu każdej instrukcji SELECT. Można to zrobić za pomocą funkcji PHP mysql_free_result(). Poniższy program jest przykładem pokazującym, w jaki sposób należy ją użyć.
Przykład
Wypróbuj następujący przykład -
<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Nie można się połączyć: ' . mysql_error());
   }
  
   $sql = 'SELECT kurs_id, kurs_title, kurs_author, submission_date
      FROM kurs_tbl';

   mysql_select_db('KURS');
   $retval = mysql_query( $sql, $conn );
  
   if(! $retval ) {
      die('Nie można pobrać danych: ' . mysql_error());
   }
  
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Kurs ID :{$row[0]}  <br> ".
         "tytuł: {$row[1]} <br> ".
         "Autor: {$row[2]} <br> ".
         "Data : {$row[3]} <br> ".
         "--------------------------------<br>";
   }
   mysql_free_result($retval);
   echo "Dane pobrano pomyślnie\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.



Brak komentarzy:

Prześlij komentarz