ホームページ  >  記事  >  データベース  >  mysql ビューを 1 つの記事で詳しく説明

mysql ビューを 1 つの記事で詳しく説明

王林
王林転載
2020-01-22 19:56:582084ブラウズ

mysql ビューを 1 つの記事で詳しく説明

mysql ビューの概念

ビュー自体は仮想テーブルであり、データは格納されません。 SQL ステートメントを使用してビューにアクセスする場合、取得されるデータは MySQL によって他のテーブルから生成され、ビューとテーブルは同じ名前空間内にあります。クエリ データの表示は比較的安全です。一部のデータと構造を非表示にし、ユーザーが自分の権限内でのみデータを表示できるようにすることで、複雑なクエリを理解しやすくし、使用しやすくします。

ビューの使用方法

ユーザーと注文の管理に基づいたデモ ビューの基本的な使用方法を次に示します。 (オンライン学習ビデオ チュートリアルの共有: mysql ビデオ チュートリアル)

基本的なテーブル構造

CREATE TABLE v01_user (    
id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  user_name VARCHAR(20) DEFAULT NULL COMMENT '用户名',
    phone VARCHAR(20) DEFAULT NULL COMMENT '手机号',
    pass_word VARCHAR(64) DEFAULT NULL COMMENT '密码',
    card_id VARCHAR(18) DEFAULT NULL COMMENT '身份证ID',
    pay_card VARCHAR(25) DEFAULT NULL COMMENT '卡号',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '用户表';
CREATE TABLE v02_order (    
id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    user_id INT(11) NOT NULL COMMENT '用户ID',
    order_no VARCHAR(32) DEFAULT NULL COMMENT '订单编号',
    good_name VARCHAR(60) DEFAULT NULL COMMENT '商品名称',
    good_id INT(11) DEFAULT NULL COMMENT '商品ID',    
    num INT(11) DEFAULT NULL COMMENT '购买数量',
    total_price DECIMAL(10,2) DEFAULT NULL COMMENT '总价格',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '订单表';

基本的な構文

CREATE OR REPLACE VIEW view_name 
AS select_statement

注: テーブルとビューはデータベース内で同じ名前空間を共有するため、データベースに同じ名前のテーブルとビューを含めることはできません。

ユーザーオーダービュー

CREATE OR REPLACE VIEW user_order_view AS SELECT
    t1.id,t1.user_name,t2.order_no,t2.good_id,
    t2.good_name,t2.num,t2.total_price
FROM v01_user t1
LEFT JOIN v02_order t2 ON t2.user_id = t1.id;

ビューコール

基本的にはMySQLのテーブルクエリと同じで、様々なクエリ条件が利用可能です。

SELECT * FROM user_order_view WHERE user_name='Cicada';
查看视图
SHOW CREATE VIEW user_order_view ;
修改视图
ALTER VIEW view_name AS select_statement ;
删除视图
DROP VIEW [IF EXISTS] view_name ;

ビューの更新

指定された条件が許せば、ビュー上のデータを更新、削除、さらには書き込みを行って、ビューに関連する情報を更新することができます。テーブル。

UPDATE user_order_view SET user_name='smile' WHERE id='1';

ここでは、ビューで更新操作を実行することにより、v01_user テーブルのデータが更新されます。集計関数やグループ化などの特殊な操作を使用してビューが定義されている場合、ビューを更新することはできません。 MySQL はビューでのトリガーの作成をサポートしていません。

ビューの実装

1. 一時テーブルのアルゴリズム

サーバーはビュークエリ SQL のデータを一時テーブルに保存します。一時テーブルは次のとおりです: ビュー フィールドの構造は一貫している必要があります。これは SQL クエリの最適化で最もタブーな操作です。データ量がわずかに大きいと、パフォーマンスに重大な影響を与えます。ビューが元のテーブルと 1 対 1 のマッピング関係を作成できない場合、一時テーブルが生成されますが、これはビューがそれほど単純ではない、あるいは非常に複雑な関数でさえないことを示しています。

2. マージ アルゴリズム

サーバーはビューで使用されるテーブルに基づいてクエリを実行し、最終的にクエリ構造をマージしてクライアントに返します。

3. 差分方法

以下のクエリ文を実行して、実行性能パラメータを分析します。

EXPLAIN SELECT * FROM user_order_view ;

クエリ結果の select_type フィールドを確認してください。これが DERIVED であれば、一時テーブルが使用されていることを意味します。ここで、SQL 実行解析の構文については、後の最適化セクションで詳しく説明します。

注意事項

1. パフォーマンスの問題

MySQL はビューでのインデックスの作成をサポートしていません。ビューを使用すると、クエリのパフォーマンスが大幅に低下する可能性があります。問題があるため、使用する場合は慎重に、多角的に検討し、テストすることをお勧めします。

2. 特別な使用法

ビューベースのクエリはテーブル構造の一部を変更できますが、フィールドがビューで使用されていない限り、ビューのクエリには影響しません。

おすすめの関連記事とチュートリアル: mysql チュートリアル

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

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。