机房收费系统视图的运用
对于视图在一年前的数据库学习和自考中就学到了,那时只是理论学习,这次在机房收费系统重构中亲自实践,加深了对视图的理解。 定义: 从数据库系统外部来看,视图是用户从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,视图是由SELECT语句组
对于视图在一年前的数据库学习和自考中就学到了,那时只是理论学习,这次在机房收费系统重构中亲自实践,加深了对视图的理解。
定义:
从数据库系统外部来看,视图是用户从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,视图是由SELECT语句组成的查询定义的虚拟表,在数据库中并不真实存在。好比在提高班有学术部,安全部,纪律部等等,这些部门就是视图,需要给哪个部门开会就通知哪个部门。这些部门的人都是提高班各个期的(基本表),并且每个人都是独一无二的。
操作:
由于视图只是存储的SQL Select 语句,因此创建一个视图实际上就是编写Select语句。
1.视图的创建:
CREATE VIEW()
AS
以上是在查询分析器中直接以T_SQL语句创建视图,也可以在企业管理器中以图形化的方式创建视图。
2.视图的撤销:
DROP VIEW
3.视图的更新:
如果视图是从单个基本表只使用选择、投影操作导出的,并且包含了基本表的主键,这样的视图称为“行列子集视图”,可以被执行更新操作(插入、修改、删除),但在定义的时候必须加上“WITH CHECK OPTION”短语。
应用:
在机房收费系统中”下机“需要知道上机学生的卡号、卡内金额、上下机时间以及费率等等,其中查看”卡内余额“在T_Card中,查看”上机时间“在T_StuRecord中,通过使用视图可以将需要的数据放在一起,组合成一张新表。
在查询分析器中建立该视图:
create viewV_ManageOnline
as select T_Card.cardNo ,cash,loginTime
from T_Card,T_StuRecord
where T_Card .cardNo=T_StuRecord .cardNo and T_StuRecord .logoutTime=null
创建成功后:
在代码中使用视图和基本表基本上没有区别:
Public Function ManageDown() As DataTable Implements IManageUpStu.ManageDown
Dim strSQL As String = "select * from V_ManageOnline"
Dim helper As New SqlHelper.sqlHelper
Dim dt = helper.GetDataTable(strSQL, CommandType.Text)
Return dt
End Function
最后我们来说说使用视图的好处。它使用户只能查看和修改他们所关心的某些特定数据,其它数据库或表既不可见也不可以访问,这样就提高了数据库的安全性。当需要多个表中的数据时,不必一个一个表去查询,只要一条简单的查询视图语句即可。视图向用户隐藏了表与表之间的复杂的连接操作,大大简化了用户对数据的操作。虽然一年前对视图就有所耳闻了,但那时觉得它好”高大上“,现在亲自实践了,原来 so easy。这就是我们学习的过程吧,循序渐进,逐层深入。