书上说"视图被看成是虚拟表,它并不代表任何的物理数据,只是用来查看数据的视窗而已。数据库中只储存视图的定义,并不是以一组数据的形式储存在数据库中"。“无论在什么时候修改试图的数据,实际上都是在修改对应的数据表中的数据”。这两句话不矛盾么?我查过百度了,有些说可以改,有些说不可以改,那到底行不行呢? 小弟刚开始学习SQL,请大虾为我解答一下,尽量详细点 ~
2011-09-14 12:32
提问者采纳
对于没有复杂处理的 单表 视图, 是可以 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 等统计函数的, 那么可能是没办法更新了。
-
提问者评价
-
谢谢你的简单而又容易理解例子~ 也谢谢全部回答我的人了