首页 > 数据库 > MySQL > 正文

MySQL Select查询

2024-07-24 12:32:39
字体:
来源:转载
供稿:网友
        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。如上所述过程将保持不变。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表