视图数据库
视图是由从数据库的基本表中选出来的数据组成的逻辑窗口,它与基本表不一样的是,视图是一个虚表。数据库中只存放视图的定义,而不存放视图包含的数据,这些数据仍存放在原来的基表中。因此基表中的数据若是发生改变,从视图中查询出的数据也随之改变。安全
视图是一个虚表,他是经过执行SQL查询所产生的。视图以select命名存储于数据字典当中。每当SQL查询包含有视图名称的时候,数据库管理系统会执行在视图定义当中所包含的查询,以创建其虚拟结果表。该结果表能够当作查询其他部分的源表使用。session
视图能够是创建在一个或多个表上,也能够创建在视图上,可是无论怎么样对视图数据的操做最终都会转换为对基本表的操做,由于视图是一个虚表,数据实际上保存在基本表中ui
临时表事务
临时表是创建在系统临时文件夹中的表,若是使用得当,彻底能够像普通表同样进行各类操做,在VFP退出时自动被释放。同步
临时表是一种并不存储在数据库当中的基表。与之相反的是,临时表只存在于建立该临时表的数据库会话被激活的状况下。it
临时表存储在数据库会话中,不在数据库中,当使用show tables 时没有显示,可是能够查询,当关闭数据库(quit,exit)而后在打开在去数据库中查询的时候就不存在了。io
视图和临时表的区别table
一、视图只存在于单个查询当中,每次使用该视图名,其虚拟表就会根据现有的数据从新被建立。 二、临时表存在于它被建立的整个数据库会话过程当中。 三、视图自动使用其所定义的查询检索出来的数据进行填充。 四、必须使用SQLINSERT命令来向临时表添加数据。 五、只有那些符合视图可更新能力标准的视图才可用于数据修改。当使用视图进行更新时,该更新会永久被传递至底层基表上。 六、因为临时表都是基表,所以全部的临时表都是可更新的。不过,这些更新对于这些表来讲是临时性的。 七、因为视图的内容是在该视图每次被使用的时候才生成,所以视图当中的数据几乎每次都是最新的。 八、临时表当中的数据所反应的是数据库在该表被装载进数据库时的状态。若是临时表所装载的源表中的数据在临时表检索这些数据以后发生了改变,那么临时表当中的内容有可能与数据库当中的其余部分的数据脱离同步状态。变量
优缺点
一、因为视图的内容是在该视图每次被使用的时候才生成,因此数据和数据库中的数据是同步的,可是在每次查询的时候都要创建视图表结构,因此比较浪费时间。 二、临时表仅需建立一次,因此相比视图每次都建立视图结构,节省了大量时间,可是临时表的数据在数据源发生改变是没有进行更新的话,就会出现数据不一样步现象。 三、简化数据查询语句——定义视图能够将表与表之间的复杂的链接操做和搜索条件对用户影藏起来,用户只需简单的对一个视图进行查询便可。 四、使用户能从多角度看待同一数据。 五、提升了数据的安全性———在创建视图的时候能够吧敏感的数据影藏起来,而吧须要的数据暴露给客户这样的话比较安全。 六、提供了必定程度的逻辑独立性——数据库中是三级模式两级映射,三级模式是 外模式、模式、内模式而这里的视图就是外模式,这样就提供了数据的逻辑独立性。
何时使用视图呢?
应用场景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链接,最后获得临时表数据,一次插入到结果表(永久表)。