详解用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命令读取一个或多个字段。
  • 可以指定星号(*)的字段的地方。在这种情况下,SELECT将返回所有的字段
  • 可以使用WHERE子句指定任何条件。
  • 可以指定偏移用SELECT将开始返回记录的偏移量。默认情况下,偏移量为0
  • 可以限制返回的使用LIMIT属性的数量。

从命令提示符获取数据:

这将使用SQL SELECT命令来从MySQL表tutorials_tbl获取数据
例子:

下面的例子将返回所有记录tutorials_tbl表:

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脚本获取数据:

您可以使用相同的SQL SELECT命令进入PHP函数mysql_query()。这个函数是用来执行SQL命令后,另一个PHP函数mysql_fetch_array()可以用来获取所有选定的数据。这个函数返回的行作为一个关联数组/数字数组或两者。如果没有更多的行这个函数返回FALSE。

下面是一个简单的例子,获取记录tutorials_tbl表。
例子:

试试下面的例子显示tutorials_tbl表的所有记录。

<?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> ".
     "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: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_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: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_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: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_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,只要喜欢。程序将保持与上述相同。

(0)

相关推荐

  • MySQL中三种关联查询方式的简单比较

    看看下面三个关联查询的 SQL 语句有何区别? SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id) SELECT * FROM film JOIN film_actor USING (film_id) SELECT * FROM film, film_actor WHERE film.film_id = film_actor.film_id 最大的不同更多是语法糖,但有一些有意思的东西值得关注. 为了

  • 大幅优化MySQL查询性能的奇技淫巧

    回顾 MySQL / InnoDB 的改善历史.你能很容易发现.在MySQL 5.6稳定版本中从来没有在read-only 这么快的提速,它很容易搞懂,以及在read-only(RO)有着良好的扩张性.也很期待它在read+write(RW)上达到一个较高水平.(特别是在读取数据是数据库主要工作的时候) 然而.我们对于RO在 MySQL 5.6的表现也十分的高兴,在5.7这个版本中,主要工作集中在 read+write (RW)上, 因为在大数据的处理上还没能达到我们的期望.但是RW依赖RO下.

  • MySQL中查询的有关英文字母大小写问题的分析

    mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的.  1. 什么是字符集和校验规则? 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则.任何一个给定的字符集至少有一个校对规则,它可能有几个校对规则.要想列出一个字符集的校对规则,使用SHOW COLLATION语句. 校对规则一般有这些特征: 两个不同的字符集不能有相同的校对规则.     每个字符集有一个默认校对规则.例

  • 详解用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命令是一个可选

  • 详解如何利用Xtrabackup进行mysql增量备份

    目录 利用Xtrabackup进行mysql增量备份 安装 设置数据库用于备份账户 全量备份 增量备份 提问总结 原理 为什么最后一次增量备份不用 "--apply-log-only" 为什么备份完后要准备备份 "prepare" 为什么选择这个做备份? 利用Xtrabackup进行mysql增量备份 现在xtrabackup版本升级到了8.0,但是只对mysql8.0才有支持, 我们这还是使用2.4, 但是2.4相比之前的2.1有了比较大的变化:innobacku

  • Git 命令详解及常用命令整理

    Git 命令详解及常用命令 Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下: 关于git,首先需要了解几个名词,如下: Workspace //工作区 Index / Stage //暂存区 Repository //仓库区(或本地仓库) Remote //远程仓 一.新建代码库 // 在当前目录新建一个Git代码库 $ git init // 新建一个目录,将其初始化为Git代码库 $ git init [project-name] //

  • linux 中的ls命令参数详解及ls命令的使用实例

    一.ls命令参数详解 可以通过阅读 ls 的说明书页(man ls)来获得选项的完整列表. -a – 全部(all).列举目录中的全部文件,包括隐藏文件(.filename).位于这个列表的起首处的 .. 和 . 依次是指父目录和你的当前目录. -l – 长(long).列举目录内容的细节,包括权限(模式).所有者.组群.大小.创建日期.文件是否是到系统其它地方的链接,以及链接的指向. -F – 文件类型(File type).在每一个列举项目之后添加一个符号.这些符号包括:/ 表明是一个目录:

  • 详解git merge命令应用的三种情景

    一.git merge 命令应用的三种情景 1.1 "快进"(无冲突) master分支 假设现在只有一个默认的 master 分支,并提交了3次,B0.B1和B2都是提交对象. 首先要清楚,每次产生的提交对象会包含一个指向上次提交对象(父对象)的指针,所以图中B0.B1和B2之间的箭头是指针指向父对象的意思,真正的提交顺序还是B0到B1再到B2.同时 master 指针指向最新的提交B2. 另外Git中还有一个名为 HEAD 的特殊指针,它是一个指针,指向当前所在的本地分支(可以将

  • 详解Linux time 命令的使用

    1.命令简介 time 用于统计命令执行所消耗的时间及相关系统资源等信息.time 可以显示的资源有四大项,分别是: Time resources Memory resources IO resources Command info 2.命令格式 time [options] command [arguments...] 3. 选项说明 -f FORMAT, --format=FORMAT:使用指定格式输出.如果没有指定输出格式,采用环境变量 TIME 指定的格式 -p, --portabili

  • 详解Go 创建命令行工具的方法

    前言 最近因为项目需要写了一段时间的 Go ,相对于 Java 来说语法简单同时又有着一些 Python 之类的语法糖,让人大呼"真香". 但现阶段相对来说还是 Python 写的多一些,偶尔还得回炉写点 Java :自然对 Go 也谈不上多熟悉. 于是便利用周末时间自己做个小项目来加深一些使用经验.于是我便想到了之前利用 Java 写的一个博客小工具. 那段时间正值微博图床大量图片禁止外链,导致许多个人博客中的图片都不能查看.这个工具可以将文章中的图片备份到本地,还能将图片直接替换到

  • 详解java jinfo命令

    一.介绍 jinfo(Configuration Info for Java)的作用是实时查看和调整虚拟机各项参数. 使用jps命令的-v参 数可以查看虚拟机启动时显式指定的参数列表,但如果想知道未被显式指定的参数的系统默认值,除了去找资料外,就只能使用jinfo的-flag选项进行查询了(如果只限于JDK 6或以上版本的话,使用java -XX:+PrintFlagsFinal查看参数默认值也是一个很好的选择). jinfo还可以使用-sysprops选项把虚拟机 进程的System.getP

  • 详解Java使用JDBC连接MySQL数据库

    一:什么是数据库,为什么要有数据库? 数据,数据库,数据库管理系统和数据库系统是与数据库技术密切相关的四个基本概念. 数据库相信大家都耳熟能详了,其实数据库顾名思义就是存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的~ 可能有朋友就要打断我施法了,停停停,我们Java程序猿在IDEA里面和控制台你侬我侬,没有对象new个对象存储在内存JVM的堆上就行了,学数据库干啥啊? 这时候我们就需要了解到:内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运

  • 详解sed -i 命令入门教程

    目录 一.简介 1.sed介绍 2.sed工作原理 3.正则表达式概念 4.正则表达式的匹配过程 二.基本正则表达式 1. 符号"." 2. 符号"*" 3. 符号"[]" 4. 符号"^" 5. 符号"$" 6. 符号"\" 7. 符号"{}" 8. 符号"\<"和"\>" 三.扩展正则表达式 1. 符号"

随机推荐