数据库 SQL: 视图
从 SQL的角度来看,视图和表是相同的,两者的区别在于表中保存的是实际的数据,视图保存的是SELECT语句,视图本身并不存储数据,当我们从视图中读取数据时,视图会在内部执行该 SELECT 语句并创建出一张临时表。使用视图,可以轻松完成跨多表查询数据等复杂操作,而且视图中的数据会随着原表变化自动更新。使用视图具有如下的优点:
由于视图不保存实际数据,可以节省存储设备的容量,特别是在业务量很大情况下,优势会更加突出。
将频繁使用的 SELECT 语句保存成视图避免重复书写。特别是在进行汇总以及复杂的查询条件导致 SELECT 语句非常庞大时,使用视图可以大大提高效率。
首先,创建一个Product表,并向表中插入一些数据,为后续指令执行创建一个实验数据
创建视图
创建视图的语法:
创建视图需要注意其存在的限制:
定义视图不能使用ORDER BY子句
下面实现创建商品合计的视图功能
还可以实现基于视图创建多重视图:
更新视图
标准 SQL 中有这样的规定:如果定义视图的 SELECT 语句能够满足某些条件,比较有代表性的条件有:
SELECT 子句中未使用 DISTINCT
FROM 子句中只有一张表
未使用 GROUP BY 子句
未使用 HAVING 子句
基于上述描述,我们无法向ProductSumJim中更新数据,如果执行会出现:
不是通过汇总得到的视图就可以进行更新,下面是一个实现数据更新的视图示例:
权限修改
删除视图
删除视图的语法:
例如,我们实现删除ProductCNT视图:
参考资料
书籍《SQL基础教程(第2版)》
版权声明: 本文为 InfoQ 作者【大规模数据处理学习者】的原创文章。
原文链接:【http://xie.infoq.cn/article/b6858b193918800921e83749a】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论