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

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

对于没有复杂处理的 单表 视图, 是可以 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 等统计函数的, 那么可能是没办法更新了。

1、登录PL/SQL Developer;

2、找到要修改数据的表,右击该表,选择“编辑数据”;

3、出现下图这样的窗口,注意方框中的信息。小锁此时打开了,说明可以编辑数据了,后面的加减号表示增加、删除记录。最后一列的rowid不能修改,这是物理标识列;

4、修改了数据后,可以看到对号变成绿色了,此时要提交的话需要点击这个对号;

5、点击对号之后并没有真正保存,还需要提交事务,这样才算是真正修改了。点击对号之后,还要点击提交事务按钮;

6、d出确认提示框,点击是就行了;

7、我们还可以在sql窗口中输入‘select t.*,t.rowid from表 t’,按执行键,然后再点击那个锁,即可开始修改表数据;

8、如果输入的是‘select t.* from 表 t’,这条语句和上面的那个语句查询结果是相同的,但因为多查了个rowid,所以才能修改数据;

数据表视图

视图是从一个或几个基本表(或视图)中导出的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。

视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。

视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。通过视图看到的数据存放在基表中。视图看上去非常像数据库的物理表,对它的 *** 作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,而有些则不能(仅仅能查询)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6720903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存