程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> MySQL Select查詢

MySQL Select查詢

編輯:MYSQL入門知識

SQL SELECT命令用於從MySQL數據庫獲取數據。可以在MySQL>提示符使用這個命令,以及任何像PHP的腳本和語言等。

語法

下面是通用的SQL的SELECT命令語法,從MySQL表獲取數據:

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • 可以使用分隔的一個或多個逗號從多個表,以及使用WHERE子句包括各種條件,但WHERE子句是SELECT命令的可選部分

  • 可以在一個SELECT命令指定讀取一個或多個字段

  • 可以指定星號(*)代替選擇的字段。在這種情況下,將返回所有字段

  • 可以指定任意的條件在 WHERE 子句後面

  • 可以使用OFFSET指定一個偏移量,SELECT從那裡開始返回記錄。默認情況下 offset 的值是 0

  • 可以使用LIMIT屬性限制返回的數量

1、從命令提示符讀取數據

這將使用SQL SELECT命令從MySQL 表 tutorials_tbl 讀取數據

示例

下面的例子將從 tutorials_tbl 表返回所有記錄:

root@host# mysql -u root -p password;
Enter password:
mysql> use test;
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>

2、使用PHP腳本提取數據

可以使用相同的SQL SELECT命令,在PHP中的mysql_query()函數.此函數用於執行SQL命令,另一個更高版本PHP mysql_fetch_array()函數可用於獲取所有選定的數據. 這個函數返回一行作為關聯數組,數字數組,或兩者兼而有。如果沒有更多的行這個函數返回 FALSE。

下面是一個簡單的例子來從tutorials_tbl表中提取記錄。

示例

試試下面的例子來顯示tutorials_tbl表中的所有記錄。

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$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('test');
$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);
?>

數據庫的行內容被分配到變量$row,並且行中的值將被打印出來。

注意: 當想直接插入數組值轉換成字符串,一定記得使用花括號。

在上面的例子中,常量 MYSQL_ASSOC作為PHP函數 mysql_fetch_array() 的第二個參數, 因此,它返回該行作為關聯數組。關聯數組我們可以使用它的名稱,而不是使用索引來訪問該字段。

PHP提供了另一個函數 mysql_fetch_assoc(),也返回該行作為關聯數組。

示例

試試下面的例子用來顯示 tutorial_tbl 表所有的記錄,使用 mysql_fetch_assoc() 函數例子如下:

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$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('test');
$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);
?>

也可以使用常量MYSQL_NUM作為PHP mysql_fetch_array()函數的第二個參數。這會使該函數返回數字索引的數組。

示例

試試下面的例子來使用MYSQL_NUM 參數顯示 tutorials_tbl 表的所有記錄。

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$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('test');
$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);
?>

所有上述三個例子將產生相同的結果。

釋放內存:

這是一個很好的做法,以釋放內存光標在每個SELECT語句的結束。這可以通過使用PHP函數了mysql_free_result()來完成。下面是該例子,以顯示它如何被使用。

示例

試試下面的例子

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$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('test');
$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);
?>

在讀取數據時,可以根據需要編寫復雜的SQL。如上所述過程將保持不變。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved