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 サイトの他の関連記事を参照してください。