回転:mysql create viewビューを作成する

3835 ワード

以下の文章は主にMySQLビューの説明で、MySQビューLの概要、MySQLビューの作成-create viewとMySQLビュー-alter viewの修正などの内容の具体的な説明が含まれています.以下は文章の具体的な内容の紹介です.
一.ビューの概要
MySQLビューは、クエリによって定義された仮想テーブルです.実際のテーブルと同様に、ビューには名前付きのカラムとローのデータが一連含まれています.ただし、ビューはデータベースに格納されたデータ値セットとして存在しません.行および列データは、定義ビューのクエリーによって参照されるテーブルから取得され、ビューを参照するときに動的に生成されます.
参照されるベース・テーブルでは、MySQLビューの役割はフィルタリングに似ています.ビューを定義するフィルタは、現在のデータベースまたは他のデータベースの1つ以上のテーブル、または他のビューから使用できます.ビューによるクエリーには制限はありません.データの変更にも制限はありません.
ビューは、データベースに格納されたクエリーのsql文です.主に2つの理由から使用されます.セキュリティの理由で、ビューは、社会保険基金表、名前、住所のみを表示し、社会保険番号や給与数を表示しないなどのデータを隠すことができます.もう1つの理由は、複雑なクエリーを理解しやすく使用できるためです.
MySQLビュー:グラフィックまたはドキュメントの表示方法.
ビューは、1つ以上のテーブルまたはビューからエクスポートされたテーブルであり、その構造およびデータは、テーブルに対するクエリーに基づいて構築されます.テーブルと同様に、ビューもいくつかの定義されたデータ列と複数のデータ行を含むが、本質的にはこれらのデータ列とデータ行は参照されたテーブルに由来する.
したがって、MySQLビューは実際に存在するベーステーブルではなく、ダミーテーブルであり、ビューに対応するデータは実際にビュー構造でデータベースに格納されるのではなく、ビューが参照するテーブルに格納されます.
ビューは定義されるとデータベースに格納され、それに対応するデータはテーブルのようにデータベースに格納されず、ビューで表示されるデータは基本テーブルに格納されたデータにすぎません.ビューに対する操作は、テーブルに対する操作と同様に、クエリー、変更(制限あり)、削除を行うことができます.
ビューで見たデータを修正すると、対応する基本テーブルのデータも変化するとともに、基本テーブルのデータが変化すれば、この変化を自動的にビューに反映することもできる.
ビューには、主に次のような利点があります.
POVセット
操作のシンプル化
カスタムデータ
分割データのマージ
セキュリティ
二.MySQLビューの作成——create view
  • 構文create[or replace][algorithm={undefined|merge|temptable}]view[db_name.]view_name [(column_list)] as select_statement [with [cascaded | local] check option]

  • この文でビューを作成できます.[or replace]が指定されている場合は、同じ名前のビューがすでに存在する場合、元のビューが上書きされます.select_statementは、テーブルまたは他のビューからクエリーできるクエリー文です.ビューはデータベースに属するため、データベースの名前を指定する必要があります.指定しない場合は、現在のデータベースに新しいビューを作成します.
    テーブルとデータベースは、データベース内の同じ名前空間を共有するため、データベースに同じ名前のテーブルとビューを含めることはできません.また、ビューのカラム名も繰り返すことはできません.
  • 使用例
  • eg.この例では、製品テーブル(product)と購入記録テーブル(purchase)を作成し、MySQLビューpurchase_を使用します.detailは購入の詳細を照会します.
    create table product  
    (  
    product_id int not null,  
    name varchar(50) not null,  
    price double not null  
    );  
    insert into product values(1, 'apple ', 5.5);  
    create table purchase  
    (  
    id int not null,  
    product_id int not null,  
    qty int not null default 0,  
    gen_time datetime not null  
    );  
    insert into purchase values(1, 1, 10, now());  
    create view purchase_detail as select product.
    name as name, product .price as price, purchase.qty as qty, 
    product .price * purchase.qty as total_value from product, 
    purchase where product.product_id = purchase.product_id;  

    作成に成功したら、「select*from purchase_」と入力します.detail;
    実行効果は次のとおりです.
    +-------+-------+-----+-------------+| name | price | qty | total_value |+-------+-------+-----+-------------+| apple | 5.5 | 10 | 55 |+-------+-------+-----+-------------+1 row in set (0.01 sec)
  • 注意事項
  • ビューの作成には、次の注意事項があります.
    (1)ビューを作成する文を実行するには、ユーザがビューを作成する権限を持つ必要があり、[or replace]を追加すると、ユーザがビューを削除する権限を持つ必要がある.
    (2)select文にfrom句のサブクエリを含めることはできません.
    (3)select文はシステムまたはユーザー変数を参照できない.
    (4)select文は前処理文パラメータを参照できない.
    (5)格納サブルーチン内で、サブルーチンパラメータやローカル変数を参照できないことを定義する.
    (6)定義で参照されるテーブルまたはビューが存在する必要があります.ただし、MySQLビューを作成すると、参照を定義するテーブルやビューを破棄できます.ビュー定義にこのような問題があるかどうかを確認するには、check table文を使用します.
    (7)定義ではtemporaryテーブルを参照できず、temporaryビューを作成できない.
    (8)ビュー定義で命名されたテーブルは既に存在しなければならない.
    (9)トリガプログラムをビューに関連付けることができない.
    (10)ビュー定義でorder byの使用は許可されているが、特定のビューから選択され、そのビューが独自のorder byを持つ文を使用している場合は無視される.
    三.MySQLビューの修正——alter view
  • 構文alter[algorithm={undefined|merge|temptable}]view view_name [(column_list)] as select_statement[with[cascaded|local]check optionこの文は、既存のビューの定義を変更するために使用されます.その構文はcreate viewと似ています.
  • 使用例
  • eg.前節で作成した視purchase_detailは修正し、qty列を削除します.文は次のとおりです.
    alter  view purchase_detail as select product.
    name as name, product .price as price, product .
    price * purchase.qty as total_value from product, 
    purchase where product.product_id = purchase.product_id;