今天在学习delete和truncate的区别的时候,这篇文章:
https://www.cnblogs.com/wojiaochuichui/p/9523005.html
提到 delete 可以删除view中的数据,一时好奇,做了一个实验,顺便还发现了一个有意思的现象,记录如下:
1.创建视图
create view v_wttttest_0221
as
select 1 as id,'a' as name from dual
union
select 2 as id,'b' as name from dual
union
select 3 as id,'c' as name from dual
2.删除视图某一条记录
究其原因,可能是原表不是正常的表导致的,这个不是重点
3.创建一个正常的视图,再执行删除操作
create table t_wttttest_0221 as select * from v_wttttest_0221
select * from t_wttttest_0221
create view v_wttttest_0221new
as
select * from t_wttttest_0221
select * from v_wttttest_0221new
delete from v_wttttest_0221new where id=1
真的可以删除了!
再查看原表:
和之前的想法也有点一样,只是没有这么确定,实验做完了就确定了
解释如下:
由于视图 没有相应的存储空间,视图中的数据不是存放在视图中的,对视图的一切操作最终都要 转换成对基本表的操作。
对视图使用 delete语句 可以删除底层表中的数据,与使用 drop view 语句删除视图是不同的,使用drop view 语句是删除整个视图,但不删除与该视图有关的底层表中的数据。
以上就是这个小实验的过程~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报