【超便利!】Show Procedures/Functions MySQL Command Lineでできること

2024-04-02

MySQLコマンドラインでストアドプロシージャや関数を表示するには、SHOWコマンドを使用します。このコマンドは、データベース内のストアドプロシージャや関数のリストを表示したり、特定のプロシージャや関数の詳細情報を表示したりすることができます。

コマンド

SHOW [PROCEDURE | FUNCTION] [db_name.routine_name]
  • PROCEDURE: ストアドプロシージャを表示します。
  • FUNCTION: 関数を表示します。
  • db_name: ストアドプロシージャや関数が存在するデータベースの名前です。省略すると、現在のデータベースが使用されます。
  • routine_name: 表示したいストアドプロシージャや関数の名前です。省略すると、すべてのストアドプロシージャや関数が表示されます。

オプション

  • LIKE: 名前の一部を指定して、一致するストアドプロシージャや関数を検索できます。
  • WHERE: 条件を指定して、ストアドプロシージャや関数をフィルタリングできます。
  • \G: 縦並びで表示します。

  • 現在のデータベースにあるすべてのストアドプロシージャを表示する
SHOW PROCEDURE
  • test_dbデータベースにあるすべての関数を表示する
SHOW FUNCTION test_db.*
  • 名前がget_userで始まるストアドプロシージャを表示する
SHOW PROCEDURE LIKE 'get_user%'
  • created_at2024-03-31以降のストアドプロシージャを表示する
SHOW PROCEDURE WHERE created_at >= '2024-03-31'
SHOW PROCEDURE CODE get_user_info

補足

  • SHOWコマンドは、MySQL WorkbenchなどのGUIツールでも使用できます。
  • ストアドプロシージャや関数は、データベーススキーマの一部として保存されます。
  • ストアドプロシージャや関数は、SQLクエリをまとめることで、コードの再利用性と保守性を向上させることができます。



ストアドプロシージャ

DELIMITER //

CREATE PROCEDURE get_user_info(
  IN user_id INT,
  OUT user_name VARCHAR(255),
  OUT email VARCHAR(255)
)
BEGIN
  SELECT user_name, email
  FROM users
  WHERE user_id = user_id;
END //

DELIMITER ;

関数

DELIMITER //

CREATE FUNCTION get_user_count()
RETURNS INT
BEGIN
  RETURN (SELECT COUNT(*) FROM users);
END //

DELIMITER ;

使用例

# すべてのストアドプロシージャを表示する
SHOW PROCEDURE;

# `test_db`データベースにあるすべての関数を表示する
SHOW FUNCTION test_db.*;

# 名前が`get_user`で始まるストアドプロシージャを表示する
SHOW PROCEDURE LIKE 'get_user%';

# `created_at`が`2024-03-31`以降のストアドプロシージャを表示する
SHOW PROCEDURE WHERE created_at >= '2024-03-31';

# `get_user_info`ストアドプロシージャの詳細情報を表示する
SHOW PROCEDURE CODE get_user_info;

# `get_user_info`ストアドプロシージャを実行する
CALL get_user_info(1, @user_name, @email);

# `get_user_count`関数を呼び出す
SELECT get_user_count();

補足

  • 上記のサンプルコードは、MySQL 8.0で使用できます。



MySQLコマンドラインでストアドプロシージャ/関数を表示する他の方法

INFORMATION_SCHEMAデータベースには、ROUTINESテーブルというテーブルがあり、ストアドプロシージャや関数の情報が格納されています。このテーブルを使用して、ストアドプロシージャや関数を表示することができます。

SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE IN ('PROCEDURE', 'FUNCTION');

mysqldumpコマンドを使用して、データベースをダンプすると、ストアドプロシージャや関数の定義も含まれます。

mysqldump -u root -p test_db > test_db.sql

生成されたtest_db.sqlファイルを開くと、ストアドプロシージャや関数の定義を確認することができます。

GUIツールを使用する

MySQL WorkbenchなどのGUIツールを使用すると、ストアドプロシージャや関数を簡単に表示することができます。

直接ソースコードを見る

ストアドプロシージャや関数は、データベースサーバー上のファイルに保存されています。これらのファイルを直接開くことで、ストアドプロシージャや関数のソースコードを確認することができます。

情報取得ツールを使う

Navicat for MySQLなどの情報取得ツールを使うと、ストアドプロシージャや関数の情報をわかりやすく表示することができます。

それぞれの方法のメリットとデメリット

方法メリットデメリット
SHOWコマンド簡単詳細情報が少ない
INFORMATION_SCHEMAテーブル詳細情報が多い複雑
mysqldumpコマンドファイル出力全体の情報も出力される
GUIツール簡単GUIツールのインストールが必要
直接ソースコードを見る詳細情報専門知識が必要
情報取得ツールわかりやすいツールの購入が必要
  • 簡単な方法でストアドプロシージャや関数のリストを表示したい場合は、SHOWコマンドを使用します。
  • 詳細情報を表示したい場合は、INFORMATION_SCHEMAテーブルを使用するか、GUIツールを使用します。
  • ストアドプロシージャや関数のソースコードを確認したい場合は、直接ソースコードを見るか、mysqldumpコマンドを使用します。

mysql database stored-procedures


SQL Server、データベース、同期:2つの独立したシステムを同期する方法

レプリケーションは、データベースの変更を複製して、別のデータベースに反映する方法です。 主な利点は、データの冗長性と可用性の向上です。 1つのデータベースが故障しても、複製されたデータベースからデータを取り出すことができます。技術例:SQL Server レプリケーション: SQL Server には、トランザクション レプリケーション、スナップショット レプリケーション、マージ レプリケーションなど、さまざまなレプリケーション方法が用意されています。...


PHPでデータベースとフロントエンドを繋ぐ!MySQLデータのJSONエンコード

PHP の実行環境MySQL データベースデータベースに接続するための情報 (ホスト名、ポート番号、データベース名、ユーザー名、パスワード)解説mysqli_connect() 関数を使ってデータベースに接続します。mysqli_query() 関数を使って SQL クエリを実行します。...


MySQLからMariaDBへの移行:サンプルコードとツール

MySQLとMariaDBは、どちらもオープンソースで高性能な関係データベース管理システム(RDBMS)ですが、互換性がありながら微妙な違いがあります。近年、MariaDBはMySQLに取って代わる人気のある選択肢となっています。そのため、多くのユーザーが既存のMySQLデータベースをMariaDBに移行することを検討しています。...


グループ化の達人!MySQLでグループごとの最大値レコードを取得する4つのテクニック

SQLのGROUP BY句を使用してグループ化された結果の各グループの最大値を持つレコードを取得するには、いくつかの方法があります。方法MAX()関数とGROUP BY句を使用するこれは最も基本的な方法です。MAX()関数はグループ内の最大値を返し、GROUP BY句はグループを指定します。...


【初心者でも安心】MySQLとMariaDBでForeignKeyを使って関連テーブルのデータを取得する方法

前提条件このチュートリアルを実行するには、次のものが必要です。MySQL または MariaDB がインストールされているコンピュータサンプルデータを含むデータベース基本的な SQL の知識使用するテーブルこのチュートリアルでは、次の 2 つのテーブルを使用します。...


SQL SQL SQL SQL Amazon で見る



MySQL Workbench/phpMyAdmin/MySQLクライアントツールでストアドプロシージャの定義を確認する方法

SHOW CREATE PROCEDURE ステートメントを使用するSHOW CREATE PROCEDUREステートメントは、指定されたストアドプロシージャの定義を返すMySQL拡張機能です。このステートメントを使用するには、以下のいずれかの条件を満たす必要があります。