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

MySQLに保存された関数とプロシージャを作成して実行する方法

    この記事では、A2ホスティングアカウントでMySQLに保存された関数とプロシージャを作成して実行する方法について説明します。保存された関数とプロシージャは、さまざまなシナリオで使用できます。たとえば、適切に設計された保存された関数とプロシージャは、データベースのセキュリティを強化し、データの整合性を向上させ、パフォーマンスを向上させることができます。

    保存された関数

    MySQLの保存された関数は、データを操作および処理するための強力で柔軟な方法を提供します。 MySQLを使用する任意のA2ホスティングサーバーで保存された関数を定義して実行できます。

    テストデータベースの設定

    保存された関数の基本的な例を示すために、テスト目的で使用できるデータベースを作成することから始めましょう。次のSQLステートメントで、 usernameを置き換えます。 アカウントのユーザー名:

    CREATE DATABASE username_test;
    以前のSQLコマンド(および次のSQLコマンド)は、MySQLツールを使用してコマンドラインから実行するか、phpMyAdminを使用してWebブラウザーで実行できます。

    phpMyAdminを使用している場合は、名前 username をクリックします _testを使用して、データベースを選択します。それ以外の場合、mysqlコマンドラインプログラムを使用している場合は、次のSQLステートメントを入力します。

    USE username_test;

    次に、ユーザー名でテーブルを作成します _test 製品という名前のデータベース 。これを行うには、次のSQLステートメントを実行します。

    CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));

    次のSQLステートメントは、いくつかのサンプルデータを製品に追加します。 テーブル:

    INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);
    > ストアド関数の作成

    使用するデータベースとテーブルができたので、ストアド関数を作成する準備が整いました。 calcProfitという名前の関数を作成しましょう 。この関数は、コストと何かの価格という2つの入力パラメーターを取ります。価格からコストを差し引いて利益を計算し、その値を呼び出し元の式に返します。

    このストアド関数を作成するには、次のMySQLステートメントを実行します。

    DELIMITER $$
    CREATE FUNCTION calcProfit(cost FLOAT, price FLOAT) RETURNS DECIMAL(9,2)
    BEGIN
      DECLARE profit DECIMAL(9,2);
      SET profit = price-cost;
      RETURN profit;
    END$$
    DELIMITER ;
    区切り文字 これらのステートメントの先頭にあるコマンドは、MySQLが関数定義をすぐに処理するのを防ぎます。 区切り文字 これらのステートメントの最後にあるコマンドは、処理を通常に戻します。 ストアド関数の使用

    これで、データベースクエリでストアド関数を実行できます。次のSQLステートメントは、これを行う方法を示しています。

    SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;

    このSQLステートメントは次の結果を返します。

    +---------+--------------+-----------+------------+--------+
    | prod_id | prod_name    | prod_cost | prod_price | profit |
    +---------+--------------+-----------+------------+--------+
    |       1 | Basic Widget |      5.95 |       8.35 |   2.40 |
    |       2 | Micro Widget |      0.95 |       1.35 |   0.40 |
    |       3 | Mega Widget  |     99.95 |        140 |  40.05 |
    +---------+--------------+-----------+------------+--------+
    

    ご覧のとおり、 calcProfit 関数は、テーブル内の各製品の利益(価格からコストを引いたもの)を自動的に計算します。

    ストアドプロシージャ

    ストアドプロシージャは、ストアド関数と混同されることがありますが、いくつかの重要な点で異なります。たとえば、ストアドプロシージャは、 CALLを使用して呼び出す必要があります。 一方、格納された関数はSQL式で直接使用できます。 MySQLを使用する任意のA2ホスティングサーバーでストアドプロシージャを定義して実行できます。

    次のMySQLステートメントは、 procedureTestという名前の非常に基本的なストアドプロシージャを作成する方法を示しています。 。この手順では、製品の簡単な検索を実行します 上記のストアド関数の例で使用したテーブル。このプロシージャはあまり実用的ではありませんが、ストアドプロシージャを宣言するための正しい構文と構造を示しています。

    DELIMITER $$
    CREATE PROCEDURE procedureTest()
    BEGIN
      SELECT prod_name FROM products;
    END$$
    DELIMITER ;
    

    ストアドプロシージャを実行するには、次のMySQLステートメントを使用します。

    CALL procedureTest() \G
    phpMyAdminを使用している場合は、 \ Gなしで前のMySQLステートメントを入力します 最後にオプション。 詳細情報

    MySQLのストアドプロシージャと関数の詳細については、http://dev.mysql.com/doc/refman/5.0/en/create-procedure.htmlにアクセスしてください。


    1. Microsoft SQL Server2005でgroup_concatMySQL関数をシミュレートしますか?

    2. postgresqlデータベースに画像を挿入します

    3. SQLデータ定義言語

    4. インメモリOLTP:SQLServer2016の新機能