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就需要定义触发器来做了。