mysql视图和临时表的区别
视图
视图是由从数据库的基本表中选出来的数据组成的逻辑窗口,它与基本表不同的是,视图是一个虚表。数据库中只存放视图的定义,而不存放视图包含的数据,这些数据仍存放在原来的基表中。所以基表中的数据如果发生改变,从视图中查询出的数据也随之改变。
视图是一个虚表,他是通过执行SQL查询所产生的。视图以select命名存储于数据字典当中。每当SQL查询包含有视图名称的时候,数据库管理系统会执行在视图定义当中所包含的查询,以建立其虚拟结果表。该结果表可以当做查询其余部分的源表使用。
视图可以是建立在一个或多个表上,也可以建立在视图上,但是不管怎么样对视图数据的操作最终都会转换为对基本表的操作,因为视图是一个虚表,数据实际上保存在基本表中
临时表
临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。
临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。
临时表是建立在系统临时文件夹中的表,如果使用得当,完全可以像普通表一样进行各种操作,在VFP退出时自动被释放。
临时表是一种并不存储在数据库当中的基表。与之相反的是,临时表只存在于创建该临时表的数据库会话被激活的情况下。
临时表存储在数据库会话中,不在数据库中,当使用show tables 时没有显示,但是可以查询,当关闭数据库(quit,exit)然后在打开在去数据库中查询的时候就不存在了。
视图和临时表的区别
1、视图只存在于单个查询当中,每次使用该视图名,其虚拟表就会根据现有的数据重新被创建。 2、临时表存在于它被创建的整个数据库会话过程中。 3、视图自动使用其所定义的查询检索出来的数据进行填充。 4、必须使用SQLINSERT命令来向临时表添加数据。 5、只有那些符合视图可更新能力标准的视图才可用于数据修改。当使用视图进行更新时,该更新会永久被传递至底层基表上。 6、由于临时表都是基表,因此所有的临时表都是可更新的。不过,这些更新对于这些表来说是临时性的。 7、由于视图的内容是在该视图每次被使用的时候才生成,因此视图当中的数据几乎每次都是最新的。 8、临时表当中的数据所反应的是数据库在该表被装载进数据库时的状态。如果临时表所装载的源表中的数据在临时表检索这些数据之后发生了改变,那么临时表当中的内容有可能与数据库当中的其他部分的数据脱离同步状态。
优缺点
1、由于视图的内容是在该视图每次被使用的时候才生成,所以数据和数据库中的数据是同步的,但是在每次查询的时候都要建立视图表结构,所以比较浪费时间。 2、临时表仅需创建一次,所以相比视图每次都创建视图结构,节省了大量时间,但是临时表的数据在数据源发生改变是没有进行更新的话,就会出现数据不同步现象。 3、简化数据查询语句——定义视图可以将表与表之间的复杂的连接操作和搜索条件对用户影藏起来,用户只需简单的对一个视图进行查询即可。 4、使用户能从多角度看待同一数据。 5、提高了数据的安全性———在建立视图的时候可以吧敏感的数据影藏起来,而吧需要的数据暴露给客户这样的话比较安全。 6、提供了一定程度的逻辑独立性——数据库中是三级模式两级映射,三级模式是 外模式、模式、内模式而这里的视图就是外模式,这样就提供了数据的逻辑独立性。
什么时候使用视图呢?
应用场景1:保密工作,比如有一个员工工资表,如果你只希望财务看到员工工资这个字段,而其他人不能看到工资字段,那就用一个视图,把工资这个敏感字段过滤掉
应用场景2:有一个查询语句非常复杂,大概有100行这么多,有时还想把这个巨大无比的select语句和其他表关联起来得到结果,写太多很麻烦,可以用一个视图来代替这100行的select语句,充当一个变量角色
什么时候用临时表呢?
应用场景1:你在短期内有很多DML操作,比如京东淘宝亚马逊的购物车表,把东西放购物车(insert),变更数量(update),删除商品(delete),一旦结算金钱后,这些数据就要清掉,这时需要用临时表
应用场景2:在导出数据时,你可能不想导完整的数据库,或者表,你可能只想要导出符合某些条件的数据,那么你可以创建临时表,把select语句插入到临时表,接着导出这个临时表,导完以后通过结束session或者事务的方式,让这些没用的数据自动清理掉
应用场景3:你在写存储过程时,有很多的连接,比如你需要连接A,B,C,D,E,F,G,H那么多张表,才能得到你的结果表,同时做连接的消耗太大,你可以先A,B,C连接的结果,放在临时表,接着再把这张临时表,跟D,E,F连接,作为新的结果放在临时表,接着再把临时表与G,H连接,最后得到临时表数据,一次插入到结果表(永久表)。
二者区别:
空间分配:物理空间的分配不一样,视图不分配空间, 临时表会分配空间
虚实:视图是一条预编译的SQL语句,并不保存实际数据,而临时表是保存在tempdb中的实际的表。即视图是一个快照,是一个虚表,而临时表是客观存在的表类型对象。它们的结构一个是表、一个快照。可以把视图想象成联合表的快捷方式。
mysql视图和临时表的区别的更多相关文章
- Mysql 视图笔记
1. 视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚拟存在的表.视图就像一个窗口(数据展示的窗口),通过这个窗口,可以看到系统专门提供的数据(也可以查看到数据表的全部数据),使 ...
- MYSQL视图的学习笔记
MYSQL视图的学习笔记,学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆 课程笔记的综合. 视图及图形化工具 1. 视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚 ...
- MySQL视图view/存储过程和函数的使用
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...
- MySql视图笔记(转载)
1. 视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚拟存在的表.视图就像一个窗口(数据展示的窗口),通过这个窗口,可以看到系统专门提供的数据(也可以查看到数据表的全部数据),使 ...
- 推荐收藏 —— MySQL视图详细介绍
前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会 ...
- 2020重新出发,MySql基础,MySql视图&索引&存储过程&触发器
@ 目录 视图是什么 视图的优点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 MySQL创建视图 ...
- MySQL视图详细介绍
前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会详 ...
- Mysql 视图 游标 触发器 存储过程 事务
Mysql 视图 触发器 存储过程 游标 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中 ...
- Mysql视图的作用及其性能分析
定义:视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表. 作用: 1.简化操作,不用进行多表查询. 2.当不同种类的用用户共享同一个数据库时,非常灵活,(用户以不同的 方式看待同一数据. ...
随机推荐
- Django--CRM--一级, 二级 菜单表
一. 一级菜单表 1. 首先要修改权限表的字段, 在权限表下面加上icon和 is_menu 的字段 2. 展示结果 # 我们既然想要动态生成一级菜单,那么就需要从数据库中拿出当前登录的用户的菜单表是 ...
- python之路--初识html前端
一.HTML文档结构 最基本的HTML文档: <!DOCTYPE html> <html lang="zh-CN"> #这个lang表示语言,zh-CN是中 ...
- ASP.NET4.0所有网页指令
ASP.NET网页指令(Page Directive)就是在网页开头的标签声明: <% Page Language="C#" %> 而指令的作用在于指定网页和用户控件编 ...
- 移动APP用例设计中的关键点(转载)
http://www.51testing.com/html/52/n-4421752.html 在测试工作中我们需要不断的总结和储备自己的知识和经验,譬如具备特定属性.环境以及场景,如:PC,手机,智 ...
- Nginx 浏览器缓存
L:97 一般都是 同时使用 浏览器与Nginx缓存
- python命令里运行正确但是pycharm里面运行就是报错的问题
这两天在学习爬虫,第一步就是 import scrapy class StackOverflowSpider(scrapy.Spider): 结果一直报错,说是scrapy没有spider这个方法,各 ...
- Git神器使用相关
感谢 感谢作者的网站,本文所有的知识可以在上述网站了解到,讲的非常详细,感谢.(https://www.liaoxuefeng.com/wiki/0013739516305929606dd183612 ...
- bzoj 1067: [SCOI2007]降雨量 (离散化+线段树)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1067 思路: 毒瘤题,写的自闭,改了一晚上,注意要理清题目的逻辑 x小于等于y,x,y之间的 ...
- Codeforces Round #545 (Div. 2) D
链接:http://codeforces.com/contest/1138/problem/D 啊啊啊啊啊啊,自闭啊,比赛的时候判断条件 if(s1[i-1]=='0') aa++;写成了 if(s1 ...
- SpringMVC把后台文件打印到前台
实现效果如下: 代码为: @RequestMapping(value = "/tools/printContract") public void cell(HttpServletR ...