视图的学习

简单的说,视图是一张虚拟表,可以加快查询速度。
创建视图: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

无法删除!

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,453评论 0 9
  • 唉。 容我先叹口气。 因为我的老师太厉害了。 他声音很温柔,然后会在解读某一张牌的时候,轻描淡写的说出一些我不愿意...
    瀚文ILoveU阅读 5,543评论 0 0
  • 他骑着自行车 他开着宝马 他一直小心地骑在路的边上 急于抢道的他还是让他来不及避让 他的宝马和他的自行车有了轻微地...
    王小永_6be2阅读 582评论 2 13
  • 1、本文主要内容 TreeMap及Set介绍 TreeMap源码解析 Set源码解析 2、TreeMap及Set介...
    某昆阅读 309评论 0 0
  • 我写的第一篇简书也是关于他,味道识人,但是现在我站在路口上,不知道是前进还是后退。我应该是喜欢他,真心喜欢。要不...
    约言2333阅读 130评论 0 0