MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLの特定データベースにおけるストアドプロシージャの一覧と詳細情報を確認する方法

MySQLでは、mysql.proc テーブルに対してクエリを実行することで、特定のデータベースに存在するストアドプロシージャの一覧とその完全な情報を確認できます。

mysql.proc テーブルを使った確認方法

以下のように db カラムで対象のデータベース名を指定し、type カラムで「PROCEDURE」を条件に絞り込むことで、該当するストアドプロシージャの詳細な情報を取得できます。

mysql> Select * from mysql.proc where db = 'query' AND type = 'PROCEDURE' \G
*************************** 1. row ***************************
                  db: query
                name: allrecords
                type: PROCEDURE
       specific_name: allrecords
            language: SQL
     sql_data_access: CONTAINS_SQL
    is_deterministic: NO
      security_type: DEFINER
          param_list:
             returns:
                body: BEGIN
Select * from Student_info;
END
              definer: root@localhost
              created: 2017-11-11 09:56:11
             modified: 2017-11-11 09:56:11
            sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
              comment:
character_set_client: cp850
collation_connection: cp850_general_ci
        db_collation: latin1_swedish_ci
           body_utf8: BEGIN
Select * from Student_info;
END
1 row in set (0.00 sec)

出力結果から読み取れる主な情報

上記のクエリ結果からは、次のような情報を確認することができます。

  • name(プロシージャ名):作成されたストアドプロシージャの名前。この例では「allrecords」という名前です。
  • body(定義内容):プロシージャの本体となるSQL文。BEGIN ... END の間に記述された処理内容がわかります。
  • definer(定義者):どのユーザーアカウントによって作成されたかを示します。例では「root@localhost」です。
  • created / modified(作成日時・更新日時):プロシージャがいつ作成され、最後に変更されたかの日時情報です。
  • security_type(セキュリティタイプ):実行権限が「DEFINER(定義者)」か「INVOKER(呼び出し元)」のどちらに基づくかを示します。
  • sql_mode / 文字コード設定:作成時のSQLモードや文字セット・照合順序などの環境設定も記録されています。

補足:MySQL 5.7以降での注意点

mysql.proc テーブルはMySQL 5.6以前で利用できる手法です。MySQL 5.7以降では information_schema.routines テーブルや SHOW CREATE PROCEDURE ステートメントを使用する方法が推奨されています。

例えば、次のようなクエリでも同様にストアドプロシージャの情報を取得できます。

SELECT * FROM information_schema.routines 
WHERE routine_schema = 'query' AND routine_type = 'PROCEDURE';

使用しているMySQLのバージョンに応じて、適切な方法を選択してください。

  1. 特定のMySQLデータベースに保存されているビューの一覧を確認する方法

    MySQLでは、いくつかの異なるクエリを使って、特定のデータベースに保存されているビュー(VIEW)の一覧を簡単に確認できます。この記事では、「query」という名前のデータベースを例に、代表的な3つの方法を紹介します。 1. information_schemaを使ってビュー一覧を取得する まずは、information_schemaデータベースのTABLESテーブルを参照する方法です。TABLE_TYPEが「VIEW」であるレコードを抽出し、TABLE_SCHEMAで対象のデータベースを指定することで、そのデータベース内のビューだけを一覧表示できます。 mysql> SELECT

  2. MySQLで特定のデータベース内にあるビューのメタデータを確認する方法

    MySQLでは、INFORMATION_SCHEMA データベース内の VIEWS テーブルを参照することで、ビューのメタデータ(ビューに関する定義情報)を確認できます。このテーブルには、ビューの定義内容や作成者、更新可否などの詳細が格納されています。ここでは、「Info」という名前のビューを例に、具体的な確認方法を見ていきましょう。ビューのメタデータを取得するクエリ以下のクエリを実行すると、「query」データベース内の「Info」というビューのメタデータを表示できます。mysql> SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_