MySQL必知必会 学习笔记 第二十二章 使用视图

MySQL 5添加了对视图的支持。

视图是虚拟的表。它包含的是一个查询的结果,它本身不含数据,只是用来查看存储在别处的数据的一种设施,视图返回的数据是从其他表中检索出来的,在添加或更改这些表中的数据时,视图将返回改变过的数据。

视图的应用:
1.重用SQL语句。
2.简化复杂的SQL操作,编写查询后,可以方便地重用它而不必知道它的基本细节。
3.使用表的组成部分而不是整个表。
4.保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。
5.更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据。

视图创建后,可以像表一样使用,可对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视图或表,甚至能添加和更新某些数据。

因为视图不包含数据,每次使用视图时,都必须处理查询执行时的任一个检索。当使用了多个联结和过滤创建了复杂的视图或嵌套了视图时,性能可能会下降很多。部署大量使用视图的应用前,应进行性能测试。

使用视图的规则:
1.视图名必须唯一,视图名和表名共享命名空间。
2.可创建的视图数无限制。
3.为创建视图,必须有足够访问权限。
4.视图可以嵌套,即可利用从其他视图中检索出数据的查询构造一个视图。
5.ORDER BY可用于视图中,如果从该视图中检索数据的SELECT中也含有ORDER BY,则视图中的ORDER BY被覆盖。
6.视图不能索引,也不能有触发器或默认值。
7.视图可以和表一起用,如一起联结。

使用视图:
1.视图创建:

CREATE VIEW viewName AS
SELECT语句

2.使用SHOW CREATE VIEW viewName;查看创建视图的语句。
3.删除视图DROP VIEW viewName
4.更新视图时,可以先DROPCREATE,也可以使用CREATE OR REPLACE VIEW(如果该视图不存在,则创建该视图,如果该视图存在,则替换原有视图)。

如果从视图检索数据时使用了一条WHERE子句,则此WHERE子句会与视图中的WHERE子句(创建视图时的WHERE)自动组合。

部分视图可更新,对视图使用INSERT、UPDATE、DELETE时将更新其基表。

如果MySQL不能正确地确定被更新的基数据,则不允许更新视图,如果视图定义中有以下操作,则不能进行视图的更新:
1.分组。
2.联结。
3.子查询。
4.并。
5.聚集函数。
6.DISTINCT。
7.计算(导出)列。

可能MySQL在版本5后会取消部分上述限制。

一般应将视图用于检索而非更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值