首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL SELECT 查詢命令完整教程:從基礎語法到 PHP 實戰

     編輯:MySQL 資料庫相關知識

SQL SELECT 命令是從 MySQL 資料庫檢索資料的核心指令,既可在 mysql> 命令列提示符下直接執行,也能嵌入 PHP 等腳本語言中使用。本文將系統講解 SELECT 的語法細節、命令列操作範例,以及 PHP 程式碼實作要點。

SELECT 基礎語法

通用的 SELECT 語法結構如下:

SELECT field1, field2,...fieldN 
FROM table_name1, table_name2... 
[WHERE Clause] 
[OFFSET M] 
[LIMIT N]
  • 多表查詢:支援一個或多個以逗號分隔的資料表,可搭配 WHERE 子句設定條件(WHERE 為可選)。
  • 欄位選取:可指定一或多個欄位,亦可用星號 * 代表所有欄位。
  • 條件篩選:WHERE 子句可指定任意篩選條件。
  • 分頁控制:OFFSET 設定起始偏移量(預設 0),LIMIT 限制回傳筆數。

命令列實戰:查詢 tutorials_tbl 表

以下示範在終端機中登入 MySQL 並查詢所有記錄:

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>

PHP 腳本整合:三種擷取模式完整範例

PHP 透過 mysql_query() 執行 SQL,再配合 mysql_fetch_array() 或 mysql_fetch_assoc() 逐行讀取。注意:mysql_* 函式已棄用,實務上建議改用 PDO 或 MySQLi,此處僅作教學示範。

範例 1:MYSQL_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_array($retval, MYSQL_ASSOC)) {
    echo "Tutorial ID :{$row['tutorial_id']} <br> ";
    echo "Title: {$row['tutorial_title']} <br> ";
    echo "Author: {$row['tutorial_author']} <br> ";
    echo "Submission Date : {$row['submission_date']} <br> ";
    echo "--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>

範例 2:mysql_fetch_assoc() 簡化寫法

<?php
// 連線設定同上...
$retval = mysql_query($sql, $conn);
while($row = mysql_fetch_assoc($retval)) {
    echo "Tutorial ID :{$row['tutorial_id']} <br> ";
    echo "Title: {$row['tutorial_title']} <br> ";
    echo "Author: {$row['tutorial_author']} <br> ";
    echo "Submission Date : {$row['submission_date']} <br> ";
    echo "--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>

範例 3:MYSQL_NUM 數值索引陣列模式

<?php
// 連線設定同上...
$retval = mysql_query($sql, $conn);
while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
    echo "Tutorial ID :{$row[0]} <br> ";
    echo "Title: {$row[1]} <br> ";
    echo "Author: {$row[2]} <br> ";
    echo "Submission Date : {$row[3]} <br> ";
    echo "--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>

以上三種寫法輸出結果相同,開發者可依習慣選擇。實際專案中,務必在查詢結束後呼叫 mysql_free_result() 釋放記憶體:

// ... 查詢迴圈結束後
mysql_free_result($retval);
echo "Fetched data successfully\n";
mysql_close($conn);

掌握 SELECT 基礎後,即可撰寫任意複雜的查詢邏輯,程式架構保持不變。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved