MySQL - 数据库信息

获取和使用MySQL元数据

您希望从MySQL获得三种类型的信息.

  • 有关查询结果的信息 : 这包括受SELECT,UPDATE或DELETE语句影响的记录数.

  • 有关表和数据库的信息 : 这包括有关表格和数据库结构的信息.

  • 有关MySQL服务器的信息 : 这包括数据库服务器的状态,版本号等.

在MySQL提示符下获取所有这些信息非常容易,但在使用PERL或PHP API时,我们需要显式调用各种API以获取所有这些信息.

获取受查询影响的行数

现在看看如何获取此信息.

PERL示例

在DBI脚本中,受影响的行计数由<返回 do()或者通过 execute()命令,具体取决于您执行查询的方式.

# Method 1
# execute $query using do( )
my $count = $dbh->do ($query);
# report 0 rows if an error occurred
printf "%d rows were affected\n", (defined ($count) ? $count : 0);

# Method 2
# execute query using prepare( ) plus execute( )
my $sth = $dbh->prepare ($query);
my $count = $sth->execute ( );
printf "%d rows were affected\n", (defined ($count) ? $count : 0);

PHP示例

在PHP中,调用 mysql_affected_rows()函数查找查询更改了多少行.

$result_id = mysql_query ($query, $conn_id);
# report 0 rows if the query failed
$count = ($result_id ? mysql_affected_rows ($conn_id) : 0);
print ("$count rows were affected\n");

列表和数据库

列出所有数据库和数据库可用的表非常容易服务器.如果您没有足够的权限,您的结果可能 null .

除了以下代码块中显示的方法外,您还可以使用 SHOW TABLES SHOW DATABASES 查询以获取PHP或PERL中的表或数据库列表.

PERL示例

# Get all the tables available in current database.
my @tables = $dbh->tables ( );

foreach $table (@tables ){
   print "Table Name $table\n";
}

PHP示例

<?php
   $con = mysql_connect("localhost", "userid", "password");
   
   if (!$con) {
      die('Could not connect: ' . mysql_error());
   }
   $db_list = mysql_list_dbs($con);

   while ($db = mysql_fetch_object($db_list)) {
      echo $db->Database . "<br />";
   }
   mysql_close($con);
?>

获取服务器元数据

MySQL中有一些重要的命令可以在MySQL提示符下执行或者通过使用像PHP这样的任何脚本来获取有关数据库服务器的各种重要信息.

Sr.No.Command& Description
1

SELECT VERSION()

服务器版本字符串

2

SELECT DATABASE()

当前数据库名称(如果没有则为空)

3

SELECT USER()

当前用户名

4

SHOW STATUS

服务器状态指示器

5

SHOW VARIABLES

服务器配置变量