SQL 数据库里是否可以通过视图更改表中的数据?

书上说"视图被看成是虚拟表,它并不代表任何的物理数据,只是用来查看数据的视窗而已。数据库中只储存视图的定义,并不是以一组数据的形式储存在数据库中"。“无论在什么时候修改试... 书上说"视图被看成是虚拟表,它并不代表任何的物理数据,只是用来查看数据的视窗而已。数据库中只储存视图的定义,并不是以一组数据的形式储存在数据库中"。“无论在什么时候修改试图的数据,实际上都是在修改对应的数据表中的数据”。这两句话不矛盾么?我查过百度了,有些说可以改,有些说不可以改,那到底行不行呢? 小弟刚开始学习SQL,请大虾为我解答一下,尽量详细点 ~ 展开
 我来答
双鹊会
2011-09-14 · TA获得超过237个赞
知道小有建树答主
回答量:177
采纳率:50%
帮助的人:97.4万
展开全部
有的可以,有的不可以,视图与表是两个概念,UPDATE视图,实际就是修改了视图对应的表中的数据,自己可以测试一下!但如果视图中没有表(因为有的视图并不一定有表),则不能更新!比如:
create view ass (a, b, c) AS select 0, 's', 0 就不依赖表,当然不能更新,如果在生成视图的SQL语句中有UNION关键字时,也不能更新,其它很多视图是可以更新和修改的,修改的列是对应的表中的列。
wangzhiqing999
推荐于2017-04-17 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3318万
展开全部
对于没有复杂处理的 单表 视图, 是可以 UPDATE 的。
例如这样的视图
CREATE VIEW v_1 AS SELECT * FROM 某表

但是 假如你的视图, 是 单表的, 带统计的, 那恐怕是不能 直接 UPDATE 了。
例如这样的视图
CREATE VIEW v_2 AS SELECT id, COUNT(*) as num FROM 某表

--- 前面是单表的, 下面说多表的 ---

对于2张表的,假如你的查询里面, 这2张表是 一对一的关系。 且视图里面, 包含了主键,那么是可以 UPDATE 的。
例如下面这样的 视图
CREATE VIEW temp_view AS
SELECT
t1.name AS t1Name,
t1.age AS t1Age,
t2.name AS t2Name,
t2.age AS t2Age
FROM
t1, t2
WHERE
t1.name = t2.name

然后直接更新视图。
UPDATE temp_view SET t1Age = t2Age;

完整的例子, 可参考
http://hi.baidu.com/wangzhiqing999/blog/item/767be28f634ddb00c8fc7aba.html

但是假如你的视图里面的 2个表, 不是一一对应的。
或者是带了 SUM / COUNT 等统计函数的, 那么可能是没办法更新了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
今天一定早睡晚起
2019-12-06 · TA获得超过9.5万个赞
知道小有建树答主
回答量:874
采纳率:90%
帮助的人:33.1万
展开全部
对于没有复杂处理的 单表 视图, 是可以 UPDATE 的。
例如这样的视图
CREATE VIEW v_1 AS SELECT * FROM 某表
但是 假如你的视图, 是 单表的, 带统计的, 那恐怕是不能 直接 UPDATE 了。
例如这样的视图
CREATE VIEW v_2 AS SELECT id, COUNT(*) as num FROM 某表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帅得掉渣k
2011-09-14
知道答主
回答量:33
采纳率:0%
帮助的人:18.6万
展开全部
视图,就是一张有多张表组合的虚拟表,你对虚拟表能做查询操作!删除和修改操作的时候,数据库也不知道你要修改什么表,所以,视图是不能做删除和更新数据的操作! 但是你可以把视图当表用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我爱美美的
2011-09-14 · 超过29用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:71.4万
展开全部
不可以,当你修改了实际表你的视图数据才会跟着改变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式