English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQL メタデータ

MySQLの以下の3つの情報について知りたいかもしれません:

  • クエリ結果情報:SELECT、UPDATEまたはDELETEステートメントが影響するレコード数。

  • データベースおよびデータテーブルの情報:データベースおよびデータテーブルの構造情報が含まれています。

  • MySQLサーバー情報:現在のデータベースサーバーの状態やバージョン番号などが含まれています。

MySQLのコマンドプロンプトでは、簡単に上記のサーバー情報を取得できます。 しかし、PerlやPHPなどのスクリプト言語を使用する場合、特定のインターフェース関数を呼び出す必要があります。 次に詳しく説明します。

クエリが影響したレコード数を取得

PERL例

DBIスクリプトでは、 do( )やexecute( )関数を通じて、影響したレコード数が返されます:

# 方法 1
# do( )を使用して$queryを実行 
my $count = $dbh->do ($query);
# エラーが発生した場合、0を出力
printf "%d 件のデータが影響されました\n", (defined ($count) ? $count : 0);
# 方法 2
# prepare( )およびexecute( )を使用して$queryを実行 
my $sth = $dbh->prepare ($query);
my $count = $sth->execute ( );
printf "%d 件のデータが影響されました\n", (defined ($count) ? $count : 0);

PHP例

PHPでは、mysqli_affected_rows( )関数を使用してクエリが影響したレコード数を取得できます。

$result_id = mysqli_query ($conn_id, $query);
# クエリが失敗した場合に返されます 
$count = ($result_id ? mysqli_affected_rows ($conn_id) : 0);
print ("$count 件のデータが影響されました\n");

データベースとテーブルリスト

MySQLサーバーからデータベースとテーブルリストを簡単に取得できます。 十分な権限がない場合、結果はnullが返されます。

SHOW TABLESやSHOW DATABASES文を使用して、データベースとテーブルリストを取得することもできます。

PERL例

# 現在のデータベース中のすべての利用可能なテーブルを取得。
my @tables = $dbh->tables ( );
foreach $table (@tables ){
   print "テーブル名 $table\n";
}

PHP例

以下の例は、MySQLサーバー上のすべてのデータベースの出力例です:

<?php
$dbhost = 'localhost';  // mysqlサーバーホストアドレス
$dbuser = 'root';            // mysqlユーザー名
$dbpass = '123456';          // mysqlユーザー名とパスワード
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('接続失敗: ' . mysqli_error($conn));
}
// エンコーディングを設定して、中国語の乱码を防ぐ
$db_list = mysqli_query($conn, 'SHOW DATABASES');
while ($db = mysqli_fetch_object($db_list))
{
  echo $db->Database . "<br />";
}
mysqli_close($conn);
?>

サーバーメタデータの取得

以下のコマンドは MySQL コマンドプロンプトで使用できます。また、スクリプト内でも使用できます。 PHP スクリプトなどの使用例。

コマンド説明
SELECT VERSION( )サーバーバージョン情報
SELECT DATABASE( )現在のデータベース名(または空に戻る)
SELECT USER( )現在のユーザー名
SHOW STATUSサーバー状態
SHOW VARIABLESサーバー設定変数