sql >> データベース >  >> RDS >> MariaDB

MariaDBのすべての関数を一覧表示する2つの方法

    以下は、MariaDBの関数のリストを返すための2つのオプションです。

    SHOW FUNCTION STATUS コマンド

    すべての関数を一覧表示する最も簡単な方法は、SHOW FUNCTION STATUSを使用することです。 コマンド。

    以下を実行するだけで、すべての機能が一覧表示されます。

    SHOW FUNCTION STATUS;

    構文は次のようになります:

    SHOW FUNCTION STATUS
        [LIKE 'pattern' | WHERE expr]

    したがって、LIKEを使用できます またはWHERE 結果を絞り込むための句。

    例:

    SHOW FUNCTION STATUS LIKE '%customer%';

    結果の例:

    +--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    | Db     | Name                       | Type     | Definer          | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
    +--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    | sakila | get_customer_balance       | FUNCTION | [email protected] | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER       |         | utf8mb4              | utf8mb4_general_ci   | utf8mb4_general_ci |
    | sakila | inventory_held_by_customer | FUNCTION | [email protected] | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER       |         | utf8mb4              | utf8mb4_general_ci   | utf8mb4_general_ci |
    +--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

    WHEREを使用できます 結果を列でフィルタリングする句。たとえば、結果を特定のデータベースにフィルタリングできます。

    SHOW FUNCTION STATUS WHERE db = 'music';

    結果の例:

    +-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    | Db    | Name | Type     | Definer          | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
    +-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
    | music | test | FUNCTION | [email protected] | 2021-11-27 09:46:25 | 2021-11-27 09:46:25 | DEFINER       |         | utf8                 | utf8_general_ci      | utf8mb4_general_ci |
    +-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

    SHOW FUNCTION STATUS コマンドは、SHOW PROCEDURE STATUSと非常によく似ています。 コマンド。ストアドプロシージャのリストを返します。

    information_schema.routines

    MariaDBの関数のリストを取得する別の方法は、information_schema.routinesにクエリを実行することです。 テーブル。

    例:

    SELECT 
        routine_schema as "Database",
        routine_name
    FROM 
        information_schema.routines
    WHERE 
        routine_type = 'FUNCTION'
    ORDER BY 
        routine_schema ASC, 
        routine_name ASC;

    結果の例:

    +----------+----------------------------+
    | Database | routine_name               |
    +----------+----------------------------+
    | music    | test                       |
    | sakila   | get_customer_balance       |
    | sakila   | inventory_held_by_customer |
    | sakila   | inventory_in_stock         |
    +----------+----------------------------+

    このテーブルには、ストアドプロシージャに関する情報も格納されます。上記の例では、WHEREを使用してそれらを除外しました 関数(つまり、routine_typeを持つオブジェクト)のみを返す句 FUNCTIONの 。

    ストアドプロシージャを含めるために、WHEREを削除できます 条項:

    SELECT 
        routine_schema as "Database",
        routine_name,
        routine_type
    FROM 
        information_schema.routines
    ORDER BY 
        routine_schema ASC, 
        routine_name ASC;

    この場合、routine_typeも追加しました 手順と機能を区別できるように列を作成します。

    特定のデータベースに絞り込むこともできます:

    SELECT 
        routine_schema as "Database",
        routine_name,
        routine_type
    FROM 
        information_schema.routines
    WHERE 
        routine_schema = 'sakila'
    ORDER BY 
        routine_name ASC;

    結果:

    +----------+----------------------------+--------------+
    | Database | routine_name               | routine_type |
    +----------+----------------------------+--------------+
    | sakila   | film_in_stock              | PROCEDURE    |
    | sakila   | film_not_in_stock          | PROCEDURE    |
    | sakila   | get_customer_balance       | FUNCTION     |
    | sakila   | inventory_held_by_customer | FUNCTION     |
    | sakila   | inventory_in_stock         | FUNCTION     |
    | sakila   | rewards_report             | PROCEDURE    |
    +----------+----------------------------+--------------+

    1. SQL Serverのリンクサーバーに対してSERVERPROPERTY()を実行します

    2. MSSQLServerのクロステーブル制約

    3. ETLプロセスでのPythonとMySQLの使用:PythonとSQLAlchemyの使用

    4. SQL Server(T-SQL)に接続されている現在のワークステーション名を返す