视图进阶

视图进阶

视图本身是一个虚拟表,不存放任何数据。在使用SQL语句访问,它返回的数据是MySQL从其他表生成的。视图和表示在同一个命名空间,很多时候两者等同对待,但是不能对视图创建触发器,也不能使用DROP TABLE命令删除视图。

创建视图
CRATE VIEW Oceania AS
 SELECT * FROM Country WHERE Continent = 'Oceania'
 WITH CHECK OPTION;

MySQL实现视图的底层原理:

  • 底层使用临时表来实现,即先将SELECT语句的结果(之前用于创建视图)存放到临时表中,当需要访问视图的时候直接访问临时表。称为临时表算法。
  • 将向视图查询的sql直接包含进查询的SQL中。(即转换),成为合并算法。

如果采用的临时表算法,EXPLAIN中会显示为派生表(DERIVED)

可更新视图

定义:可以通过更新这个视图来更新视图涉及到的相关表。

视图对性能的影响

  • 在重构schema的时候可以使用视图,使得在修改视图底层表结构的时候,应用代码还能继续不报错的运行。
  • 可以使用视图基于列的权限控制,却不需要真正的在系统中创建列权限,因此没有额外的开销。
 CREATE VIEW public.employeeinfo AS
  SELECT firstname, lastname -- but not socialsecuritynumber
  FROM private.employeeinfo;
  GRANT SELECT ON public.* TO public_user;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值