MariaDB - 選擇查詢



本章我們將學習如何從表中選擇資料。

SELECT 語句檢索選定的行。它們可以包含 UNION 語句、排序子句、LIMIT 子句、WHERE 子句、GROUP BY...HAVING 子句和子查詢。

檢視以下通用語法:

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

SELECT 語句提供了多種指定所用表的選項:

  • 資料庫名稱.表名稱

  • 表名稱.列名稱

  • 資料庫名稱.表名稱.列名稱

所有 SELECT 語句都必須包含一個或多個選擇表示式。選擇表示式包含以下選項之一:

  • 列名稱。

  • 使用運算子和函式的表示式。

  • 規範“表名稱.*”以選擇給定表中的所有列。

  • 字元“*”以從 FROM 子句中指定的所有表中選擇所有列。

可以使用命令提示符或 PHP 指令碼執行 SELECT 語句。

命令提示符

在命令提示符下,按如下方式執行語句:

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

PHP 選擇指令碼

在 PHP 函式中使用相同的 SELECT 語句來執行操作。你將再次使用mysql_query()函式。檢視下面給出的示例:

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

成功檢索資料後,你將看到以下輸出:

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

最佳實踐建議在每個 SELECT 語句後釋放遊標記憶體。PHP 提供了mysql_free_result()函式來實現此目的。檢視其用法如下:

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