近期在重构机房收费系统,越往后就会越感觉到这里很多其它的是对之前学过知识(数据库,设计模式)的一种应用和回想。比方在登录功能中用到了抽象加反射,在学生下机中,我们能够用触发器来同一时候更新两个表。这里就先说一下视图的使用,关于视图的有点和作用百度上有非常多答案,在此不再赘述。

视图定义:

自己理解:在涉及到多张表的操作的时候就可使用视图。这样能够避免与数据库直接联系。而且当你更新数据库数据时,就会自己主动更新视图中的数据,方便以后查询。

百度百科:计算机数据库中的视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包括一系列带有名称的列和行数据。可是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,而且在引用视图时动态生成。

视图建立:

   这里我们通过在SQL Sever中使用企业管理器和T-Sql语句来创建。

 第一种:1.打开SQL Sever就会有例如以下的界面:

                          

 
       
2.右击【视图】,选择【新建视图】,就会例如以下图所看到的:

       3.在这里选择你要用到的多个表,最少是两张表。选择后【加入】,就会有例如以下所看到的:

勾选你要用到的字段,保存之后,视图就创建成功了。

注:这里的主外键设置应该注意。没有主外键在查询数据时,会出现查询结果卡号和学号不正确应的情况。

                         

 另外一种:通过编写语句来创建视图

<span style="font-family:SimSun;font-size:18px;">CREATE VIEW [dbo].[V_StudentInfo]
AS
SELECT dbo.T_CardInfo.CardNo, dbo.T_CardInfo.Cash, dbo.T_StudentInfo.StudentNo, dbo.T_StudentInfo.StudentName, dbo.T_StudentInfo.CLassNO, dbo.T_StudentInfo.Grade,
dbo.T_StudentInfo.Department, dbo.T_StudentInfo.Sex, dbo.T_StudentInfo.CardNo AS Expr1
FROM dbo.T_CardInfo INNER JOIN
dbo.T_StudentInfo ON dbo.T_CardInfo.CardNo = dbo.T_StudentInfo.CardNo</span>

视图应用:

(学生上机中查询学生信息(T_StudentInfo表)和剩余金额(T_CardInfo表))为例

    首先来看看学生上机的流程:当输入卡号之后,首先要查询是否存在此卡。之后若存在,就要显示学生信息剩余金额。这样就涉及到了两张表的查询操作。

不用视图的情况:在写查询的时候,我们要写查询学生信息的方法和查询卡剩余金额的方法。

使用视图的情况:将两张表变成视图存在,就仅仅须要写一个查询方法就可将所须要的信息所有查询出来。

使用视图的实例展示:

<span style="font-size:18px;"> 'D层
''' <summary>
''' 学生上机
''' </summary>
''' <param name="cardno">按卡号查找</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function QueryCardNoDAL(ByVal cardno As Entity.V_StudentEntity) As List(Of Entity.V_StudentEntity) Implements IDAL.ILine.QueryCardNoDAL
Dim helper As New SqlHelper
Dim enLine As New Entity.V_StudentEntity
Dim dt As DataTable Dim sql As String = "select * from<strong> V_StudentInfo </strong>where CardNo=@CardNo"
Dim params As SqlParameter() = {New SqlParameter("@CardNo", cardno)} dt = helper.querydata(sql, CommandType.Text, params) Dim mylist As List(Of Entity.V_StudentEntity)
mylist = Entity.EntityHelper.convertToList(Of Entity.V_StudentEntity)(dt) Return mylist
End Function</span>

记得在学习数据库阶段,米老师找了几个人开会说说眼下的学习。那会还和老师说,看完视频对于视图、触发器、存储过程就好像仅仅是有了一个名词概念。详细干嘛用就不了解。 如今在用过这些之后,就会发现,仅仅要做了,事实上都不难。

【机房重构】SQL之视图的更多相关文章

  1. 机房重构——泛型和“DataTable”

    前言 我们都知道在机房重构的时候,大多数都在用七层进行重构,每一层都依赖实体.所以不管怎么调用,返回的应该是实体参数,这样才符合大多数的逻辑,这样我们试想一下,如果我们要求在U层返回多个实体值,怎么办 ...

  2. 11、SQL Server 视图、数据库快照

    SQL Server 视图 什么是视图? 视图是一个虚拟的表,内容源于查询的结果集.只有当视图上建立了索引后,才会具体化. 视图可以筛选和处理数据,而不是直接访问基础表.如:创建一个视图,只展示源表中 ...

  3. 使用SQL Server视图的优缺点

    SQL Server视图我们经常会用的到,下面就为您介绍使用SQL Server视图的优缺点,希望可以对您SQL Server视图有更多的了解. 在程序设计的时候必须先了解视图的优缺点,这样可以扬长避 ...

  4. (4.22)sql server视图/索引视图概念

    (4.22)sql server视图 关键词:sql server视图.索引视图 SQL Server视图是由SQL语句组成的逻辑数据库对象.它也可以称为由SQL语句组成的虚拟表,该SQL语句可能包含 ...

  5. CodeSmith生成SQL Server视图的实体类脚本/对应的生成模板

    C#生成sql视图的实体类 using System;using System.Text;using CodeSmith.Engine;using SchemaExplorer;using Syste ...

  6. 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO

    刷新SQL Server所有视图.函数.存储过程 更多   sql   此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...

  7. 机房重构包图(从三层+实体到三层+实体+外观+工厂+接口+SQLHelper)

    刚刚开始接触三层的时候,我只做了两个登录小窗体的例子.画了简单的包图,可以说,为后面机房重构留下了大量的工作(因为三层理解没有深度,也没有理解出自己的东西).不过,欠下的总要还的.在做机房重构的时候, ...

  8. .NET重构(九):机房重构验收总结

    导读:机房收费系统个人重构版,在寒假前,已经结束了.嗯,这一路的过程,也挺心酸的.结合师傅验收时的指导.建议,对这一段时间的学习,进行一个总结. 一.学习过程 这一阶段的学习,按照师傅给的建议是:由浅 ...

  9. 【机房重构】—上机&amp;订餐

    前几天通过UML图中的时序图.让我对于机房重构中的每一条线理解的更加清晰.曾经认为上机特别的乱,在一次偶遇中,得知了原来它能够转化成我们平时订餐.以下就听我说一说上机&订餐的故事吧! 又是发生 ...

  10. 【C#】万事开头难(二)&lt;机房重构&gt;

    前言 机房将要进行完了,之所以仍然使用这个题目,是由于我想告诉自己.无论面对多么未知的事物.不要害怕,去做就好.在这么多天的机房重构中,发现了好多问题,也攻克了好多问题,今天,就把我解决的问题分享给大 ...

随机推荐

  1. IE6 for WIN8

    分享一款微软原生内核的Ie6,绿色免安装,无广告,无插件. 点击下载IE6 for WIN8 来源:子涵的博客

  2. 代码世界中的Lambda

    “ λ ”像一个双手插兜儿,独自行走的人,有“失意.无奈.孤独”的感觉.λ 读作Lambda,是物理上的波长符号,放射学的衰变常数,线性代数中的特征值……在程序和代码的世界里,它代表了函数表达式,系统 ...

  3. CANoe 入门 Step by step系列(二)CAPL编程【转】

    CAPL就是Communication Application Programming Laguage的缩写,CAPL类似于C语言的语法,因此所有的语法请参考C语言教程,这里不在这里进行详述,关于C语 ...

  4. Day20 Django之Model多对多、中间件、缓存、信号和分页

    一.Form补充 class IndexForm(forms.Form): # c = [ # (1, 'CEO'), # (2, 'CTO') # ] # 静态字段,属于IndexForm类,即使数 ...

  5. 2016030204 - git和github结合

    1.下载和安装git客户端 参考:http://www.cnblogs.com/zhtzyh2012/p/5232291.html 2.github上创建项目 参考:http://www.cnblog ...

  6. scala 安装

    http://www.scala-lang.org/download/install.html http://zh.scala-tour.com/#/hello-wolrd scala指南 To ru ...

  7. Windows常见蓝屏故障分析

    转自Windows常见蓝屏故障分析 症状描述: 当您在运行Microsoft Windows 2000/XP/Server 2003.Microsoft Windows Vista/Server 20 ...

  8. JSch - Java实现的SFTP(文件下载详解篇)(转)

    上一篇讲述了使用JSch实现文件上传的功能,这一篇主要讲述一下JSch实现文件下载的功能.并介绍一些SFTP的辅助方法,如cd,ls等.   同样,JSch的文件下载也支持三种传输模式:OVERWRI ...

  9. spin_count

    oracle的一个隐藏参数_spin_count当中记录了这个值,如果超过这个参数就那这个进程就释放cpu进入睡眠状态.(然后这里有了争议,传统的说法是在睡眠了一段时间以后会醒来,但是也有人说是进入了 ...

  10. poj3167

    这道题是一道kmp的扩展版的好题一串匹配一串很容易想到kmp,但是这里的匹配要求的是两个串的名次相同显然名次是会变的,为了方便,我们可以换一种表达对于两个等长的串的相同位置,名次相等就是在它之前比它小 ...