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

推薦する

MySQL スロークエリ: スロークエリを有効にする

1. スロークエリの用途は何ですか? long_query_time を超えて実行されるすべての S...

MySQL でのインデックスの追加と削除に関連する操作

目次1. インデックスの役割2. インデックスの作成と削除(1)ALTER TABLE文を使用して、...

位置のいくつかの巧妙な応用の詳細な説明:sticky スティッキーポジショニング

背景: position:sticky はスティッキー配置とも呼ばれます。スティッキー配置の要素は、...

MySQLの自動増分IDについて知っておくべきこと

はじめに: MySQL を使用してテーブルを作成する場合、通常は自動インクリメント フィールド (A...

JavaScript が重複したネットワークリクエストを防ぐ方法の例

序文開発中は、インターフェース要求の繰り返しによってさまざまな問題が発生することがよくあります。ネッ...

MySQL 5.7.18 でパスワードを変更する方法

MySQL 5.7.18 でパスワードを変更する方法: 1. まずMySQLサーバーをシャットダウン...

Nginx の書き換え正規マッチング書き換え方法の例

Nginx の書き換え機能は、リダイレクトと同様に、URL アドレスを一時的または永続的に新しい場所...

CSS モジュールソリューション

CSS のモジュール ソリューションは、JS のモジュール ソリューションと同じくらい多く存在すると...

JavaScript WeakMap の使い方の詳しい説明

WeakMap オブジェクトは、キーが弱参照であるキー/値のペアのコレクションです。キーはオブジェク...

携帯電話番号が合法かどうかを判断するWeChatアプレットのサンプルコード

目次シナリオ効果コード要約するシナリオ登録ページに携帯電話番号を入力し、登録インターフェイスを要求す...

JavaScript は、マウスがテーブル行を通過するときに色の識別を実装します。

この記事では、マウスがテーブルの行を通過するときにJavaScriptを使用して色ラベルを表示する方...

antd+reactプロジェクトをviteに移行するためのソリューションの詳細な説明

Antd+react+webpackは、多くの場合、Reactテクノロジースタックに基づくフロントエ...

カーソル ループを使用して、MySQL ストアド プロシージャで一時テーブルを読み取る

カーソルカーソルは、結果セット内のデータを表示または処理するために使用される方法です。カーソルを使用...

React イベントバインディングの詳細

目次クラスコンポーネントイベントバインディング関数コンポーネントイベントバインディング要約するRea...

Vueは透かし効果を簡単に実現します

序文: Vueプロジェクトで透かし効果を使用するには、コンテナを指定できます効果画像: 1. コンテ...