3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ストアドプロシージャ とは

Posted at

勉強前イメージ

DBのなにかの機能?

調査

ストアドプロシージャ とは

データベースに対する処理をプログラムにめまとめてRDBMSに保存したものになります。
論理的に複雑なSQLの呼び出しを一つの処理単位にまとめて名前で呼び出せるようになっており、
繰り返しや条件分岐などの構造を持つこともあります。

ストアドプロシージャのメリット

  • SQLを一つずつ発行しなくてよい

ストアドプロシージャに保存されているので
複数SQLがあっても1つの処理にまとめることができる

  • トラフィックの削減

外部からSQLを発行するに比べたら
SQLの解析が完了している状態で保存されているため高速に実行でき、
出力までの時間やトラフィックに関しても削減できる

Mysqlでストアドプロシージャやってみる

以下のようなテーブルを作成しました

mysql> select * from user;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | Bob  |   30 |
|    2 | Saki |   24 |
|    3 | Natu |   25 |
|    4 | Mery |   40 |
+------+------+------+
  • プロシージャの作成

例では、 test_procedure という名前をつけて arg_age という定義をしています。

CREATE PROCEDURE test_procedure(IN arg_age int)
SELECT * FROM user WHERE age = arg_age;
  • プロシージャの確認
SHOW CREATE PROCEDURE test_procedure\G
mysql> SHOW CREATE PROCEDURE test_procedure\G
*************************** 1. row ***************************
           Procedure: test_procedure
            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
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `test_procedure`(IN arg_age int)
SELECT * FROM user WHERE age = arg_age
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: latin1_swedish_ci
  • プロシージャの実行
CALL test_procedure(25);
mysql> CALL test_procedure(25);
+------+------+------+
| id   | name | age  |
+------+------+------+
|    3 | Natu |   25 |
+------+------+------+
1 row in set (0.00 sec)
  • プロシージャの削除
DROP PROCEDURE test_procedure;

勉強後イメージ

実際に自分で動かしてみてイメージ湧いたかも。
↑で言えば SELECT * FROM user WHERE age = ? の ? だけを後から変更して取れるようになるってことか
わかりやすいし便利ー

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?