ホームページ >データベース >mysql チュートリアル >mysqlにはストアドプロシージャはありますか?

mysqlにはストアドプロシージャはありますか?

青灯夜游
青灯夜游オリジナル
2022-06-15 18:37:113824ブラウズ

Mysql にはストアド プロシージャがあります。ストアド プロシージャは、特定の関数を完了するために設計された一連の SQL ステートメントです。MySQL バージョン 5.0 は以前はストアド プロシージャをサポートしていませんでしたが、バージョン 5.0 からストアド プロシージャをサポートしています。これにより、データベースの処理速度が向上するだけでなく、柔軟性も向上します。データベースプログラミングのセックス。ストアド プロシージャは、データの変換、データの移行、レポートの作成に使用できます。これはプログラミング言語に似ています。正常に実行されると、いつでも呼び出して、指定された機能操作を完了できます。

mysqlにはストアドプロシージャはありますか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

Mysql にはストアド プロシージャがあります。

#ストアド プロシージャは、特定の機能を実行するために設計された一連の SQL ステートメントです。ストアド プロシージャを使用する目的は、SQL ステートメントで一般的または複雑な作業を事前に作成し、指定した名前で保存することです。このプロシージャはコンパイルおよび最適化されてデータベース サーバーに保存されるため、ストアド プロシージャと呼ばれます。将来、定義したストアド プロシージャと同じサービスをデータベースで提供する必要がある場合は、「CALL ストアド プロシージャ名」を呼び出すだけで自動的に完了します。

データベースの操作に一般的に使用される SQL ステートメントは、最初にコンパイルし、実行時に実行する必要があります。ストアド プロシージャは、別のアプローチで SQL ステートメントを実行します。

ストアド プロシージャは、データベースに作成および保存されるプログラム可能な関数であり、通常は SQL ステートメントといくつかの特別な制御構造で構成されます。ストアド プロシージャは、異なるアプリケーションまたはプラットフォームで同じ特定の機能を実行する場合に特に適しています。

MySQL 5.0 バージョンは以前はストアド プロシージャをサポートしていなかったので、MySQL のアプリケーションが大幅に減少しました。 MySQL はバージョン 5.0 からストアド プロシージャをサポートしているため、データベースの処理速度が向上するだけでなく、データベース プログラミングの柔軟性も向上します。

ストアド プロシージャはデータベースの重要な機能です。ストアド プロシージャデータの変換、データの移行、レポートの作成はプログラミング言語に似ており、正常に実行されると、いつでも呼び出して、指定された機能操作を完了できます。

ストアド プロシージャを使用すると、データベース アクセスの効率が向上するだけでなく、データベース使用のセキュリティも向上します。

呼び出し元にとって、ストアド プロシージャは SQL ステートメントをカプセル化するため、呼び出し元は論理関数の特定の実装プロセスを考慮する必要がありません。簡単な呼び出しだけで、JavaやC#などのプログラミング言語から呼び出すことができます。

#ストアド プロシージャを作成するには、開発者にとって若干高い要件が必要ですが、ストアド プロシージャには次の利点があるため、これはストアド プロシージャの一般的な使用には影響しません。 # 1) カプセル化

通常、論理関数を完成させるには複数の SQL ステートメントが必要であり、各ステートメント間でパラメーターが受け渡される可能性が高いため、論理関数の作成は比較的複雑であり、ストアド プロシージャには以下を含めることができます。これらの SQL ステートメントは独立したユニットにまとめられるため、外部からは複雑な SQL ステートメントを見ることができず、目的を達成するために単純な呼び出しだけで済みます。また、データベースの専門家は、ストアド プロシージャを呼び出すアプリケーションのソース コードに影響を与えることなく、いつでもストアド プロシージャを変更できます。

2) SQL ステートメントの機能と柔軟性を強化できる

ストアド プロシージャは、強力な柔軟性を備え、複雑な判断などを完了できるフロー制御ステートメントを使用して作成できます。複雑な操作。

3) ネットワーク トラフィックを削減できる

ストアド プロシージャはサーバー側で実行され、クライアントでストアド プロシージャを呼び出すときの実行速度が速いため、コンピュータの場合、呼び出しステートメントのみがネットワーク上に送信されるため、ネットワークの負荷が軽減されます。

4) 高いパフォーマンス

ストアド プロシージャが正常にコンパイルされると、データベース サーバーに保存され、クライアントは今後それを直接呼び出すことができます。すべての SQL ステートメントがサーバーから実行されるため、パフォーマンスが向上します。ただし、ストアド プロシージャは多ければ多いほど良いため、ストアド プロシージャを過剰に使用すると、実際にはシステム パフォーマンスに影響を与えることに注意してください。

5) データベースのセキュリティとデータの整合性を向上させる

ストアド プロシージャのセキュリティを向上させる 1 つの方法は、ストアド プロシージャを中間コンポーネントとして使用することです。その後、ストアド プロシージャが外部プログラムへのインターフェイスとして提供されます。これにより、外部プログラムはデータベースのテーブルを直接操作することができず、ストアドプロシージャを通じてのみ対応するテーブルを操作できるため、セキュリティをある程度向上させることができます。

6) データを独立させる

データを独立させると、分離の効果が得られます。つまり、プログラムはストアド プロシージャを呼び出して、次の実行を置き換えることができます。複数の SQL ステートメント。この場合、ストアド プロシージャによってデータがユーザーから分離されます。利点は、データ テーブルの構造が変更された場合に、テーブルを呼び出すときにプログラムを変更する必要がないことです。データベース管理者はストアド プロシージャを書き直すだけで済みます。 。

MySQL ストアド プロシージャの例

CREATE PROCEDURE を使用して最初の MySQL ストアド プロシージャを開発する方法を段階的に説明します。さらに、SQL ステートメントからストアド プロシージャを呼び出す方法も示します。 最初の MySQL ストアド プロシージャの作成

構文に慣れるために、GetAllProducts() の単純なストアド プロシージャを開発します。 GetAllProducts() ストアド プロシージャは、products テーブルからすべての製品を選択します。

mysql クライアント ツールを起動し、次のコマンドを入力します:

 DELIMITER //
 CREATE PROCEDURE GetAllProducts()
   BEGIN
   SELECT productCode, productName FROM products;
   END //
 DELIMITER ;

コマンドを実行します:

mysql> DELIMITER //
mysql> CREATE PROCEDURE GetAllProducts()
-> BEGIN
-> SELECT productCode, productName FROM products;
-> END //
Query OK, 0 rows affected (0.02 sec)
mysql> DELIMITER ;

ストアド プロシージャをさらに詳しく調べてみましょう:

  • 最初のコマンドは DELIMITER // で、ストアド プロシージャの構文とは関係ありません。 DELIMITER ステートメントは、標準の区切り文字 (セミコロン (;) を別のセミコロン) に変更します。この場合、区切り文字はセミコロン (;) から二重スラッシュ // に変わります。なぜ区切り文字を変更する必要があるのでしょうか? mysql ツールに各ステートメントを一度に解釈させるのではなく、ストアド プロシージャをサーバー全体に渡したいためです。 END キーワードの後に​​、区切り文字 // を使用してストアド プロシージャの終了を示します。最後のコマンド (DELIMITER; ) は、区切り文字をセミコロン (;) に戻します。

  • CREATE PROCEDURE ステートメントを使用して、新しいストアド プロシージャを作成します。 CREATE PROCEDURE ステートメントの後にストアド プロシージャの名前を指定します。この場合、ストアド プロシージャの名前は GetAllProducts です。ストアド プロシージャ名の後にかっこを置きます。

  • BEGIN と END の間の部分は、ストアド プロシージャの本体と呼ばれます。ビジネス ロジックを処理するには、宣言的な SQL ステートメントを本体に配置します。このストアド プロシージャでは、単純な SELECT ステートメントを使用して、products テーブル内のデータをクエリします。

ストアド プロシージャの表示

次のコマンドを使用して、指定したデータベースにあるストアド プロシージャを表示できます:

 select name from mysql.proc where db='mysqldemo';

実行結果:

mysqlにはストアドプロシージャはありますか?

ストアド プロシージャの呼び出し

ストアド プロシージャを呼び出すには、次の SQL コマンドを使用します。

CALL stored_procedure_name();

CALL ステートメントを使用してストアド プロシージャを呼び出します。たとえば、GetAllProducts() ストアド プロシージャを呼び出すには、次のステートメントを使用します:

CALL GetAllProducts();

上記のステートメントを実行すると、すべてのデータが取得されます。製品テーブルの製品。

mysqlにはストアドプロシージャはありますか?

[関連する推奨事項:

mysql ビデオ チュートリアル ]

以上がmysqlにはストアドプロシージャはありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。