mysqlビューとは何ですか

藏色散人
藏色散人オリジナル
2023-04-04 10:39:044182ブラウズ

MySQL ビューは、その内容がクエリによって定義される仮想テーブルです。ビューには、一連の名前付きの列と行のデータが含まれており、行と列のデータは、ビューをカスタマイズするクエリによって参照されるテーブルから取得されます。動的に生成される参照ビューでは、簡単に言えば、ビューは選択結果で構成されるテーブルです。

mysqlビューとは何ですか

このチュートリアルの動作環境: Windows 10 システム、MySQL5 .7 バージョン、Dell G3 コンピューター。

MySQL ビューとは何ですか?ビューの意味と使用法の分析

ビューとは

    ビューは、その内容がクエリによって定義される仮想テーブルです。
  • 実際のテーブルと同様、ビューには一連の名前付きの列データと行データが含まれます。
  • 行と列のデータは、カスタム ビューのクエリによって参照されるテーブルから取得され、ビューが参照されるときに動的に生成されます。
  • 簡単に言うと、ビューは選択した結果で構成されるテーブルです。

例としてクエリ テーブル コマンドを使用します。

SELECT * FROM 表名 ;
これが分かれば、テーブルが表示され、表示されたものが と呼ばれます。景色。

#ビューの特性

ビューは、いくつかの基本テーブル、仮想テーブル、およびクエリ ステートメントの実行への参照です。の結果。
  • 特定のデータは保存されません (基本的なテーブル データが変更されると、それに応じてビューも変更されます)。
  • 基本テーブルと同様に、追加、削除、変更、およびクエリ操作を実行できます (追加、削除、変更操作には条件制限があります)。

#ビューの役割セキュリティの向上: ビューを作成し、ビューによって操作されるデータを定義します。次に、ユーザー権限をビューにバインドします。このメソッドは機能を使用します。つまり、grant ステートメントでビューにアクセス許可を付与できます。

  • 例: 管理者がクエリしたデータには各ユーザーのパスワードが含まれており、管理者はユーザーにパスワードを見られたくない場合、ユーザーのみが閲覧できるようにビューを作成できます。管理者。クエリのパフォーマンスを向上させるために、管理者にデータ
    を見てもらいたいと考えています。
  • データの独立性が向上します。

ビューの作成次のような学生テーブルがあるとします。


要件: ビューを作成し、20 歳以上の学生にクエリを実行しますmysqlビューとは何ですか

CREATE VIEW stu_age_view 
AS(SELECT * FROM stu WHERE age>20);
ビューをクリックして開くと、作成したばかりのテーブルが表示されます

テーブルの内容は次のとおりです。要件のコンテンツ

mysqlビューとは何ですか ビューに基づいて、21 歳以上の ls という名前の人々をクエリするなど、必要なコンテンツのクエリを続行できます。ビューベースのクエリにより、効率が向上し、運用コストが削減されます。
mysqlビューとは何ですか

ビューの変更
CREATE OR REPLACE VIEW 视图名  AS(SELECT  [...]  FROM [...] );
例: 上で作成したビュー「stu_age_view」は 20 歳以上の学生向けですが、現在は次のように変更されています。全生徒 。
CREATE OR REPLACE VIEW stu_age_view 
AS(SELECT * FROM stu );

#ビューの削除

#
DROP VIEW 视图名称;
#ビューのメカニズム

置換式ビューを操作する場合、ビュー名はビュー定義に直接置き換えられます

具体化式


mysq |ビューの実行結果が最初に取得され、その結果は中間結果を形成してメモリに一時的に保存されます。

外側の選択ステートメントは、これらの中間結果 (一時テーブル) を呼び出します。

#置換と具体性の違い


置換式

: 置換方法は、ビュー式を置換した後、sq|全体として処理します。

仕様
    : 仕様方法では、最初にビューの結果を処理し、次に外部クエリ要件を処理します。
  • 理解を深めるために例を挙げてみましょう
  • 上記のビューを作成する際、20 歳以上の学生を必要とするビューを作成しました

次に、このビューを確認してみましょう

SELECT * FROM stu_age_view ;
これが replacement
の場合、その内部動作ロジックは
です

SELECT * FROM (SELECT *FROM stu WHERE age >20) tihuan;

直接将stu_age_view的代码替换出来;
如果是具化式,那么它就是先把符合条件的查询出来放在一张表(内存)里,然后直接查询这张表。

(SELECT * FROM stu WHERE age >20) AS TEMPTABLE;SELECT * FROM TEMPTABLE;

上面这两条语句无法运行,只是为了方便举例提出

那么我们再说回创建视图

ALGORITHM参数(三个)

merge TEMPTABLE UNDEFINED
处理方式替换式,可以进行更新真实表中的数据 具化式,由于数据存储在临时表中,所以不可以进行更新操作 没有定义ALGORITHM参数,mysq更倾向于选择替换方式,因为它更加有效。

用参数创建视图

CREATE ALGORITHM = MERGE VIEW stu_age_viewAS(SELECT * FROM stu WHERE age >20);

还有两个需要注意的东西是

  • WITH CHECK OPTION

更新数据时不能插入或更新不符合视图限制条件的记录。
比如上面我们查询了一张年龄大于20的视图,那么在这张视图里面更新数据时如果年龄小于20则会报错。

  • LOCAL和CASCADED

为可选参数,决定了检查测试的范围,默认值为CASCADED

视图不可更新部分

  • 聚合函数
  • DISTINCT关键字
  • GROUP BY子句
  • HAVING子句
  • UNION运算符
  • FROM子句中包含多个表
  • SELECT语句中引用了不可更新视图
  • 只要视图当中的数据不是来自于基表,就不能够直接修改

【相关推荐:mysql视频教程

以上がmysqlビューとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。