SQL视图——精选推荐
- 格式:pdf
- 大小:104.23 KB
- 文档页数:1
SQL视图# ⼀、什么是视图?(1)在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。视图包含⾏和列,就像⼀个真实的表。(2)视图是⼀种不存在的虚拟表: 类似表但是不是表。类似表: 视图有表结构;不是表: 没有数据, 视图的数据来源都是基表;(3)视图中的字段是来⾃⼀个或多个数据库中的真实的表中的字段。单表视图: 基表只有⼀个;多表视图: 基表⾄少两个以上;(4)我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来⾃于某个单⼀的表。(5)数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。(6)视图总是显⽰最近的数据。每当⽤户查询视图时,数据库引擎通过使⽤ SQL 语句来重建数据。(7)可以从某个查询内部、某个存储过程内部,或者从另⼀个视图内部来使⽤视图。通过向视图添加函数、join 等等,我们可以向⽤户精确地提交我们希望提交的数据。SQL CREATE VIEW 实例
⼆、视图的作⽤(1)简化了操作,把经常使⽤的数据定义为视图,可以将复杂的SQL查询语句进⾏封装。如在实际⼯作中,不同的⼈员只关注与其相关的数据,⽽与他⽆关的数据,对他没有任何意义。根据这⼀情况,可以专门为其创建⼀个视图,定制⽤户数据,聚焦特定的数据。此后当他查询数据时,只需 select * from view_name; 就可以了。(2)安全性,⽤户只能查询和修改能看到的数据。使⽤视图,基表中的数据就有了⼀定的安全性。因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以不通过视图将基表中重要的字段信息给⽤户。视图是动态的数据的集合,数据是随着基表的更新⽽更新的。同时,⽤户对视图,不可以随意的更改和删除,可以保证数据的安全性。⽅便了权限管理,让⽤户对视图有权限⽽不是对底层表有权限进⼀步加强了安全性(3)逻辑上的独⽴性,屏蔽了真实表的结构带来的影响。视图的存在: 主要是为了对外提供数据⽀持(外部系统);隐藏了基表字段(隐私);保证了数据库的数据安全(保护数据库内部的数据结构);可以灵活的控制对外的数据: 保证针对每个接⼝都有⼀个单独的数据⽀持,增强了⽤户友好性。三、视图的缺点:(1)性能差数据库必须把视图查询转化成对基本表的查询,如果这个视图是由⼀个复杂的多表查询所定义,那么即使是视图的⼀个简单查询,数据库也要把它变成⼀个复杂的结合体,需要花费⼀定的时间。(2)修改限制当⽤户试图修改视图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的视图来说,这是很⽅便的,但是,对于⽐较复杂的试图,可能是不可修改的。在定义数据库对象时,不能不加选择地来定义视图,应该权衡视图的优点和缺点,合理地定义视图。对视图的修改:(1)单表视图操作: 可以进⾏增删改, 但是要实现新增: 前提是视图必须包含基表的所有不能为空的字段。(2)多表视图(基表来源两个以上)不能插⼊数据, 也不能删除数据,但是可以修改数据。使⽤视图还是有很多局限性的,并没有像直接使⽤表那么⽅便。如果视图定义中包含了group by、union、聚合函数以及其他⼀些特殊情况,就不能被更新了;更新视图的查询也可以
是⼀个关联语句,但是被更新的列必须来⾃同⼀张表;⽽且所有使⽤临时表算法实现的视图都⽆法被更新。SQL CREATE VIEW 语法:CREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition--创建视图--create or replace view v_student as select Sno,Snamefrom student;--从视图中检索数据,即查询上⾯这个视图--select * from v_student;--也可以向查询添加条件--select * from v_studentwhere Sname like '%云‘;--删除视图--drop view v_student;