【机房重构】SQL之视图
近期在重构机房收费系统,越往后就会越感觉到这里很多其它的是对之前学过知识(数据库,设计模式)的一种应用和回想。比方在登录功能中用到了抽象加反射,在学生下机中,我们能够用触发器来同一时候更新两个表。这里就先说一下视图的使用,关于视图的有点和作用百度上有非常多答案,在此不再赘述。
视图定义:
自己理解:在涉及到多张表的操作的时候就可使用视图。这样能够避免与数据库直接联系。而且当你更新数据库数据时,就会自己主动更新视图中的数据,方便以后查询。
百度百科:计算机数据库中的视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包括一系列带有名称的列和行数据。可是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,而且在引用视图时动态生成。
视图建立:
这里我们通过在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 把一个表内字段的值复制到另一个表内的特定字段
- 定时自动释放SQL SERVER占用内存的方法
- ORA-16957: SQL Analyze time limit interrupt ORACLE 报错 故障修复 远程处理
- T-sql语句修改SQL Server数据库逻辑名、数据库名、物理名的方法
- SQL Server常见问题及解决方法分享
- 实现成功:使用SQL登录Oracle数据库(sql登录oracle)
- MySQL中记录SQL语句的技巧(mysql记录sql语句)
- Oracle分页查询实战: 构建有效的SQL语句(oracle分页sql语句)
- MySQL的更新SQL实用技巧(mysql更新sql)
- 语句利用MSSQL执行SQL语句的简单指南(mssql执行sql)
- Oracle 锁定 SQL:保护安全性(oracle锁sql)
- 用Oracle动态SQL轻松解决复杂问题(oracle动态sql)
- MyEclipse轻松连接SQL Server,无需繁琐设置(myeclipse连接sqlserver)
- MySQL学习笔记:创建表的SQL语句(mysql创建表的sql)
- MySQL日志跟踪:管理SQL查询性能(mysql跟踪sql语句)
- 入门SQL Server:快速开启简单入门之旅(sqlserver简单)
- SQL Server官网:极致数据服务未来精彩(sqlserver的官网)
- 定时任务调度使用SQL Server定时器(sqlserver定时器)
- 份SQL Server快捷取出年份的技巧(sqlserver取出年)
- sql探索SQL Server:前六条SQL语句(sqlserver前六条)
- 使用SQL Server存储过程让数据库管理更便捷(sqlserver sp)
- MSSQL查询SQL日志:深入了解服务器运行情况(mssql查询sql日志)
- 利用SQL调用Redis,达到更高的效率(sql调用redis)
- oracle与SQL 背后的不同(oracle与sql区别)
- 查询快速精准查询Oracle SQL语句(oracle sql快捷)
- SQL语句的执行原理分析