为代码减负之<三>视图(SQL)
在设计数据库时为了降低数据冗余。一般都会依照三范式去设计,但有时我们在查询时须要通过一字段获取跟这
个字段相关联的好几个字段。可是他们又分布在不同的表中,这时候假设依照正常途径走的话须要同一时候查询好几张
表,不仅操作麻烦还easy出错。当然我们有捷径。把想要查询的字段都整合到一张虚拟表中,这就是视图的应用。
简介
概念:视图是从若干基本表或其它视图构造出来的表,是一张虚拟的表。其内容由查询定义。
同真实的表一样。
视图包括一系列带有名称的列和行数据。
可是视图并不在数据库中以存储的数据值集形式存在。
行和列数据来自由定
义视图的查询所引用的表,而且在引用视图时动态生成。
视图的长处:
一,视图着重于特定数据。
视图能够让用户或者程序开发者仅仅看到他们所须要的数据,而不须要把表中的全部信息与字段暴露出来,这样增强了数据的安全性。
二。简化数据的操作,易维护。
我们能够将经经常使用到的多表联合查询出来的数据,或特定的结果集定义为视图,这样就起到了模块化数据的作用。
我们在使用这些数据时直接查询该视图就能够。而不用到处写长长的SQL语句,这样也起到易维护的作用。
三,视图能够限定查询数据。
比方:对于不同的用户,我们仅仅提供部分数据给他。这样,我们就能够在视图中限定结果集。然后返回该视图给他。这样。不管用户怎么对视图定义查询条件。他也不能查询出我们不想提供给他的数据。
小小试炼
在设计机房收费系统的数据库时为了降低数据冗余。把原先的学生表,分成了两个表即卡表和学生表。卡表仅仅存
放卡的信息,学生表仅仅存放学生的信息。这样是遵从了三范式的要求。可是在查询信息的时候却不能像原来那样
方便,须要同一时候查询这两个表。所以在此尝试了视图。
1. 新建视图
2. 选择涉及到的表或视图
3. 选择各个表中须要查询的字段
4. 命名保存
5. 实际应用
和普通表一样进行查询就可以。"select * from StuCardView_info where CID=@CID"
尽管视图能够给我们带来种种便利。但不意味着我们就能够滥用它。
由于视图事实上就是一段SQL语句。所以它的结果都是每次调用时动态生成的。假设不合理的定义视图,必定带来性能上的损耗。
以下是我们在创建视图应该要注意的几点:
1. 操作视图会比直接操作基础表要慢。所以我们尽量避免在大型表上创建视图。
2. 尽量不要创建嵌套视图,就是在视图中使用视图。这样在查询时。会多次反复訪问基础表,带来性能损耗。
3. 尽量在视图仅仅返回所需的信息,尽量不要在视图使用不须要訪问的表。
4. 在大型表或者复杂定义的视图,能够使用存储过程取代。
5. 频繁使用的视图,能够使用索引视图来取代。
对视图的理解还非常浅显。以上的实例也仅仅是视图的最基本应用。其他诸如索引视图、切割视图、汇总视图等还没
详细应用过。
对视图的更新操作也没尝试,须要做的还有非常多。
- 为代码减负之<三>视图(SQL)
- 为代码减负之<一>触发器(SQL)
- 为代码减负之<一>触发器(SQL)
- 为代码减负之<二>存储过程(SQL)
- 为代码减负之<二>存储过程(SQL)
- .NET调用osql.exe执行sql脚本创建表和存储过程<转> 代码
- iOS开发 两个视图之间值传递的常用方法<三>
- 解决并清除SQL被注入<script>恶意病毒代码的语句
- UNITY3D shader代码例子<三> shader旋转动画
- C语言学习代码<三>
- 数据库_基础代码<sql>
- 常用SQL语句收藏 <三>
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<SQL_Server_视图_函数_存储过程_触发器等>(二十三)
- Linux设备模型<三>总线、设备、驱动程序
- 使用Map把sql返回的list<Object>转成需要的实体对象
- 使用PHP实现密保卡功能实现代码<打包下载直接运行>
- struts+spring+hibernate的web应用<四> Web层代码编写(1)
- 记录我开发鞋服行业供应链软件的历程<设计代码生成工具>
- UBOOT-2010-03在S3C2440上的移植<三>------------自动识别启动模式Nand Or Nor
- CSS颜色代码大全及<a>标签超链接颜色改变