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

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

2011-09-14 11:23 呱呱的蛙    分类:数据库DB  |  浏览 6809 次
书上说"视图被看成是虚拟表,它并不代表任何的物理数据,只是用来查看数据的视窗而已。数据库中只储存视图的定义,并不是以一组数据的形式储存在数据库中"。“无论在什么时候修改试图的数据,实际上都是在修改对应的数据表中的数据”。这两句话不矛盾么?我查过百度了,有些说可以改,有些说不可以改,那到底行不行呢? 小弟刚开始学习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 等统计函数的, 那么可能是没办法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值