视图和索引
视图和索引
1.视图
视图是隐藏了子查询、连接查询等操作的逻辑结构,由数据库的真实数据组成,是一个与真实表不同的虚拟表。
- 只保存定义而不存储数据
- 行列数据均来自视图所引用的表,将在使用视图时动态生成
- 被引用的列被删除视图会报错,删除基表并不会删除视图,需要手动删除视图
- Hive视图是只读的,不能插入或装载数据,不能用作 LOAD / INSERT / ALTER 的目标
1.1视图使用场景
1.一些真实表对未授权的用户进行查看限制,可以选取能提供用户的列,并授权用户查看(如用户密码等)。
2.查询语句非常复杂时,如多表关联及多重子查询,可以用视图来代替复杂查询语句,简化查询语句。
1.2视图优势
简化用户对数据的理解,只关注相关的数据而不是全部数据。
降低查询复杂度。
1.3 视图基本操作
1.3.1 创建视图
CREATE VIEW [IF NOT EXISTS] [db_name.]view_name -- 视图名称
[(column_name [COMMENT column_comment], ...) ] --列名
[COMMENT view_comment] --视图注释
[TBLPROPERTIES (property_name = property_value, ...)] --额外信息
AS SELECT ...;
1.3.2 查看视图
-- 查看所有视图: 没有单独查看视图列表的语句,只能使用 show tables
show tables;
-- 查看某个视图
desc view_name;
-- 查看某个视图详细信息
desc formatted view_name;
1.3.3 修改视图
ALTER VIEW [db_name.]view_name AS select_statement;
1.3.4 删除视图
DROP VIEW [IF EXISTS] [db_name.]view_name;
1.4 物化视图和侧视图
1.4.1 物化视图( Materialized View)
对数据做的一个快照,在执行复杂的表连接或聚集等耗时较多的查询操作时,可以使用物化视图预先计算并保存计算结果。
与普通视图的区别:
物化视图会存储数据,与表一样的特征。
普通视图不会存储数据,是只有表结构的虚拟表。
本文作者:Lilaaa
本文链接:https://www.cnblogs.com/lila720/p/18273934
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步