首页 > 数据库 > MySQL > 正文

详解用SELECT命令在MySQL执行查询操作的教程

2024-07-24 13:07:20
字体:
来源:转载
供稿:网友

这篇文章主要介绍了详解用SELECT命令在MySQL执行查询操作的教程,本文中还给出了基于PHP脚本的操作演示,需要的朋友可以参考下

SQL SELECT命令被用来获取数据从MySQL数据库。可以使用此命令在mysql>提示符下或使用脚本,如PHP。

语法:

下面是通用的SQL SELECT命令的语法来从MySQL表提取数据:

 

 
  1. SELECT field1, field2,...fieldN table_name1, table_name2... 
  2. [WHERE Clause] 
  3. [OFFSET M ][LIMIT N] 

可以使用一个或多个以逗号分隔的表,包括各种使用WHERE子句条件。但是WHERE子句的SELECT命令是一个可选部分。

可以在一个单一的SELECT命令读取一个或多个字段。

可以指定星号(*)的字段的地方。在这种情况下,SELECT将返回所有的字段

可以使用WHERE子句指定任何条件。

可以指定偏移用SELECT将开始返回记录的偏移量。默认情况下,偏移量为0

可以限制返回的使用LIMIT属性的数量。

从命令提示符获取数据:

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

例子:

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

 

 
  1. root@host# mysql -u root -p password
  2. Enter password:******* 
  3. mysql> use TUTORIALS; 
  4. Database changed 
  5. mysql> SELECT * from tutorials_tbl  
  6. +-------------+----------------+-----------------+-----------------+ 
  7. | tutorial_id | tutorial_title | tutorial_author | submission_date | 
  8. +-------------+----------------+-----------------+-----------------+ 
  9. | 1 | Learn PHP | John Poul | 2007-05-21 | 
  10. | 2 | Learn MySQL | Abdul S | 2007-05-21 | 
  11. | 3 | JAVA Tutorial | Sanjay | 2007-05-21 | 
  12. +-------------+----------------+-----------------+-----------------+ 
  13. rows in set (0.01 sec) 
  14.  
  15. mysql> 

使用PHP脚本获取数据:

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

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

例子:

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

 

 
  1. <?php 
  2. $dbhost = 'localhost:3036'
  3. $dbuser = 'root'
  4. $dbpass = 'rootpassword'
  5. $conn = mysql_connect($dbhost, $dbuser, $dbpass); 
  6. if(! $conn ) 
  7. die('Could not connect: ' . mysql_error()); 
  8. $sql = 'SELECT tutorial_id, tutorial_title,  
  9. tutorial_author, submission_date 
  10. FROM tutorials_tbl'; 
  11.  
  12. mysql_select_db('TUTORIALS'); 
  13. $retval = mysql_query( $sql, $conn ); 
  14. if(! $retval ) 
  15. die('Could not get data: ' . mysql_error()); 
  16. while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 
  17. echo "Tutorial ID :{$row['tutorial_id']} <br> "
  18. "Title: {$row['tutorial_title']} <br> "
  19. "Author: {$row['tutorial_author']} <br> "
  20. "Submission Date : {$row['submission_date']} <br> "
  21. "--------------------------------<br>"
  22. }  
  23. echo "Fetched data successfully/n"
  24. mysql_close($conn); 
  25. ?> 

这些行的内容被分配到变量$row,行中的值,然后打印。

注: 一定要记住,当要插入到一个字符串数组的值直接用花括号。

在上面的例子中不断MYSQL_ASSOC作为PHP函数mysql_fetch_array()第二个参数,以便它返回一个关联数组的行为。一个关联数组,可以使用他们的名字,而不是使用索引访问字段。

PHP提供了另一种称为mysql_fetch_assoc()函数也返回该行作为关联数组。

实例:

试试下面的例子显示从tutorial_tbl表的所有记录,使用mysql_fetch_assoc()函数。

 

 
  1. <?php 
  2. $dbhost = 'localhost:3036'
  3. $dbuser = 'root'
  4. $dbpass = 'rootpassword'
  5. $conn = mysql_connect($dbhost, $dbuser, $dbpass); 
  6. if(! $conn ) 
  7. die('Could not connect: ' . mysql_error()); 
  8. $sql = 'SELECT tutorial_id, tutorial_title,  
  9. tutorial_author, submission_date 
  10. FROM tutorials_tbl'; 
  11.  
  12. mysql_select_db('TUTORIALS'); 
  13. $retval = mysql_query( $sql, $conn ); 
  14. if(! $retval ) 
  15. die('Could not get data: ' . mysql_error()); 
  16. while($row = mysql_fetch_assoc($retval)) 
  17. echo "Tutorial ID :{$row['tutorial_id']} <br> "
  18. "Title: {$row['tutorial_title']} <br> "
  19. "Author: {$row['tutorial_author']} <br> "
  20. "Submission Date : {$row['submission_date']} <br> "
  21. "--------------------------------<br>"
  22. }  
  23. echo "Fetched data successfully/n"
  24. mysql_close($conn); 
  25. ?> 

也可以使用常量MYSQL_NUM,作为第二个参数的PHP函数mysql_fetch_array()。这将导致该函数返回一个数字索引的数组。

实例:

试试下面的例子显示使用MYSQL_NUM参数tutorials_tbl表中的所有记录。

 

 
  1. <?php 
  2. $dbhost = 'localhost:3036'
  3. $dbuser = 'root'
  4. $dbpass = 'rootpassword'
  5. $conn = mysql_connect($dbhost, $dbuser, $dbpass); 
  6. if(! $conn ) 
  7. die('Could not connect: ' . mysql_error()); 
  8. $sql = 'SELECT tutorial_id, tutorial_title,  
  9. tutorial_author, submission_date 
  10. FROM tutorials_tbl'; 
  11.  
  12. mysql_select_db('TUTORIALS'); 
  13. $retval = mysql_query( $sql, $conn ); 
  14. if(! $retval ) 
  15. die('Could not get data: ' . mysql_error()); 
  16. while($row = mysql_fetch_array($retval, MYSQL_NUM)) 
  17. echo "Tutorial ID :{$row[0]} <br> "
  18. "Title: {$row[1]} <br> "
  19. "Author: {$row[2]} <br> "
  20. "Submission Date : {$row[3]} <br> "
  21. "--------------------------------<br>"
  22. echo "Fetched data successfully/n"
  23. mysql_close($conn); 
  24. ?> 

所有上述三个例子,将产生相同的结果。

释放内存:

它是一种很好的做法,在每一个SELECT语句释放游标内存。这可以通过使用PHP函数了mysql_free_result()。下面的例子来说明它是如何被使用的。

实例:

试试下面的例子

 

 
  1. <?php 
  2. $dbhost = 'localhost:3036'
  3. $dbuser = 'root'
  4. $dbpass = 'rootpassword'
  5. $conn = mysql_connect($dbhost, $dbuser, $dbpass); 
  6. if(! $conn ) 
  7. die('Could not connect: ' . mysql_error()); 
  8. $sql = 'SELECT tutorial_id, tutorial_title,  
  9. tutorial_author, submission_date 
  10. FROM tutorials_tbl'; 
  11.  
  12. mysql_select_db('TUTORIALS'); 
  13. $retval = mysql_query( $sql, $conn ); 
  14. if(! $retval ) 
  15. die('Could not get data: ' . mysql_error()); 
  16. while($row = mysql_fetch_array($retval, MYSQL_NUM)) 
  17. echo "Tutorial ID :{$row[0]} <br> "
  18. "Title: {$row[1]} <br> "
  19. "Author: {$row[2]} <br> "
  20. "Submission Date : {$row[3]} <br> "
  21. "--------------------------------<br>"
  22. mysql_free_result($retval); 
  23. echo "Fetched data successfully/n"
  24. mysql_close($conn); 
  25. ?> 

在获取数据的同时可以编写复杂的SQL,只要喜欢。程序将保持与上述相同。

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