美文网首页
视图的学习

视图的学习

作者: 简单Liml | 来源:发表于2018-12-20 15:09 被阅读14次

    简单的说,视图是一张虚拟表,可以加快查询速度。
    创建视图:CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;
    修改视图:CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...];
    视图条件限制:[WITH CHECK OPTION]

    视图的操作方式用实例来说明。
    新建表user_first,user_product:


    user_first.png
    user_product.png

    创建视图user_info,user_simple_info:


    user_simple_info.png
    user_info.png
    user_simple_info 视图是user_first的子集,user_info是通过user_id关联的视图。

    1.视图的SELECT的使用:
    与表的查询方式一致,如:

    SELECT a.user_a,a.user_b from user_info a
    
    image.png

    2.视图的INSERT的使用:
    (1)视图为表的子集:

    INSERT into user_simple_info(user_n,user_a) VALUES("插入",108)
    

    视图数据为:


    image.png

    表数据也同时跟新:


    image.png
    (2)视图为多表关联:
    INSERT into user_info(user_n,user_a,user_b) VALUES("插入",108,"化学")
    

    插入时报错:[Err] 1471 - The target table user_info of the INSERT is not insertable-into
    无法插入!
    3.视图的UPDATE的使用:
    子集视图不再演示,可以更新。
    多表关联视图:
    更新一张表的数据:

    UPDATE user_info a SET a.user_a = 999 WHERE a.user_b = '语文'
    
    image.png

    发现视图更新了2条,原因是更新语文这个数据时,user_a来自于同一张表中的同一个数据,数据源改变,导致修改了两条。
    更新两张表的数据:

    UPDATE user_info a SET a.user_a = 999,a.user_b="haha"
    
    image.png

    发现无法修改!
    4.视图的DELETE的使用:
    (1)视图为表的子集:

    DELETE from user_simple_info WHERE user_n = '33'
    

    删除后视图数据:


    user_simple_info .png

    删除后表数据:


    user_first.png
    可见视图数据删除可以影响表,这前提是视图字段是表的子集。
    (2)视图为多表关联:
    DELETE from user_info WHERE user_n = '22'
    
    image.png

    无法删除!

    上面是简单的对视图进行增删改查,多表关联后的视图,一般操作无法完成。对表的子集的视图可以增删改查。如果对视图操作成功,会影响对应表。一般要修改数据的话,可以直接操作表,从而来改变视图数据。

    相关文章

      网友评论

          本文标题:视图的学习

          本文链接:https://www.haomeiwen.com/subject/wjyykqtx.html