MySQL - 数据库信息



MySQL 通常在其存储两种类型的数据:以表和视图形式存储的实际数据,以及有关数据库及其对象结构的信息。此类信息称为元数据。

例如,当用户忘记数据库或其对象的某些信息时,MySQL 提供特定的命令来检索这些信息。实际上,您可以从 MySQL 数据库中检索三种类型的信息。它们如下所示 -

  • 查询结果信息 - 这包括任何 SELECT、UPDATE 或 DELETE 语句影响的记录数。

  • 有关表和数据库的信息 - 这包括与表和数据库结构相关的信息。

  • 有关 MySQL 服务器的信息 - 这包括数据库服务器的状态、版本号等。

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

从 MySQL 提示符获取数据库信息

从 MySQL 提示符访问 MySQL 服务器时,该提示符在 Windows 中是命令提示符,在 Linux 等中是终端,可以使用以下命令获取有关数据库的任何信息。

  • SHOW DATABASES:此命令用于检索 MySQL 中存在的所有数据库的列表。

  • SHOW TABLES:此命令用于显示数据库中存在的表列表。

  • mysql -V:此命令用于提供系统中安装的当前 MySQL 版本。

  • DESCDESCRIBE:此命令用于检索数据库表的结构或定义。

mysql -V 命令

如果要检查系统中安装的 MySQL Server 版本,请在命令提示符或终端上使用以下 mysql -V。

注意:您必须记住,在 Windows 中必须以管理员身份运行命令提示符。

示例

在这里,我们正在命令提示符下检查 MySQL 服务器的当前版本 -

C:\Windows\System32> mysql -V

输出

如下面的输出所示,当前 MySQL 服务器版本为“8.0.33” -

mysql  Ver 8.0.33 for Win64 on x86_64 (MySQL Community Server - GPL)

SHOW DATABASES 命令

要列出或检索 MySQL 中所有数据库的名称,您可以在登录 MySQL 服务器后使用以下 SHOW DATABASES 命令 -

注意 - 此命令将一起列出系统数据库和用户定义的数据库。用户必须识别其特定的用户定义数据库,所有数据都存储在其中。

示例

在以下查询中,我们正在获取当前 MySQL 服务器中存在的数据库列表 -

SHOW DATABASES;

这里,前三行是系统数据库,后两行是用户定义的数据库 -

数据库
information_schema
mysql
performance_schema
tutorials
tutorials_copy

SHOW TABLES 命令

要列出 MySQL 数据库中的所有表,您可以在使用 USE 命令选择数据库后使用 SHOW TABLES 命令 -

示例

在下面的查询中,我们选择了一个名为“Tutorials”的数据库 -

USE Tutorials;

现在,让我们使用 SHOW TABLES 获取上述数据库中所有表的名称 -

Show Tables;

输出

以下是“Tutorials”数据库中存在的表列表 -

Tables_in_tutorials
customers
employees
students

DESC 命令

如果我们想检查 MySQL 表的结构,我们需要使用 DESC 或 DESCRIBE 查询。DESC 是 DESCRIBE 查询的快捷方式,但检索相同的结果。

示例

这里,我们正在获取 MySQL CUSTOMERS 表的结构 -

DESC CUSTOMERS;

以下是结构 -

字段 类型 默认值 额外
ID int PRI auto_increment
NAME varchar(20)
AGE int
ADDRESS char(25)
SALARY decimal(18,2)

获取查询影响的行数

现在让我们看看如何获取此信息。

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 TABLESSHOW 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 示例

尝试以下示例以获取数据库信息 -

将以下示例复制并粘贴为 mysql_example.php -

<html>
   <head>
      <title>Getting MySQL Database Info</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         $tutorial_count = null;
		 
         if($mysqli->connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli->connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
		 
         if ($result = mysqli_query($mysqli, "SELECT DATABASE()")) {
            $row = mysqli_fetch_row($result);
            printf("Default database is %s<br />", $row[0]);
            mysqli_free_result($result);
         }
         $mysqli->close();
      ?>
   </body>
</html>

输出

访问部署在 apache web 服务器上的 mysql_example.php 并验证输出。

Connected successfully.
Default database is tutorials

获取服务器元数据

MySQL 中有一些重要的命令,可以在 MySQL 提示符下或使用 PHP 等任何脚本执行,以获取有关数据库服务器的各种重要信息。

序号 命令和描述
1

SELECT VERSION( )

服务器版本字符串

2

SELECT DATABASE( )

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

3

SELECT USER( )

当前用户名

4

SHOW STATUS

服务器状态指示器

5

SHOW VARIABLES

服务器配置变量

广告