数据库的视图该怎么用?
使用视图
视图
MySQL5 添加了对视图的支持。
视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
我们用例子说话:
这是我们之前写的一个 SELECT 语句,使用的联结
此查询用来检索订购了某个特定产品的客户。所以你想查到这个数据,就需要对各个表特别熟悉。
现在,假如可以把整个查询包装成一个名为 productcustomers 的虚拟表。则可以轻松的检索出想要的数据,不是吗?
这就是视图的作用,productcustomers 是一个视图,作为视图,它不包含表中应该有的任何列或数据,它包含的是一个 SQL 查询。
为什么使用视图?
视图的常见应用
重用 SQL 语句
简化复杂的 SQL 操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节
使用表的组成部分而不是整个表
保护数据。可以给用户授权表的特定部分的访问权限而不是整个表的访问权限
更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据
你要知道,视图仅仅是用来查看存储在别处的数据的一种设施。视图本身不包含数据,因此他们返回的数据是从其他表中检索出来的。
视图的规则和限制
下面是视图创建和使用的一些常见的规则与限制
与表名一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字)
对于创建的视图数目没有限制
为了创建视图,必须具有足够的访问权限。这些限制通常由数据库管理人员授予
视图可以嵌套,既可以利用从其他视图中检索数据的查询来构造一个视图
ORDER BY 可以用在视图中,但如果从该视图检索数据的 SELECT 语句中也含有 ORDER BY ,那么该视图中的 ORDER BY 将被覆盖。
视图不能索引,也不能有关联的触发器或默认值
视图可以和表一起使用。你可以编写一条联结表和视图的 SELECT 语句。
视图创建
视图用 CREATE VIEW 语句来创建。
使用 SHOW CREATE VIEW viewname;来查看创建视图的语句
用 DROP 删除视图,其语法为 DROP VIEW viewname
更新视图时,可以先用 DROP 再用 CREATE,也可以直接 CREATE OR REPLACE VIEW
利用视图简化复杂的联结
就是我们在本章一开始讲的那个例子,我们设置一个视图
这条语句就是创建了一个名为 productcustomers 的视图,它联结三个表,返回已订购了任意产品的所有客户的列表。
用视图重新格式化检索出的数据
这是我们之前写过的一个计算字段。
我们可以把它转换为视图。
用视图过滤不想要的数据
我们定义 customeremaillist 视图,它过滤没有电子邮件地址的客户。
使用视图与计算字段
视图对于简化计算字段的使用特别有用
我们设置一个视图
我们要是还想检索 20005 就可以这样写:
更新视图
视图的更新限制比较多。涉及以下的都不能去直接更新视图
分组
联结
子查询
并
聚集函数
DISTINCT
导出列
版权声明: 本文为 InfoQ 作者【阿柠xn】的原创文章。
原文链接:【http://xie.infoq.cn/article/4ca269bc115e5e018219166f1】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论