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 thread_stack 接続スレッドの最適化

MySQL は、ネットワーク経由だけでなく、名前付きパイプ経由でも接続できます。MySQL への接続...

CSS による要素の中央揃えの原理の分析

CSS で要素の水平方向と垂直方向の中心を設定することは、非常に一般的な要件です。しかし、理論的には...

MySQL 8.0 の新機能の分析 - トランザクション データ ディクショナリとアトミック DDL

序文トランザクション データ ディクショナリとアトミック DDL は、MySQL 8.0 で導入され...

フォーム内の無効なフォームフィールドの値を送信する方法 サンプルコード

フォーム内のフォーム フィールドが無効に設定されている場合、フォーム フィールドの値は送信されません...

6秒でMySQLに100万件のレコードを挿入する方法を教えます

1. アイデアMySQL に 1,000,000 件のレコードを挿入するのにたった 6 秒しかかかり...

Spring jdbc のデータベース操作オブジェクト モデルの詳細な例

Spring jdbc のデータベース操作オブジェクト モデルの詳細な例Spring Jdbc デー...

JavaScript キャンバスはマウスの動きに合わせてボールを動かすことを実装します

この記事の例では、マウスに従ってボールを動かすjsの具体的なコードを参考までに共有しています。具体的...

古典的なJavaScriptの再帰ケースの質問の詳細な分析

目次再帰とは何ですか?また、どのように機能しますか? 1. 合計(1)デジタル加算(2)配列の和2....

MySQLクエリ速度を最適化する方法

前の章では、高性能な MySQL に不可欠な、最適化されたデータ型の選択方法とインデックスの効率的な...

Dockerでmongodbデータベースを使用するための実装コード

mongoイメージを取得する sudo docker pull mongo mongodbサービスを...

透明な入力ボックスにアイコンを追加する HTML コード

最近、弁護士推薦のウェブサイトを作成していたのですが、検索ボックスに問題がありました。検索ボックス内...

HTML 順序なしリスト 箇条書き 画像を使用した CSS の記述

少なくとも 5 冊のベストセラー書籍の順序なしリストを含む HTML ページを作成します。各書籍の前...

Linux 負荷分散 LVS の詳細な理解

目次1. LVS 負荷分散2. 負荷分散LVSの基本紹介3. LVSアーキテクチャ3.1 ロードバラ...

MySQL MHA 操作ステータス監視の概要

目次1. プロジェクトの説明1.1 背景1.2 実装設計1.2.1 従来の方法1.2.2 最適化され...

JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明

JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明最近、...