本篇博客关注的焦点是视图的使用以及视图和多表连接的配合。以便可以了解视图,以及更好的使用视图。
首先,还是要说明一下视图的定义:视图是基于SQL语句的结果集的可视化虚拟表,换句话说视图就是SQL查询结果的可视化呈现,是多个表的部分数据的关系虚拟表。为了后面的内容更容易理解,我们还要看一下视图的建立过程。如图所示是机房收费系统中的《User_sys》和《CheckInfo_sys》建立的一个视图的关系。(不讨论该视图是否具有实用价值)
那么这个视图建立的代码如下:
SELECT dbo.CheckInfo_sys.UserName, dbo.CheckInfo_sys.Income, dbo.CheckInfo_sys.Expend, dbo.CheckInfo_sys.HandIn, dbo.User_sys.RealName
FROM dbo.CheckInfo_sys INNER JOIN
dbo.User_sys ON dbo.CheckInfo_sys.UserName = dbo.User_sys.UserName
那么我们这里需要注意的就是代码中的From后面的部分。这里的Inner join就是我们说的连接,那么On之后是视图的筛选条件。需要说明的是若没有ON后面的条件就不能用连接。以该视图为例:即选取两个表中用户名相等的数据。那么这里问题就出来了,在User_sys表中用户名是唯一的,但是CheckInfo中的记录可能是多条。这样的一对多的关系的情况就导致了来源于用户表的数据出现重复,若这时要统