MySQL 查询数据
MySQL 数据库使用 SELECT 语句来查询数据。

你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过 PHP 脚本来查询数据。

语法

以下为在 MySQL 数据库中查询数据通用的 SELECT 语法:

SELECT column1, column2, …
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];
参数说明:
column1, column2, … 是你想要选择的列的名称,如果使用 * 表示选择所有列。table_name 是你要从中查询数据的表的名称。WHERE condition 是一个可选的子句,用于指定过滤条件,只返回符合条件的行。ORDER BY column_name [ASC | DESC] 是一个可选的子句,用于指定结果集的排序顺序,默认是升序(ASC)。LIMIT number 是一个可选的子句,用于限制返回的行数。
MySQL SELECT 语句简单的应用实例:
实例
– 选择所有列的所有行
SELECT * FROM users;

– 选择特定列的所有行
SELECT username, email FROM users;

– 添加 WHERE 子句,选择满足条件的行
SELECT * FROM users WHERE is_active = TRUE;

– 添加 ORDER BY 子句,按照某列的升序排序
SELECT * FROM users ORDER BY birthdate;

– 添加 ORDER BY 子句,按照某列的降序排序
SELECT * FROM users ORDER BY birthdate DESC;

– 添加 LIMIT 子句,限制返回的行数
SELECT * FROM users LIMIT 10;

SELECT 语句可以是灵活的,我们可以根据实际需求组合和使用这些子句,比如同时使用 WHERE 和 ORDER BY 子句,或者使用 LIMIT 控制返回的行数。
在 WHERE 子句中,你可以使用各种条件运算符(如 =, <, >, <=, >=, !=),逻辑运算符(如 AND, OR, NOT),以及通配符(如 %)等。
以下是一些进阶的 SELECT 语句实例:
实例
– 使用 AND 运算符和通配符
SELECT * FROM users WHERE username LIKE ‘j%’ AND is_active = TRUE;

– 使用 OR 运算符
SELECT * FROM users WHERE is_active = TRUE OR birthdate < ‘1990-01-01’;

– 使用 IN 子句
SELECT * FROM users WHERE birthdate IN (‘1990-01-01’, ‘1992-03-15’, ‘1993-05-03’);

通过命令提示符获取数据
以下实例我们将通过 SQL SELECT 命令来获取 MySQL 数据表 runoob_tbl 的数据:

实例
以下实例将返回数据表 runoob_tbl 的所有记录:

读取数据表:

select * from runoob_tbl;

输出结果:

使用 PHP 脚本来获取数据

使用 PHP 函数的 mysqli_query() 及 SQL SELECT 命令来获取数据。
该函数用于执行 SQL 命令,然后通过 PHP 函数 mysqli_fetch_array()
来使用或输出所有查询的数据。

mysqli_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有
返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。

以下实例为从数据表 runoob_tbl 中读取所有记录。
实例
尝试以下实例来显示数据表 runoob_tbl 的所有记录。

使用 mysqli_fetch_array MYSQLI_ASSOC 参数获取数据:

菜鸟教程 mysqli_fetch_array 测试'; echo ''; while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) { echo " ". " ". " ". " ". ""; } echo '
教程 ID标题作者提交日期
{$row['runoob_id']}{$row['runoob_title']} {$row['runoob_author']} {$row['submission_date']}
'; mysqli_close($conn); ?>

输出结果如下所示:

以上实例中,读取的每行记录赋值给变量 $row,然后再打印出每个值。
注意:记住如果你需要在字符串中使用变量,请将变量置于花括号。

在上面的例子中,PHP mysqli_fetch_array() 函数第二个参数为 MYSQLI_ASSOC,

设置该参数查询结果返回关联数组,你可以使用字段名称来作为数组的索引。

PHP 提供了另外一个函数 mysqli_fetch_assoc(), 该函数从结果集中取得一行作为关联数组。
返回根据从结果集取得的行生成的关联数组,如果没有更多行,则返回 false。

实例

尝试以下实例,该实例使用了 mysqli_fetch_assoc() 函数来输出数据表 runoob_tbl 的所有记录:

使用 mysqli_fetch_assoc 获取数据:

菜鸟教程 mysqli_fetch_assoc 测试'; echo ''; while($row = mysqli_fetch_assoc($retval)) { echo " ". " ". " ". " ". ""; } echo '
教程 ID标题作者提交日期
{$row['runoob_id']}{$row['runoob_title']} {$row['runoob_author']} {$row['submission_date']}
'; mysqli_close($conn); ?>

输出结果如下所示:

你也可以使用常量 MYSQLI_NUM 作为 PHP mysqli_fetch_array() 函数的第二个参数,返回数字数组。

实例
以下实例使用 MYSQLI_NUM 参数显示数据表 runoob_tbl 的所有记录:

使用 mysqli_fetch_array MYSQLI_NUM 参数获取数据:

菜鸟教程 mysqli_fetch_array 测试'; echo ''; while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo " ". " ". " ". " ". ""; } echo '
教程 ID标题作者提交日期
{$row[0]}{$row[1]} {$row[2]} {$row[3]}
'; mysqli_close($conn); ?>

输出结果如下所示:

以上三个实例输出结果都一样。

内存释放
在我们执行完 SELECT 语句后,释放游标内存是一个很好的习惯。

可以通过 PHP 函数 mysqli_free_result() 来实现内存的释放。

以下实例演示了该函数的使用方法。

实例
尝试以下实例:

使用 mysqli_free_result 释放内存:

菜鸟教程 mysqli_fetch_array 测试'; echo ''; while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) { echo " ". " ". " ". " ". ""; } echo '
教程 ID标题作者提交日期
{$row[0]}{$row[1]} {$row[2]} {$row[3]}
'; // 释放内存 mysqli_free_result($retval); mysqli_close($conn); ?>

输出结果如下所示: