MySQL ビューの原理と使用法の詳細な分析

MySQL ビューの原理と使用法の詳細な分析

序文:

MySQL では、ビューはおそらく最も一般的に使用されるデータベース オブジェクトの 1 つです。では、ビューとテーブルの違いはご存知ですか?ビューを作成および使用するときに注意すべき点をご存知ですか?ビューについて表面的な理解しかしていない人も多いかもしれません。ビューについて詳しく知りたい場合は、こちらの記事をお読みください。この記事では、ビューの概念、作成、使用方法を詳しく紹介します。

1. 定義と簡単な紹介を見る

ビューは、SQL ステートメントの結果セットに基づいて視覚化されたテーブルです。つまり、ビューは、テーブルのレコードのすべてまたは一部を含むことができる仮想テーブルであり、1 つ以上のテーブルから作成することもできます。ビューを使用すると、データ テーブル内のすべてのデータを表示する必要はなく、必要なデータのみを取得できます。ビューを作成すると、実際にはデータベースで SELECT ステートメントが実行されます。SELECT ステートメントには、ユーザーにデータを表示するためのフィールド名、関数、演算子が含まれています。

ビュー内のデータは元のテーブルのデータに依存しているため、元のテーブルのデータが変更されると、表示されるビューのデータも変更されます。たとえば、データ テーブルにデータを挿入した場合、ビューを表示すると、同じデータがビューにも挿入されていることがわかります。ビューは実際には、事前定義されたクエリの形式のテーブルで構成されます。

2. ビューの作成と使用

ビューの標準構文を作成します。

作成する
 [または置換]
 [アルゴリズム = {未定義 | マージ | テンプテーブル}]
 [定義者 = ユーザー]
 [SQL セキュリティ { 定義者 | 呼び出し者 }]
 VIEW ビュー名 [(列リスト)]
 AS 選択ステートメント
 [[カスケード | ローカル] チェック オプションあり]

文法解釈:

1) OR REPLACE: 既存のビューを置き換えることを意味します。ビューが存在しない場合は、CREATE OR REPLACE VIEW は CREATE VIEW と同じです。

2) ALGORITHM: ビュー選択アルゴリズムを示します。デフォルトのアルゴリズムは UNDEFINED (未定義) です。MySQL は、merge merge; temptable 一時テーブルを使用するアルゴリズムを自動的に選択します。通常、このパラメータは明示的に指定されません。

3) DEFINER: ビューの作成者または定義者が誰であるかを示します。このオプションが指定されていない場合は、ビューを作成したユーザーが定義者になります。

4) SQL セキュリティ: SQL セキュリティ、デフォルトは DEFINER

5) select_statement: 基本テーブルまたは他のビューから選択できる選択ステートメントを表します。

6) CHECK OPTION 付き: ビューが更新時に制約を保証することを示します。デフォルトは CASCADED です。

実際、毎日ビューを作成する場合、各パラメータを指定する必要はありません。一般的には、次のようにビューを作成することをお勧めします。

ビューを作成 <ビュー名> [(列リスト)]
チェック オプション付きの SELECT ステートメントとして;

具体的な作成例をいくつか挙げます。

# 単一テーブルビュー mysql> create view v_F_players(number, name, gender, phone number)
 -> として
 -> PLAYERSからPLAYERNO、NAME、SEX、PHONENOを選択
 -> SEX='F'の場合
 -> チェックオプション付き;
クエリは正常、影響を受けた行は 0 行 (0.00 秒)
mysql> desc v_F_players;
+--------+----------+------+------+--------+-------+
| フィールド | タイプ | Null | キー | デフォルト | 追加 |
+--------+----------+------+------+--------+-------+
| 数値 | int(11) | NO | | NULL | |
| 名前 | char(15) | NO | | NULL | |
| 性別 | char(1) | NO | | NULL | |
| 電話| char(13) | はい | | NULL | |
+--------+----------+------+------+--------+-------+
セット内の 4 行 (0.00 秒)
mysql> v_F_players から * を選択します。
+--------+-----------+---------+------------+
| ID| 名前| 性別| 電話番号|
+--------+-----------+---------+------------+
| 8 | ニューカッスル | F | 070-458458 |
| 27 | コリンズ | F | 079-234857 |
| 28 | コリンズ | F | 010-659599 |
| 104 | ムーアマン | F | 079-987571 |
| 112 | ベイリー | F | 010-548745 |
+--------+-----------+---------+------------+
セット内の 5 行 (0.02 秒)
# マルチテーブルビュー mysql> create view v_match
 -> として 
 -> a.PLAYERNO、a.NAME、MATCHNO、WON、LOST、c.TEAMNO、c.DIVISION を選択
 -> から 
 -> プレイヤー a、試合 b、チーム c
 -> ここで、a.PLAYERNO=b.PLAYERNO かつ b.TEAMNO=c.TEAMNO です。
クエリは正常、影響を受けた行は 0 行 (0.03 秒)
mysql> v_match から * を選択します。
+----------+-----------+----------+---------+---------+----------+----------+
| プレーヤー番号 | 名前 | 試合番号 | 勝利 | 敗北 | チーム番号 | 部門 |
+----------+-----------+----------+---------+---------+----------+----------+
| 6 | パーメンター | 1 | 3 | 1 | 1 | 最初 |
| 44 | ベイカー | 4 | 3 | 2 | 1 | 1位 |
| 83 | 希望 | 5 | 0 | 3 | 1 | 最初 |
| 112 | ベイリー | 12 | 1 | 3 | 2 | 2位 |
| 8 | ニューカッスル | 13 | 0 | 3 | 2 | 2位 |
+----------+-----------+----------+---------+---------+----------+----------+
セットに5行(0.04秒)

ビューは、基本テーブルと同じ方法で使用されます。たとえば、select * from view_name または select * from view_name where ... を使用できます。ビューでは、不要なデータをフィルター処理し、関連する列名をカスタム列名に置き換えることができます。アクセス インターフェイスとしてのビューでは、ベース テーブルのテーブル構造やテーブル名がどれほど複雑であるかは関係ありません。通常、ビューはクエリにのみ使用されます。ビュー自体にはデータがありません。そのため、ビューに対する DML 操作は最終的にベース テーブルに反映されます。ビューが削除、更新、または挿入されると、元のテーブルも更新されます。ビューが削除されても、元のテーブルは変更されません。ビューを切り捨てることはできません。ただし、一般的にはビューの更新は避けるべきであり、DML 操作によって元のテーブルを直接更新できます。

3. ビューのベストプラクティス

以下は、ビューの利点の簡単な紹介です。これらの利点を通じて、ビューの適用可能なシナリオを簡単にまとめることができます。

1) シンプル: ビューを使用するユーザーは、対応するテーブルの構造、結合条件、フィルター条件を気にする必要がありません。ユーザーにとって、結果セットは複合条件によって既にフィルター処理されています。

2) セキュリティ: ビューを使用するユーザーは、クエリを許可された結果セットにのみアクセスできます。テーブルの権限管理は特定の行または列に制限することはできませんが、ビューを使用すると簡単に実現できます。

3) データの独立性: ビューの構造が決定されると、テーブル構造の変更がユーザーに与える影響を遮断できます。ソース テーブルに列を追加しても、ビューには影響しません。ソース テーブルで列名が変更された場合は、訪問者に影響を与えることなくビューを変更することで解決できます。

つまり、ほとんどの場合、ビューはデータのセキュリティを確保し、クエリの効率を向上させるために使用されます。たとえば、複数のテーブルの関連付け結果を頻繁に使用する場合は、ビューを使用してそれらを処理できます。または、サードパーティのプログラムがビジネス ライブラリを呼び出す必要がある場合は、サードパーティのプログラムがクエリを実行するためにオンデマンドでビューを作成できます。

ビューを日常的に使用および保守する過程で、参考までに次のプラクティスをまとめました。

  • 簡単に識別できるように、ビュー名は v_ や view_ などの統一されたプレフィックスで始めることをお勧めします。
  • SQL SECURITY はデフォルトの DEFINER を使用します。つまり、ビュー定義者はビューを照会する権限を持ちます。
  • ビュー定義者は関連するプログラム ユーザーを提案します。
  • データの冗長性を避けるため、ビューにあまり多くのテーブルを関連付けないでください。
  • ビューをクエリするときは、条件を指定する必要があります。毎回すべてのデータをクエリすることはお勧めしません。
  • ビューを移行するときは、新しい環境にビューの定義者ユーザーが存在することを確認してください。
  • ビュー内のデータを直接更新しないでください。ビューはクエリにのみ使用されます。

要約:

MySQL ではビューがよく使用されます。この記事では、ビューの概念と作成方法を紹介します。また、ビューの使用シナリオと利点についても説明します。ビューとテーブルを使用するときには、その違いを感じないかもしれませんが、実際には多くのトリックが関係しています。ビューはクエリにのみ使用することをお勧めします。仕様に従えば、ビューは非常に便利です。この記事がお役に立てば幸いです。

上記はMySQLビューの詳細分析です。MySQLビューの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQLにおけるビューの作成(CREATE VIEW)と使用制限の詳しい説明
  • MySQLでビューを作成する方法
  • MySQLのビューとインデックスの使い方と違いの詳細な説明
  • MySql ビュー、トリガー、ストアド プロシージャに関する簡単な説明
  • MySql ビュー トリガー ストアド プロシージャの詳細な説明
  • MySQLビューの原理と使用法の詳細な説明
  • MySQL ビュー管理ビューの例の詳細説明 [追加、削除、変更、クエリ操作]
  • MySQLで更新可能なビューを作成する方法の詳細な説明
  • MySQL における単一テーブルと複数テーブル、およびビューと一時テーブルに対する Update と Select の違い
  • mysql 3つのテーブルを接続してビューを作成する
  • MySQL ビューの原則分析

<<:  Ubuntu での CUDA と CUDNN のインストールとアンインストールの実装

>>:  Vue.js $refs 使用例の説明

推薦する

Vueソースコード解析における仮想DOMの詳しい説明

なぜ仮想DOMが必要なのでしょうか?仮想 DOM はブラウザのパフォーマンス問題を解決するために設計...

Docker で Tomcat を使用して Web アプリケーションを迅速にデプロイする方法の例

Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...

mysql5.7.17 zip の解凍とインストールの詳細な手順

1. ダウンロードアドレスhttps://dev.mysql.com/downloads/mysql...

MySQL コマンドラインでよく使われる 18 個のコマンド

日常的なウェブサイトの保守と管理では、多くの SQL ステートメントが使用されます。熟練して使用する...

MySQL MHA の高可用性構成とフェイルオーバーの詳細な導入手順

目次1. MHAの紹介1. MHAとは何ですか? 2. MHAの構成3. MHAの特徴2. MySQ...

MySQLで行または列をソートする方法

方法:説明: どちらも達成できません:方法1: sp_product から sp.productid...

Mysql は、デッドロック問題を解決するために kill コマンドを使用します (実行中の特定の SQL ステートメントを強制終了します)。

MySQL を使用して特定のステートメントを実行すると、データ量が多いためにデッドロックが発生し、...

Vueモバイル端末は左スライド編集と削除の全プロセスを実現します

序文プロジェクトのニーズに応じて、Vue-touch を使用して、vue モバイル端末の左スワイプ編...

フロントエンドJavaScriptの動作原理

目次1. JavaScript エンジンとは何ですか? 2. V8エンジン3. ランタイム環境4. ...

人気の宇宙飛行士ウォッチフェイスをJavaScriptで実装するための完全なコード

1. エフェクト表示JavaScript で書かれた宇宙飛行士のウォッチフェイス。 http://x...

Vue はファジークエリを実装します - MySQL データベースデータ

目次1. 需要2. 実装3. 結果1. 需要入力ボックスにデータを入力し、入力結果に基づいてデータベ...

Node.jsはブレークポイント再開を実装する

目次ソリューション分析スライス履歴書のダウンロード具体的な解決プロセス論理的分析フロントエンドサーバ...

Centos 6.5 での mysql-community-server. 5.7.18-1.el6 のインストール

次のコマンドを使用して、MySQL Serverがインストールされているかどうかを確認します。 [r...

ウェブサイト構築経験概要

<br />注目を集めるウェブサイトを作成するには、どのような原則に従うべきでしょうか?...

Linux jdk のインストールと環境変数の設定チュートリアル (jdk-8u144-linux-x64.tar.gz)

最初にsudo suコマンドを使用して root アカウントに切り替えることをお勧めします。そうしな...