drop view仅删除视图定义,不影响基表数据与结构;它从系统表中移除记录,不占用存储空间,查询时仍实时执行原select;真正删除数据的操作是drop table、truncate table等。

不会影响关联的数据。DROP VIEW 只删定义,不碰基表里一行数据。
执行 DROP VIEW 时到底发生了什么
数据库只是从系统表(比如 information_schema.VIEWS)里删掉那条记录,相当于把一个保存好的 SELECT 语句从字典里擦掉。基表的结构、索引、约束、数据行全都不变。
- 视图不是副本,不占实际存储空间(物化视图除外,但那是另一套机制)
- 每次查视图,数据库都重新执行背后那个
SELECT,读的是基表实时数据 -
DROP VIEW user_stats;执行完,users表和里面所有记录还在原地
DROP VIEW 和真正删数据的操作别搞混
有人手抖把 DROP VIEW 写成 DROP TABLE,或者在事务里误执行 DELETE FROM orders WHERE ...——这些才会动数据。视图本身没有“删除能力”,哪怕它定义里写了 WHERE status = 'archived'。
Android采用关系型数据库SQLite3,它是一个支持SQL轻量级的嵌入式数据库,在嵌入式操作系统上有很广泛的应用,WM采用的也是SQLite3 ;关于过于、原理方面的东西在这篇文章里不会提到,但是如果你想能够快速的学会操作SQLite3,那这就是你要找的文章! 感兴趣的朋友可以过来看看
- 真会删数据的命令只有:
DROP TABLE、TRUNCATE TABLE、DELETE FROM table_name、DROP DATABASE - 通过视图执行
DELETE FROM v_orders是否生效,取决于视图是否可更新(单表、无聚合、无DISTINCT等) - 多表 JOIN 视图执行
DELETE通常直接报错:View 'db.v_multi' is not updatable
删视图前必须查清楚的三件事
虽然基表安全,但下游可能已经依赖这个视图。删完不是数据丢,而是服务崩。
- 查依赖:MySQL 8.0+ 可用
SELECT * FROM information_schema.VIEW_TABLE_USAGE WHERE VIEW_NAME = 'v_report';PostgreSQL 查pg_depend - 查调用方:全局搜索代码库里的
FROM v_、JOIN v_、BI 工具报表配置、定时 SQL 脚本 - 查权限:有些用户只有该视图的
SELECT权限,没基表权限;删了视图,这些人就彻底查不到数据了
最常被忽略的是隐式依赖——比如某个存储过程里硬编码了视图名,或者某条 API 的 SQL 是拼接出来的。删之前不扫一遍,上线后报 relation "v_summary" does not exist 才去翻日志,就晚了。










