1 .介绍
在传统的关系数据库中,视图也称为虚拟表,是基于特定SQL结果集的虚拟数据表。 在某些情况下会很方便。 例如,旧系统的重建,旧数据表a和b已经分割并集成到数据表c、d、f中。 为了实现平稳迁移,为了不影响对外数据业务,可以分别创建与原始数据表a和b匹配的视图g和h,实现数据层升级,不影响现有业务。
2 .创建
用于创建MySQL视图的语法如下
创建
[ algorithm=[ undefined|merge ] [ definer=用户名]
[ SQL security [ definer|invoker ] ] view `视图名称` AS查询SQL [ with [ cascaded|local ]检查选项]
参数说明
ALGORITHM视图采用哪个算法,根据算法的不同性能可能会有很大的不同,UNDEFINED由MySQL自身决定采用哪个算法
DEFINER指定创建视图的用户
有关SQL SECURITY权限的定义,可以选择DEFINER和INVOKER。 如果设置为DEFINER,则在使用此视图时,上一个DEFINER必须具有相应的权限;如果设置为INVOKER,则当前调用者必须具有相应的权限
WITH CHECK OPTION设置视图的数据完整性检查。 否则,即使添加或删除该视图中的数据,也不会检查任何内容。 如果设置为CASCADED,则必须满足为该视图及其关联的所有视图(视图嵌套)定义的条件,才能添加或删除数据。 例如,如果视图查询SQL为WHERE id 5,则不能添加或删除超出条件的数据。 如果设置为LOCAL,则为当前视图
3 .使用
使用方法与普通的MySQL表一致,相关的特性也受对应的实表的存储引擎的影响。