MariaDB - Seleziona Query

In questo capitolo impareremo come selezionare i dati da una tabella.

Le istruzioni SELECT recuperano le righe selezionate. Possono includere istruzioni UNION, una clausola di ordinamento, una clausola LIMIT, una clausola WHERE, una clausola GROUP BY ... HAVING e sottoquery.

Rivedi la seguente sintassi generale:

SELECT field, field2,... FROM table_name, table_name2,... WHERE...

Un'istruzione SELECT fornisce più opzioni per specificare la tabella utilizzata:

  • database_name.table_name

  • table_name.column_name

  • database_name.table_name.column_name

Tutte le istruzioni select devono contenere una o più select expressions. Le espressioni di selezione sono costituite da una delle seguenti opzioni:

  • Un nome di colonna.

  • Un'espressione che impiega operatori e funzioni.

  • La specifica "nome_tabella. *" Per selezionare tutte le colonne all'interno della tabella data.

  • Il carattere "*" per selezionare tutte le colonne da tutte le tabelle specificate nella clausola FROM.

Il prompt dei comandi o uno script PHP possono essere utilizzati per eseguire un'istruzione select.

Il prompt dei comandi

Al prompt dei comandi, esegui le istruzioni come segue:

[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl
+-------------+---------------+
| ID_number   | Nomenclature  |
+-------------+---------------+
| 12345       | Orbitron 4000 |
+-------------+---------------+

Script di selezione PHP

Utilizzare le stesse istruzioni SELECT all'interno di una funzione PHP per eseguire l'operazione. Userai il filemysql_query()funzione ancora una volta. Rivedi un esempio fornito di seguito:

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name,product_manufacturer, ship_date FROM products_tbl';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Product ID :{$row['product_id']} <br> ".
         "Name: {$row['product_name']} <br> ".
         "Manufacturer: {$row['product_manufacturer']} <br> ".
         "Ship Date : {$row['ship_date']} <br>".
         "--------------------------------<br>";
   }

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

In caso di recupero dei dati riuscito, vedrai il seguente output:

Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully

Le migliori pratiche suggeriscono di rilasciare la memoria del cursore dopo ogni istruzione SELECT. PHP fornisce l'estensionemysql_free_result()funzione per questo scopo. Rivedi il suo utilizzo come mostrato di seguito -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl';
   mysql_select_db('PRODUCTS');
   $retval = mysql_query( $sql, $conn );

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

   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Product ID :{$row[0]} <br> ".
         "Name: {$row[1]} <br> ".
         "Manufacturer: {$row[2]} <br> ".
         "Ship Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }

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