机房重构--透过查询余额看视图的应用

本文介绍了在数据库重构过程中,如何利用视图简化多表查询,提高系统效率。视图是一个虚拟表,可以对数据进行增、删、改、查操作。虽然存在性能和修改限制的问题,但在特定场景下,视图能够有效聚合数据并提供针对性的查询。通过创建视图的步骤和代码示例,展示了视图在查询余额功能中的实际应用。
摘要由CSDN通过智能技术生成

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan

●背景

    我的数据库设计时将学生的信息和学生对应卡的信息各自建立了一张表,在敲一般用户的查询余额功能时需要在窗体界面上显示的内容包括两张表的内容,所以查询的时候需要查询两张表,脑袋里就想起了自考时数据库这本书上有视图这一个方便的利器,可是之前自己从来没用过,随着机房重构几个小窗体的实现,现在我是越来越大胆了,之前听到自己不熟悉的东西就敬而远之,现在不会了就想去试试,结果试着试着就发现原来也不是很难,进入正题吧~

●视图简介

     视图的英文名字叫View,视图是一个虚拟的表,视图中的数据就是我们在数据库基本表中的数据。我们可以对进视图行一些操作,例如增、删、改、查等。

     优点:1.用视图可以让操作变得简单,有时候我们查询所需要查询的表不仅仅是一张表,在机房重构的时候都是用七层来实现功能,如果查询多张表就需要在D层写多个查询语句,这样对系统的效率是很不利的,视图就解决了这样一个问题,用一个查询语句就可以查询多个表中的数据。2.除此之外视图还另数据有了针对性,当我们从两个表中查数据的时候我们并不需要表中全部字段的内容,这时候我们就可以利用视图将所需要的数据选出来即可。

     缺点:1.对视图的修改是有一定的限制的,对视图的某些行进行修改时Sqlserver需要将这些操作转换为对应基本表的行的操作,这样就可能将一个很简单的视图转换后变得复杂。2.因为视图并不是像基本表那样在数据库中真是存在的,所以在查询的时候也是要进行对视图的查询和对基本表查询的转换,所以在性能方面会花费一些时间。

●视图的创建

1.展开自己的数据库找到视图,如下:

                      

2.右击视图,新建视图,如下:

                     

3.点击新建视图后会出现如下内容,可以选择自己需要的几张表,添加,如下:

           

4.按上述图片操作后,点击关闭按钮,会出现如下内容,可以选择自己需要的字段。(我只是举个例子,并没有完全选择我所需要的字段,还请阅读此博客的伙伴按照自己需求选择),这里需要特别提醒:我们可以从下图中看到两张表中都有studentNo字段,这时候我选择的是在右侧的表中的字段,为什么要这样选择呢?这是因为studentNo在右侧的表中是主键,选中主键所在表的该字段就相当于该字段在另一个表中是作为外键的。如果我们没有这样选择,就很可能导致我们查询出的数据不是一一对应的关系,造成查询结果不正确。这样选择就有小的避免了一个问题:数据不对应!

           

5.选择好之后就可以执行以下了,执行完毕就可以看到相应的结果了,例如:

6.确认没有错误后就可以保存了,保存后就可以再次右击【视图】刷新查看刚刚建立的视图了

●视图的代码应用

    查询代码是在D层中写的,所以展示一下查询余额的D层代码,其中的V_QueryCash就是我的视图名称。

 

Public Class CheckCashDAL : Implements IDAL.ICheckCash


    Public Function ChechCash(student As StudentEntity) As DataTable Implements ICheckCash.ChechCash
        Dim dt As DataTable   '定义一个DataTable型变量
        Dim SqlHelper As New SqlHelper   '定义一个SqlHelper变量
        Dim Parameter As SqlParameter()  '定义该变量用来给对应的变量赋值
        Parameter = {New SqlParameter("@studentCardNo", student.studentCardNo)}  ’将对应变量赋值
        Dim strText As String = "select * from V_QueryCash where studentCardNo=@studentCardNo"   '查询语句
        dt = SqlHelper.ExecSelect(strText, CommandType.Text, Parameter)   ’sqlhelper执行语句
        Return dt   '返回查询的结果,为datatable型
    End Function
End Class

●总结

        视图在解决我们问题的同时又会带来一些问题,具体的应用就要看具体的系统,需要实现什么样的功能,自己衡量利弊之后用就好!具体好坏还是在实际的实践中去亲身体验较好!


 

评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值