存储过程是存放在服务器上的预先编译好的SQL语句,在服务器端运行,可以视为用户为了完成某个特定的功能而编写的一个功能模块,用户或其他用户可以在自己其他的存储过程中引用该存储过程,从而实现了代码的重用性,加快应用的开发速度、提高开发的质量和效率。
自考数据库原理的时候,里边涉及到了存储过程的知识,那时对它的理解就是“牵一发而动全身”,颇有种“一劳永逸”之感。机房重构中用到了存储过程,将自己原本抽象的理解又给具体化了~
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。
视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。
对于数据库学习,我们最初的认识只有四个字:增删改查,于存储过程和视图而言,二者将这四个功能进行了划分,存储过程负责“增删改”,视图负责“查”。
某些功能的实现,需要用到视图,比如上机操作,我的上机思路是这样的:
(1)判断卡号是否存在;
(2)若是存在,是否处于使用状态(PS:由于数据库设计得不太合理,将一些信息都放在了注册表里边)
(3)卡号是否正在上机;
(4)卡号余额是否满足最低余额标准
(5)进行以上操作后,将上机记录更新到T_LineRecord_Info表
T_Card_Info表内容如下:
视图设计如下:
视图编辑后显示的内容:
用视图的时候,有一种这样的体会:视图的本质也许是一种组合查询,用视图的原因就是不同功能对数据的要求是不一样的,若是针对每一个功能去建立数据表的话,会产生数据库设计上的冗余,故视图存在的目的就是一次性将用到的零件备齐,让这个虚拟表来适应不同的需求,在使用的时候根据去组合零件。
对比学习很高效,存在即是合理,用质疑的眼光其看待知识存在的意义和优势,就能看到本质。