1.介绍

在传统关系型数据库里,视图有时也被称作虚表,是基于特定SQL结果集的虚拟数据表。在有些场合会变得很方便,例如:原有系统重构,旧的数据表A和B已经被拆分和合并到数据表C、D、F里面,为了实现平滑迁移不影响对外数据业务,可以分别创建和原有数据表A和B一致的视图G和H,再实现数据层升级,不影响现有业务。

2.创建

创建MySQL视图语法如下

CREATE
[ALGORITHM=[UNDEFINED | MERGE | TEMPTABLE] ]
[DEFINER=用户名]
[SQL SECURITY [DEFINER | INVOKER] ]
VIEW `视图名`AS
查询SQL
[WITH [CASCADED | LOCAL] CHECK OPTION];

参数说明

ALGORITHM  视图采取何种算法,不同的算法性能可能有很大差异,UNDEFINED即由MySQL自行决定采用何种算法

DEFINER  指定创建该视图的用户

SQL SECURITY  关于权限的定义,可选DEFINER和INVOKER,如果设置为DEFINER则使用该视图时候,前面的DEFINER需要用户需要有相应权限,如果设置为INVOKER,则需要当前调用者有相应权限

WITH CHECK OPTION  设置视图的数据完整性检查,如果不设置则增删改该视图的数据不作任何检查,如果设置为CASCADED则增删改数据需要满足该视图以及所有与之相关的视图(视图嵌套)定义的条件(如视图查询SQL为WHERE id > 5则不允许增删改这个条件外的数据),如果设置为LOCAL则只检查当前视图(不考虑视图嵌套),其他限制跟CASEDED一致

3.使用

使用方法与普通的MySQL表一致,相关特性也受对应实表的存储引擎影响。

最新文章

  1. 实现iOS图片等资源文件的热更新化(五): 一个简单完整的资源热更新页面
  2. Delphi XE5 如何与其他版本共存
  3. IOS中封装一个View的思路
  4. Spring管理Hibernate
  5. 理解angular中的module和injector,即依赖注入
  6. admin嵌套在spring mvc项目里,菜单栏点击新连接每次都会重置
  7. [leetcode-521-Longest Uncommon Subsequence I]
  8. python串口调试,M3650B-HA调试
  9. BZOJ2428[HAOI2006]均分数据——模拟退火
  10. <%= %>、<% %>、<%@ %>和<%# %>的区别
  11. P2590 [ZJOI2008]树的统计(树链剖分)
  12. 跟我学SharePoint 2013视频培训课程——使用垃圾箱(5)
  13. Unity Shader学习资料
  14. 用Notepad++在文本文件里快速在每行头尾都加上指定的内容(转载)
  15. android四大组件--ContentProvider具体解释
  16. javax.naming.NoInitialContextException错误的解决方案
  17. C#最受欢迎功能 -- C#1至C#7
  18. sublime3插件安装及报错处理
  19. linux内核启动分析(3)
  20. Python攻击

热门文章

  1. [USACO09MAR]Cleaning Up
  2. Java this关键字详解
  3. SQL表操作习题3 11~13题
  4. Java判断中文字符
  5. MySQL EXPLAIN 命令详解学习
  6. Unity进阶技巧 - 使用MonoDevelop来断点调试
  7. 【转】Ehcache详细解读
  8. selenium控制浏览器为手机模式
  9. Java学习之自动装箱和自动拆箱源码分析
  10. 机器学习算法实践:决策树 (Decision Tree)(转载)