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 ノードの削除と再インストールのケーススタディ

推薦する

アイデアを war パッケージにパッケージ化し、tomcat にデプロイしてアクセス パスの問題 (図とテキスト)

Web プロジェクトを war にパッケージ化するアイデアにとって最も重要なことは、アトリフィカを...

ウェブページの背景色を制御する CSS コード

誰もが自分の Web ページの背景にふさわしい画像を見つけることに悩むことが多いと思います。これは事...

MySQLファイルストレージの詳細な説明

ファイルシステムとは何かInnoDB や MyIASM などのストレージ エンジンはテーブルをディス...

モバイル Web WAP には Bootstrap と jQuery Mobile のどちらを使用すべきか

問題を解決するBootstrap は、次の問題を解決する CSS フレームワークです。デバイス間での...

CSSスクロールバーのスタイルをカスタマイズする方法の詳細な説明

この記事では、CSS スクロールバー セレクターを紹介し、Webkit ブラウザーと IE ブラウザ...

IDEA2020.1.2 Webプロジェクトの作成とTomcatの設定に関する詳細なチュートリアル

この記事は、IDEA で Web プロジェクトを作成し、Tomcat を構成する方法についての統合記...

スマートCSSを使用して、ユーザーのスクロール位置に基づいてスタイルを適用します。

現在のスクロール オフセットを html 要素の属性に追加することで、現在のスクロール位置に基づいて...

CSSはメッセージパネルをスライドするWebコンポーネント機能を実装します

みなさんこんにちは。私と同じように混乱している方はいらっしゃいませんか。CSS は簡単に始められます...

Linux 7.6 バイナリに MySQL 8.0.27 をインストールする詳細な手順

目次1. 環境整備1.1 オペレーティング システムのバージョン1.2 ディスク容量1.3 ファイア...

Vueのインストール方法の紹介

目次1. グローバルに登録されたコンポーネント2. グローバルカスタム指示vue 、新しいプラグイン...

HTML の著作権記号のフォント選択問題 (著作権記号をより美しくする方法)

1. 問題を発見する&copy; は HTML の著作権記号ですが、間違ったフォントを選択す...

Node8 における AsyncHooks 非同期ライフサイクル

Async Hooks は Node8 の新機能です。NodeJs の非同期リソースのライフサイクル...

MySQL でテーブルデータをクリアする 2 つの方法とその違い

MySQL でデータを削除するには 2 つの方法があります。切り詰めは大まかな伐採の一種である削除は...

Linux に Python クローラー スクリプトを展開し、スケジュールされたタスクを設定する方法

昨年、プロジェクトの必要性により、Python でクローラーを作成しました。クロールされたデータは、...

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

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