MySql ビュー、トリガー、ストアド プロシージャに関する簡単な説明

MySql ビュー、トリガー、ストアド プロシージャに関する簡単な説明

ビュー

ビューとは何ですか?ビューの役割は何ですか?

ビューは仮想テーブルであり、データ自体を含まない論理テーブルです。選択ステートメントとしてデータ ディクショナリに保存されます

ビューを通じて、ベース テーブル (ビューを作成するために使用されたテーブルはベース テーブルと呼ばれます) のデータの一部を表示できます。簡単に言えば、ビューのデータはベース テーブルから取得されます。

ビューの利点:

  • シンプル: ビューを使用するユーザーは、対応するテーブルの構造、結合条件、フィルター条件を気にする必要がありません。ユーザーにとって、結果セットは複合条件によって既にフィルター処理されています。
  • セキュリティ: ビューを使用するユーザーは、クエリを許可された結果セットにのみアクセスできます。テーブルの権限管理は特定の行または列に制限することはできませんが、ビューを通じて簡単に実現できます。
  • データの独立性: ビューの構造が決定されると、テーブル構造の変更がユーザーに与える影響を遮断できます。ソース テーブルに列を追加しても、ビューには影響しません。ソース テーブルで列名が変更された場合は、訪問者に影響を与えることなくビューを変更することで解決できます。
  • スペースは占有されません: ビューは論理テーブルであり、メモリ スペースを占有しません。

つまり、ほとんどの場合、ビューはデータのセキュリティを確保し、クエリの効率を向上させるために使用されます。

ビューの欠点:

  • パフォーマンスが低い: SQL Server は、ビュー クエリを基本テーブルに対するクエリに変換する必要があります。ビューが複雑な複数テーブル クエリによって定義されている場合、ビューに対する単純なクエリであっても、SQL Server によって複雑な組み合わせに変換されるため、一定の時間がかかります。
  • 変更の制限: ユーザーがビュー内の特定の情報を変更しようとすると、データベースはそれをベース テーブル内の特定の情報の変更に変換する必要があります。これは単純なビューでは非常に便利ですが、より複雑なビューでは変更できない場合があります。

ビューの作成と変更

--作成するための基本的な構文は次のとおりです。
select ステートメントとしてビュー <ビュー名> を作成します。
select ステートメントとしてビュー <ビュー名> (フィールド) を作成します。
ビュー <ビュー名> を作成または置換します。

--変更された構文は次のとおりです。
alter view <ビュー名> as select statement;

--削除構文を表示します:
ビュー <ビュー名> を削除します。

トリガー

トリガーとは何ですか?

トリガーは特定の状況を監視し、アクションをトリガーします。

トリガーを作成および削除するための構文:

--トリガーを作成するための構文:
各行のテーブル名に対する挿入/更新/削除の前後にトリガートリガー名を作成します。
始める
SQL ステートメント;
終わり

--after/before: イベント発生前または発生後に設定できます --insert/update/delete: 挿入、更新、または削除の実行中にトリガーできます --for each row: 1 行おきにアクションを実行します --delete トリガー構文:
トリガートリガー名をドロップします。

デモ

--従業員の遅刻テーブルを作成します。
work_time_delayテーブルを作成する(
empno int not null コメント '従業員番号',
ename varchar(50) コメント '従業員名',
ステータス int コメント 'ステータス'
);

--delimiter // カスタムステートメント終了記号​
区切り文字 //

work_time_delay に挿入した後にトリガー trig_work を作成します。
各行ごとに
始める
 従業員を更新します。sal=sal-100 を設定します。empno=new.empno;
終わり
//

--new: イベント発生前または発生後に保存された新しいデータを参照します

ストアドプロシージャ

ストアド プロシージャとは何ですか?

ストアド プロシージャは、一連の複雑な操作をプロセスにカプセル化します。シェル、Python スクリプトなどに似ています。

ストアド プロシージャの利点:

  • 複雑な操作、シンプルな呼び出し
  • 高速

ストアド プロシージャの欠点:

  • 複雑なパッケージ
  • 柔軟性がない

ストアドプロシージャ構文を作成する

--ストアド プロシージャ構文を作成します。
プロシージャ名(パラメータ....)を作成します
始める
 手順本体;
 手順本体;
終わり
--パラメータ:
-- in|out|inout パラメータ名 タイプ (長さ)
-- in: 呼び出し元がプロシージャに値を渡すことを示します (渡される値はリテラルまたは変数です)
--out: プロシージャが呼び出し元に値を渡すことを示します(複数の値を返すことができます)(出力値は変数のみになります)
-- inout: 呼び出し元がプロシージャに値を渡し、プロシージャが呼び出し元に値を渡すことを示します (値は変数のみになります)

--変数を宣言します: 変数名、型 (長さ)、デフォルト、デフォルト値を宣言します。
-- 変数に値を割り当てます: set @variable name = value;
--ストレージコマンドを呼び出します: call name(@variable name);
--ストアド プロシージャを削除するコマンド: drop procedure name;
--作成されたストアド プロシージャを表示するコマンド: show create procedure name\G;

デモ

-- 簡単なストアド プロシージャを作成します。
区切り文字 //
プロシージャ名を作成します(in n int)
始める
 従業員制限 n から * を選択します。
終わり
//

-- ストアド プロシージャ セットを呼び出します @n=5;
//

名前(@n)を呼び出します。
プロシージャ名の作成()
始める
 n int のデフォルトを 6 と宣言します。
 従業員制限 n から * を選択します。
終わり
//

--ストアド プロシージャ call name() を呼び出します。
//

上記は、MySql ビュー、トリガー、およびストアド プロシージャの詳細に関する簡単な説明です。MySql ビュー、トリガー、およびストアド プロシージャの詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • ストアド プロシージャの復号化 (関数、プロシージャ、トリガー、ビューのクラッキング。SQLSERVER2000 でのみ使用可能)
  • SQLSERVER は暗号化されたストアド プロシージャ、ビュー、トリガーを復号化します (推奨)
  • MySQL トランザクション、ビュー、ストアド プロシージャ、トリガーに基づくアプリケーション分析
  • MySql ビュー トリガー ストアド プロシージャの詳細な説明
  • MySQLシリーズ5つのビュー、ストアド関数、ストアドプロシージャ、トリガー

<<:  webpackでvue環境を構築する際の異常なエラーを解決する

>>:  Mac ノードの削除と再インストールのケーススタディ

推薦する

Linux で crontab 出力リダイレクトが有効にならない問題の解決方法

質問LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...

js はランダムロールコールを実装します

この記事では、ランダムロールコールを実装するためのjsの具体的なコードを参考までに共有します。具体的...

MySQL でローカル ユーザーを作成し、データベース権限を付与する方法の例

序文MySQL をインストールすると、通常はスーパーユーザー root を作成します。多くの人がこの...

MySQL ストアド プロシージャの使用例の分析

この記事では、MySQL ストアド プロシージャの使用方法について説明します。ご参考までに、詳細は以...

React コンポーネント通信ルーティングパラメータ転送 (react-router-dom)

目次最近Reactを勉強していて、今は仕事でVueを使っています。学習の過程で、両者を比較して理解を...

Clickhouse Docker クラスターの展開と構成を例を使って説明します

目次前面に書かれた環境の展開Zookeeper クラスタの展開Clickhouse クラスターの展開...

MySQL 数値型オーバーフローの処理方法

さて、質問させてください。MySQL で列を int(0) に設定すると何が起こりますか?この問題を...

FirefoxでCookieとお気に入りをインポートおよびエクスポートする方法

Firefox は、多くの拡張機能とプラグインを備えた、よく使用されるブラウザです。IE に比べて多...

MySQL データベース内の数十億のデータを素早くクリーンアップする方法

今日、ディスクアラーム例外を受け取りました。50G ディスクが爆発しました。分析と解決のプロセスは次...

MySQL 5.7 に組み込まれているストレス テストの mysqlslap コマンドと構文の詳細な説明

序文mysqlslap は、MySQL サーバーへのクライアント負荷をシミュレートし、各ステージの時...

js におけるイベントバブリングとイベントキャプチャの簡単な分析

目次01-イベントバブリング1.1- イベントバブリングの概要1.2-イベントバブリングの利用(イベ...

CSS の読み込みによってブロックが発生しますか?

おそらく誰もが js の実行によって DOM ツリーの解析とレンダリングがブロックされることを知って...

MySQL の group by と having の詳細な説明

GROUP BY 構文を使用すると、指定されたデータ列の各メンバーに従ってクエリ結果をグループ化して...