【机房重构】--视图学习

来源:互联网 发布:不同后缀的英文域名 编辑:程序博客网 时间:2024/06/06 20:18

1. 为什么会有视图?
如果我们按照数据库的三范式来设计数据库时候我们会发现自己设计了很多表,但是机房中查询数据时候往往需要返回多张表,所以这样会很麻烦,强大的SQL sever就设计了视图来解决这个问题。
2. 视图是什么?
视图为逻辑表,逻辑二字说明了视图不是真正的表。因为视图内根本就没有数据。视图的全部家当,也就是你创建视图时的SELECT语句。视图是虚拟表。
3. 如何创建视图?
(1)利用SQL语句
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]…)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
(2)手动连接
 打开数据库
右键--新建视图--选择自己要添加的表
将卡表的外键,与学生的主键建立连接
输入表名称
刷新之后看视图的效果

4.如何使用
使用方法和普通的表一样,SQL语句语法都相同

'以D层的一个查询为例,查询视图V_QueryCashPublic Class T_StudentDAL : Implements IDAL.IStudentDAL    Public Function ICheckCash(ByVal StudentInfo As Entity.StudentEntity) As DataTable Implements IStudentDAL.ICheckCash        Dim Sqlhelper As SqlHelper = New SqlHelper        Dim Sql As String        Dim table As New DataTable        '给参数赋值        Dim sqlparams As SqlParameter()        sqlparams = {New SqlParameter("@CardNo", StudentInfo.cardNo)}        Sql = "Select * from V_QueryCash where cardNo=@cardNo "        '执行查询        table = Sqlhelper.ExecSelect(Sql, CommandType.Text, sqlparams)        Return table    End FunctionEnd Class

5.全面看待视图

(1)优点

简化操作。
对重构数据库提供了一定程度的逻辑独立性 。
视图能够对机密数据提供安全保护。
适当的利用视图可以更清晰的表达查询

感受:对最后一点的体会最深刻,真的超方便。对于安全性,这里稍作解释:使用视图,基表中的数据就有了一定的安全性因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集合,数据是随着基表的更新而更新。同时,用户对视图,不可以随意的更改和删除,可以保证数据的安全性。
(2)缺点

  1. 性能差
    sql server必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,sqlserver也要把它变成一个复杂的结合体,需要花费一定的时间。
  2. 修改限制 
    当用户试图修改试图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的试图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。

这里写图片描述

借用之前宋荣凯师哥分享过的一张图片,事物都是两面性的,阴阳结合,有优点就一定会有缺点。宇宙万物都满足这个规律。学什么东西都需要全面的去看待。

0 0
原创粉丝点击