Mysql 简明教程
MySQL - Database Info
MySQL通常存储两类数据:以表和视图的形式存储的实际数据,以及有关数据库及其对象结构的信息。此类信息称为元数据。
例如,每当用户忘记数据库或其对象中的一些信息时,MySQL会提供用于检索所述信息的具体命令。实际上,有三类信息可以从MySQL数据库中检索。它们如下所示:
-
Information about the result of queries - 这包括受任何SELECT、UPDATE或DELETE语句影响的记录数量。
-
Information about the tables and databases - 这包括与表和数据库的结构有关的信息。
-
Information about the MySQL server - 这包括数据库服务器的状态、版本号等。
在MySQL提示符下获取所有这些信息非常容易,但在使用PERL或PHP API时,我们需要显式调用各种API才能获取所有这些信息。
Obtaining Database Info from MySQL Prompt
在从MySQL提示符(在Windows中是命令提示符,在Linux中是终端等)访问MySQL服务器时,可以使用以下命令获取有关数据库的任何信息。
-
SHOW DATABASES: 此命令用于检索MySQL中所有数据库列表。
-
SHOW TABLES: 此命令用于显示数据库中存在的表列表。
-
mysql -V: 此命令用于提供系统中安装的MySQL的当前版本。
-
DESC 或 DESCRIBE: 此命令用于检索数据库表的结构或定义。
mysql -V Command
如果您想检查系统中安装的MySQL服务器的版本,请在命令提示符或终端中使用以下mysql -V。
Note: 您必须记住,必须以管理员身份在Windows中运行命令提示符。
Output
正如我们在下面的输出中看到的,当前 MySQL 服务器版本是“8.0.33” −
mysql Ver 8.0.33 for Win64 on x86_64 (MySQL Community Server - GPL)
SHOW DATABASES Command
若要列出或检索 MySQL 中所有数据库的名称,可以在登录到 MySQL 服务器后使用以下 SHOW DATABASES 命令 −
Note − 此命令将系统数据库和用户定义数据库一起列出。用户必须识别其特定的用户定义数据库,所有数据都存储在其中。
Obtaining the Number of Rows Affected by a Query
现在让我们看看如何获取此信息。
PERL Example
在 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);
Listing Tables and Databases
列出所有数据库以及数据库服务器可用的表非常容易。如果你没有足够的权限,你的结果可能是 null 。
除了在以下代码块中显示的方法外,你还可以使用 SHOW TABLES 或 SHOW DATABASES 查询以在 PHP 或 PERL 中获取表或数据库列表。
PERL Example
# Get all the tables available in current database.
my @tables = $dbh->tables ( );
foreach $table (@tables ){
print "Table Name $table\n";
}
PHP Example
尝试以下示例以获取数据库信息 −
将以下示例复制粘贴为 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>