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

伺服器配置變數

廣告