MySQL(十)之视图
前言
前面给大家介绍了查询语句,感觉写的还不错的,喜欢的可以去查看。今天给大家分享的是MySQL中的视图。
视图(View):视图是由查询结果形成一张虚拟的表。非临时表,只要不删除的话就会一直存放在磁盘上,但是没有对应的文件。视图的使用和正常的表的使用一样。
一、什么是视图
视图是数据库数据的特定子集。可以禁止所有用户访问数据库表,而要求用户只能通过视图操作数据,这种方法可以保护用户和应用程序不受某些数据库修改的影响。
视图是抽象的,他在使用时,从表里提取出数据,形成虚的表。不过对他的操作有很多的限制。
视图是永远不会自己消失的除非手动删除它。
视图有时会对提高效率有帮助。临时表几乎是不会对性能有帮助,是资源消耗者。
视图一般随该数据库存放在一起,临时表永远都是在tempdb里的。
视图适合于多表连接浏览时使用;不适合增、删、改,这样可以提高执行效率。
二、视图概述
2.1、视图和表的区别
视图是已经编译好的sql语句,而表不是。
视图没有实际的物理记录,而表有。
表是内容,视图是窗口。
表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。
视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
视图的建立和删除只影响视图本身,不影响对应的基本表。
2.1、视图和表的联系
视图是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。
一个视图可以对应一个基本表,也可以对应多个基本表。
视图是基本表的抽象和在逻辑意义上建立的新关系。
2.3、视图的类型
因为不同的数据库,例如:Mysql、Sql Server、Oracle及DB2等,他们不论在视图的创建和类型上都有不同,特别是在类型上区别较大,所以这里我们以Mysql来说明总结,至于其它数据的特点会在日后继续更新。
create [algorithm=算法] view v_name as select 语句
algorithm = merge/temptable/undifined(前两种任选)
在Mysql中视图的类型分为:
1)MERGE
将视图的sql语句和引用视图的sql语句合并在一起,最后一起执行。
当引用视图时,引用视图的语句与定义视图的语句合并。
2)TEMPTABLE
将视图的结果集存放在临时表中,每次执行时从临时表中操作。
当引用视图时,根据视图的创建语句建立一个临时表。
3)UNDEFINED
当引用视图时,根据视图的创建语句建立一个临时表。
默认的视图类型,DBMS倾向于选择而不是必定选择MERGE,因为MERGE的效率更高,更重要的是临时表视图不能更新。
所以,这里推荐使用MERGE算法类型视图。
三、视图的基本使用
环境:

create view v_name as select 语句;

创建完一个视图,可以通过查看数据库中的全部数据表来查看:

可以看到当前数据库中已经把刚刚创建的视图放进数据库的表集合中了。因为视图也是一种表,是虚拟表。
3.2、查询
视图的查询和基本表的查询一样,因为视图也是一种数据表,所以你可以像这样的来查询它

3.3、删除视图
drop view v_name;

删除视图,对基本表没有任何的影响
3.4、修改视图
alter view v_name as select 语句;
结果检查: 
3.5、更新视图
1)创建新视图

2)更新视图


总结:更新会导致基本表中的数据也会相应的更新
四、使用视图的优点
4.1、可以简化查询
查询平均工资前三高的部门:

4.2、可以进行权限控制
把表的权限封闭,但是开放相应的视图查看权限,视图中只开放部分数据。
4.3、大数据分表时可以用到
比如 一般情况下(无特殊优化)表的行数超过200w时,操作就会明显变慢,可以把一张表的数据,拆分成多张表来存放。
利用视图,把多张表形成一张视图,看起来像是一整张表。
4.4、便于数据库的维护整理
A、B表合成C表,要想让原来的SQL不变,可以通过C表,把A、B表结构相同数据相同的视图创建出来继续使用。
MySQL(十)之视图的更多相关文章
- 手把手教你mysql(十)索引
手把手教你mysql(十)索引 一:索引的引入 索引定义:索引是由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度. 类似于图书的目录,方便快速定位,寻找指定的内容,如一本1000页的 ...
- Mysql中的视图
什么是视图 通俗的讲,视图就是一条SELECT语句执行后返回的结果集.所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上. 视图的特性 视图是对若干张基本表的引用,一张虚表,查询语句执 ...
- MySQL基础之 视图
视图 视图就是从一个表或多个表导出来的一张虚拟的表.通过这个窗口可以看到系统专门提供的数据,方便用户操作的同时增加了安全性. 视图的特点: 1.视图的列可以来自于不同的表. 2.视图是由实际存在的表创 ...
- MySQL数据库之视图
1 引言 为了简化复杂SQL语句编写,以及提高数据库安全性,MySQL数据库视图特性.视图是一张虚拟表,不在数据库中以储存的数据值形式存在.在开发中,开发者往往只对某些特定数据和所负责的特定任务感兴趣 ...
- MySQL进阶(视图)---py全栈
目录 mysql进阶(视图)---py全栈 一.什么是视图? 二.视图的特性 三.视图的优点 四.使用场合 五.视图基本操作 六.案例 mysql进阶(视图)---py全栈 一.什么是视图? 视图是从 ...
- Mysql学习笔记—视图
1.什么是视图 视图(View)是一种虚拟存在的表.其内容与真实的表相似,包含一系列带有名称的列和行数据.但是视图并不在数据库中以存储的数据的形式存在.行和列的数据来自定义视图时查询所引用的基本表,并 ...
- MySQL学习——操作视图
MySQL学习——操作视图 摘要:本文主要学习了使用DDL语句操作视图的方法. 了解视图 是什么 视图是从一个.多个表或者视图中导出的表,包含一系列带有名称的数据列和若干条数据行. 特点 视图不是数据 ...
- mysql 存储过程、视图---创建、调用、删除
之前一直用的是Sql Server数据库,最近偶然机会接触到mysql.这里总结了关于mysql 存储过程.视图的“创建.调用.删除”示例 ============================== ...
- MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称
MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称 INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA. ...
- 【转】MYSQL入门学习之十:视图的基本操作
转载地址:http://www.2cto.com/database/201212/176775.html 一.视图的基本介绍 www.2cto.com 视图是虚拟的表.与包含数据 ...
随机推荐
- 百度地图api将可视区域定位到当前所在位置
1.前言 开头不说点什么,总是有点不习惯.还是说点什么吧,关于百度地图,我用的次数还是比较多的,没办法,需求呀.好吧,在用百度地图的时候,确实有过很多需求,不过好在百度地图很强大,每次需求在探索后都能 ...
- 那些年,用C#调用过的外部Dll
经常有人找到我咨询以前在csdn资源里分享的dll调用.算算也写过N多接口程序.翻一翻试试写篇随笔. 明华IC读写器DLL 爱迪尔门锁接口DLL 通用OPOS指令打印之北洋pos打印机dll 明泰非接 ...
- Uva140 Bandwidth 全排列+生成测试法+剪枝
参考过仰望高端玩家的小清新的代码... 思路:1.按字典序对输入的字符串抽取字符,id[字母]=编号,id[编号]=字母,形成双射 2.邻接表用两个vector存储,存储相邻关系 ...
- 谈一谈EasyUI的TreeGrid的过滤功能
写在最前面 这个星期一直在纠结easyui的treegrid的过滤功能,原因呢,自然是项目中一个莫名奇妙的需求. easyui虽说是后端程序员的前端框架,但是说句实话,除去api,让我直接写里面的节点 ...
- Python中的引号用法总结
Python中的引号: 1.表示多行注释--一对三个单引号或双引号表示多行注释 #-*-coding :utf-8-*- #防止乱码,方便在程序中添加中文,把编码统一成UTF-8 from selen ...
- vue指令v-else-if示例解析
表示 v-if 的 "else if 块".可以链式调用. <div id="app"> <p v-if="isRender&quo ...
- LinkQueue(链队列)
关于Node.h,请参考LinkStack #include"Node.h" template<typename ElemType> class LinkQueue { ...
- 野生程序员对.NETFramework 4.0 ThreadPool的理解
ThreadPool 类 提供一个线程池,该线程池可用于执行任务.发送工作项.处理异步 I/O.代表其他线程等待以及处理计时器. 命名空间: System.Threading程序集: mscor ...
- html5 mdn一些精彩的案例
https://developer.mozilla.org/zh_CN/docs/Games/Examples
- 易云捷讯MySQL云数据库上线,推进IaaS与PaaS融合战略布局
日前宣布,其基于MySQL的关系型云数据库已经正式上线公测,用户可通过易云管理控制台创建.监控与管理mysql数据库.此服务包括在线扩容.自动备份.灵活配置和监控告警等功能,旨在帮助用户实现便捷的运维 ...