cc后缀网站,电子产品网页设计模板,wordpress获取token方法,自我介绍网页设计模板1、什么是视图视图是虚拟的表#xff0c;是一个存储的查询#xff0c;虽然不需要实际的物理存储#xff0c;但是也被看作是一个数据库对象#xff1b;它与包含数据的表不一样#xff0c;它不包含任何列或数据#xff0c;它只是包含使用时动态检索数据的查询#xff0c;并…1、什么是视图视图是虚拟的表是一个存储的查询虽然不需要实际的物理存储但是也被看作是一个数据库对象它与包含数据的表不一样它不包含任何列或数据它只是包含使用时动态检索数据的查询并且只包含一个SELECT语句(不限制子查询)。视图实际上是由预定义查询形式的表所组成的。视图与表之间的主要区别在于表占据物理空间包含实际的饿数据而视图不需要物理空间不包含数据它只是从表里引用数据。视图只保存在内存里而且只需要保存其定义本身(查询语句)也就是说视图所需的空间只是定义语句所需要的。2、视图的用途(1)简化数据访问简化复杂的SQL对数据库里的数据进行归一化处理达到重用SQL语句(2)对数据进行保护起到安全的作用例如只让用户访问部分字段信息(3)维护摘要数据(4)更改数据格式和表示视图仅仅是用来查看存储在别处数据的一种设施。3、视图的使用在数据库里视图的使用方式与表是一样的当创建一个视图时实际上是在数据库里执行了一个SELECT语句。(1)表创建视图CREATE VIEW view_name ASSELECT *FROMtable_name[WHERE exp1][WITH CHECK OPTION][GROUP BY]WITH CHECK OPTION选项的目的是确保全部的UPDATE和INSERT语句满足视图定义里的WHERE条件子句这样保证了引用的完整性。WITH CHECK OPTION有两个选项CASCADED和LOCAL其中CASCADED是默认选项。这两个属性都会检查视图的完整性约束和新视图的定义条件但是LOCAL不检查底层的表而CASCADED会检查。所以现对于来说CASCADED更安全些。(2)视图创建视图CREATE view2 ASSELECT * FROM view1;如果从基表和从另一个视图创建视图具有一样的难度和效率那么首选从基表创建视图。(3)视图创建表CREATE TABLE table_name ASSELECTcol1,col2FROM view_name;(4)删除视图DROP VIEW view_name;(5)更改视图虽然ANSI SQL不包含ALTER VIEW语句但是某些实现也会支持它例如MySQL\SQL Server\Oracle在MySQL的旧版本中还可以通过REPLACE VIEW来修改视图。(6)使用视图通过视图来检索数据的时候若是该条检索语句存在WHERE子句并且视图定义中也存在WHERE子句那么前一个WHERE子句会被添加到视图查询中已有的WHERE子句中以便正确过滤数据。也即是说一个WHERE子句在视图定义中另外一个WHERE子句在传递给视图的中那么这两组WHERE子句会自动合并并且会放置在视图定义中。(7)嵌套视图对性能的影响因为搜索引擎需要分析每一层的视图所以若视图嵌套的层数越多那么搜索引擎需要进行更多的分析工作这样导致性能降低故最好控制视图的嵌套层数。实际上大多数搜索引擎无法 确保获得一个完美的执行计划而只能保证执行一个耗时最短的计划。4、视图的规则(1)视图名必须唯一并在只能创建不存在的视图视图数目没有限制(2)视图可以嵌套但是要注意性能问题(3)视图不能有索引也不能有关联的触发器或默认值(4)有些DBMS禁止在视图中使用ORDER BY子句(5)有些DBMS把视图作为只读的查询禁止将数据写会底层表(6)有些DBMS要求返回的列进行命名若是计算字段的话那么必须要使用别名(7)有些DBMS可以创建这样的视图即不能进行导致行不再属于视图的插入或更新(8)视图权限创建视图必须要有足够的权限视图由创建者或规划所有者所拥有视图所有者自动拥有视图的全部权限并且可以把视图的权限授予其他用户