Innodb视图

Innodb视图

Posted by CaiJiahe on August 11, 2017

0x01 定义

视图是一个虚表或抽象。

0x02 创建方式

	create view v_t as select * from t1 where id < 10;

使用这种方式创建的视图,在更新的时候不会报错,但是更新也是失败的。

	alter view v_t as select * from t1 where id < 10 with check option;

修改了表的定义,加上了with check option,这样在更新的时候就会报错并且失败。

查询非视图表:

	select * from information_schema.tables where table_type='base table' and table_schema=database()\G

查询视图:

	select * from information_schema.views where table_schema=database()\G

0x03 物化视图

oracle中的物化视图并不是虚表,是根据基表存在的实表。物化视图的好处是在执行复杂操作时,勿需进行耗时的操作,直接操作物化视图就可以了。
mysql并没有物化视图,但是可以根据虚表和基表来实现物化视图。

创建方式:BUILD IMMEDIATE(立刻创建) BUILD DEFERRED(延迟创建)
刷新模式:ON DEMAND(根据需要刷新) ON COMMIT(提交时刷新)
刷新方式:FAST(增量刷新) COMPLETE(完全刷新) FORCE(根据数据库状态判断) NEVER(不进行任何刷新)

mysql实现物化视图的方式是创建物化视图的表结构,ON DEMAND的COMPLETE要清空表,然后导入数据。ON COMMIT就需要定义触发器来做了。