mysqlのview(仮想テーブル)

2086 ワード

ビューは、1つ以上のテーブル/ビューから導出された仮想テーブルです.mysqlは更新可能なビューをサポートします.
1作成
    CREATE
    [OR REPLACE]  ##      ,      ,   create,      ,   alter
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = { user | CURRENT_USER }]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]

注意:a同じデータベースでは、ビューとテーブルが同じnamespaceを持つため、同じ名前を持つことはできません.b select文にサブクエリを含めることはできませんc select文にはシステム変数とユーザーカスタム変数dを含めることはできません.ストレージ・プロシージャ、関数、タイマなどがあれば、select文には彼らのパラメータe selectにprepared文を持つことができないパラメータfが作成されたときに関連付けられたテーブルとカラムが存在しなければなりません.その後、一部のテーブルまたはカラムが削除された場合、このビューを使用するとg作成時に一時テーブルに関与しないことが報告されます.「一時ビュー」hを作成してトリガを関連付けることもできません.だからinformation_schemaとperformance_schemaのテーブルはトリガに関連付けられません.i select文の別名は、一般的な別名の最大長(256文字)ではなく、列の最大長(64文字)を超えてはいけません.j作成時にselectにorder by文を追加できますが、order by文を含むビューから選択した列の場合、追加したorder by文は自動的に無視されます.例:
    CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;

2表示
    DESCRIBE    ;
      :
    SHOW TABLE STATUS LIKE '   ';
      :
    SHOW CREATE VIEW    ;
      :
    SELECT * FROM information_schema.views;

3修正
    create or replace  ( 1   )
      alter  :
    ALTER
        [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
        [DEFINER = { user | CURRENT_USER }]
        [SQL SECURITY { DEFINER | INVOKER }]
        VIEW view_name [(column_list)]
        AS select_statement
        [WITH [CASCADED | LOCAL] CHECK OPTION]

4更新
ビューは仮想テーブルで、データはありません.ビューにデータを追加、変更、削除することは、実際には元のテーブルで行われます.したがって、ビューはパフォーマンスにあまり影響しません.しかし、場合によっては、ビューは更新できない:aは集約関数b distinct c group by d having e unionまたはunion all fを含むサブクエリgはjoinなどの文(連表クエリ)hを含む他の更新不可能ビューiは、テーブル情報を含まないパラメータj ALGORITHM=TEMPTABLEがテーブルの行を複数回参照する
5削除
    DROP VIEW [IF EXISTS]
        view_name [, view_name] ...
        [RESTRICT | CASCADE]

転載先:https://www.cnblogs.com/noway-neway/p/5218791.html