为代码减负之<三>视图(SQL)

    在设计数据库时为了减少数据冗余,一般都会按照三范式去设计,但有时我们在查询时需要通过一字段获取跟这

 个字段相关联的好几个字段,但是他们又分布在不同的表中,这时候如果按照正常途径走的话需要同时查询好几张

表,不仅操作麻烦还容易出错。当然我们有捷径,把想要查询的字段都整合到一张虚拟表中,这就是视图的应用。

 

简单介绍

 

    概念:视图是从若干基本表或其他视图构造出来的表,是一张虚拟的表,其内容由查询定义。同真实的表一样,

视图包含一系列带有名称的列和行数据。但是视图并不在数据库中以存储的数据值集形式存在。行和列数据来*定

义视图的查询所引用的表,并且在引用视图时动态生成。

 视图的优点:

  一,视图着重于特定数据。

      视图可以让用户或者程序开发人员只看到他们所需要的数据,而不需要把表中的所有信息与字段暴露出来,这样增强了数据的安全性。

  二,简化数据的操作,易维护。

      我们可以将经常用到的多表联合查询出来的数据,或特定的结果集定义为视图,这样就起到了模块化数据的作用。我们在使用这些数据时直接查询该视图就可以,而不用到处写长长的SQL语句,这样也起到易维护的作用。

  三,视图可以限定查询数据。

      比如:对于不同的用户,我们只提供部分数据给他。这样,我们就可以在视图中限定结果集,然后返回该视图给他。这样,无论用户怎么对视图定义查询条件,他也不能查询出我们不想提供给他的数据。

 

小小试炼

在设计机房收费系统的数据库时为了减少数据冗余,把原先的学生表,分成了两个表即卡表和学生表。卡表只存

放卡的信息,学生表只存放学生的信息。这样是遵从了三范式的要求,但是在查询信息的时候却不能像原来那样

方便,需要同时查询这两个表。所以在此尝试了视图。

1. 新建视图

               为代码减负之<三>视图(SQL)

2. 选择涉及到的表或视图

               为代码减负之<三>视图(SQL)

3. 选择各个表中需要查询的字段

              为代码减负之<三>视图(SQL)

4. 命名保存

为代码减负之<三>视图(SQL)

5. 实际应用

   和普通表一样进行查询即可。"select * from StuCardView_info where CID=@CID"

 

    虽然视图可以给我们带来种种便利,但不意味着我们就可以滥用它。因为视图其实就是一段SQL语句,所以它的结果都是每次调用时动态生成的。如果不合理的定义视图,必然带来性能上的损耗。

下面是我们在创建视图应该要注意的几点:

    1. 操作视图会比直接操作基础表要慢,所以我们尽量避免在大型表上创建视图。

    2. 尽量不要创建嵌套视图,就是在视图中使用视图。这样在查询时,会多次重复访问基础表,带来性能损耗。

    3. 尽量在视图只返回所需的信息,尽量不要在视图使用不需要访问的表。

    4. 在大型表或者复杂定义的视图,可以使用存储过程代替。

    5. 频繁使用的视图,可以使用索引视图来代替。

 

对视图的理解还很浅显,以上的实例也只是视图的最基本应用。其它诸如索引视图、分割视图、汇总视图等还没

具体应用过。对视图的更新操作也没尝试,需要做的还有很多。

 

为代码减负之<三>视图(SQL),布布扣,bubuko.com

为代码减负之<三>视图(SQL)

上一篇:read from /dev/urandom 返回值异常


下一篇:webexam项目杂记