为代码减负之<三>视图(SQL)
在设计数据库时为了降低数据冗余。一般都会依照三范式去设计,但有时我们在查询时须要通过一字段获取跟这
个字段相关联的好几个字段。可是他们又分布在不同的表中,这时候假设依照正常途径走的话须要同一时候查询好几张
表,不仅操作麻烦还easy出错。当然我们有捷径。把想要查询的字段都整合到一张虚拟表中,这就是视图的应用。
简介
概念:视图是从若干基本表或其它视图构造出来的表,是一张虚拟的表。其内容由查询定义。
同真实的表一样。
视图包括一系列带有名称的列和行数据。
可是视图并不在数据库中以存储的数据值集形式存在。
行和列数据来自由定
义视图的查询所引用的表,而且在引用视图时动态生成。
视图的长处:
一,视图着重于特定数据。
视图能够让用户或者程序开发者仅仅看到他们所须要的数据,而不须要把表中的全部信息与字段暴露出来,这样增强了数据的安全性。
二。简化数据的操作,易维护。
我们能够将经经常使用到的多表联合查询出来的数据,或特定的结果集定义为视图,这样就起到了模块化数据的作用。
我们在使用这些数据时直接查询该视图就能够。而不用到处写长长的SQL语句,这样也起到易维护的作用。
三,视图能够限定查询数据。
比方:对于不同的用户,我们仅仅提供部分数据给他。这样,我们就能够在视图中限定结果集。然后返回该视图给他。这样。不管用户怎么对视图定义查询条件。他也不能查询出我们不想提供给他的数据。
小小试炼
在设计机房收费系统的数据库时为了降低数据冗余。把原先的学生表,分成了两个表即卡表和学生表。卡表仅仅存
放卡的信息,学生表仅仅存放学生的信息。这样是遵从了三范式的要求。可是在查询信息的时候却不能像原来那样
方便,须要同一时候查询这两个表。所以在此尝试了视图。
1. 新建视图
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDAyODg2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
2. 选择涉及到的表或视图
3. 选择各个表中须要查询的字段
4. 命名保存
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDAyODg2OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
5. 实际应用
和普通表一样进行查询就可以。"select * from StuCardView_info where
CID=@CID"
尽管视图能够给我们带来种种便利。但不意味着我们就能够滥用它。
由于视图事实上就是一段SQL语句。所以它的结果都是每次调用时动态生成的。假设不合理的定义视图,必定带来性能上的损耗。
以下是我们在创建视图应该要注意的几点:
1. 操作视图会比直接操作基础表要慢。所以我们尽量避免在大型表上创建视图。
2. 尽量不要创建嵌套视图,就是在视图中使用视图。这样在查询时。会多次反复訪问基础表,带来性能损耗。
3. 尽量在视图仅仅返回所需的信息,尽量不要在视图使用不须要訪问的表。
4. 在大型表或者复杂定义的视图,能够使用存储过程取代。
5. 频繁使用的视图,能够使用索引视图来取代。
对视图的理解还非常浅显。以上的实例也仅仅是视图的最基本应用。其他诸如索引视图、切割视图、汇总视图等还没
详细应用过。
对视图的更新操作也没尝试,须要做的还有非常多。
为代码减负之<三>视图(SQL)的更多相关文章
- 《asp.net mvc3 高级编程》第三章 视图
一.视图的作用 视图的职责是向用户提供界面.从ASP.NET MVC3开始,视图数据也可以通过ViewBag属性访问.例如:ViewBag.Message 就等于ViewData["Mess ...
- [Xcode 实际操作]三、视图控制器-(1)使用UIScrollView展示多个视图可控制器
目录:[Swift]Xcode实际操作 本文将演示使用滚动视图创建多个页面. [Create a new Xcode project]->[Single View App]->[Next] ...
- day 53-1 Django基础三之视图函数
Django基础三之视图函数 本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...
- day 67 Django基础三之视图函数
Django基础三之视图函数 本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...
- Laravel教程 三:视图变量传递和Blade
Laravel教程 三:视图变量传递和Blade 此文章为原创文章,未经同意,禁止转载. Blade 上一篇我们简单地说了Router,Views和Controllers的工作流程,这一次我就按照上一 ...
- 为代码减负之<一>触发器(SQL)
对触发器一词早有耳闻(最早是在耿大妈的数据库视频中),当初看完视频后,对理解不深刻的东西如:触发器,存储过程,事务,日志等等没有具体的去查阅,也没有具体的去尝试,应用.所以才导致了今天的博客(把曾经丢 ...
- ASP.NET MVC5 高级编程-学习日记-第三章 视图
开发人员之所以花费大量时间来重点设计控制器和模型对象,是因为在这些领域中,精心编写的整洁代码是开发一个可维护Web应用程序的基础. 3.1 视图的作用 视图的职责是向用户提供用户界面.当控制器针对被请 ...
- MySQL从删库到跑路_高级(三)——视图
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.视图简介 1.视图简介 视图是由SELECT查询语句所定义的一个虚拟表,是查看数据的一种非常有效的方式.视图包含 ...
- Mysql内置功能《三》视图
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
随机推荐
- SSH整合报错:找不到元素 'beans' 的声明
转自:https://blog.csdn.net/haozhugogo/article/details/54233608 spring版本问题,将bean.xml中xsd文件定义的版本改为spring ...
- 【BZOJ1010】【HNOI2008】玩具装箱toy (斜率优化DP) 解题报告
题目: 题目在这里 思路与做法: 这题不难想. 首先我们先推出一个普通的dp方程: \(f_i = min \{ f_j+(i-j-1+sum_i-sum_j-L)^2\}\) 然后就推一推式子了: ...
- VM虚拟机-Windows
前提:安装了vm虚拟机 一.下载win10原版镜像文件 一定要是原版,修改版的不能用. 推荐下载网址:http://www.xitongtiandi.net/win10yuanban/ 下载后放在D盘 ...
- node.js date-utils
前端引用 <script type="text/javascript" src="date-utils.min.js"></script> ...
- chrome打开控制台状态下,没有人为打断点,自动进入断点模式的解决方法
如下图所示:在控制台去掉Sources -> XHR/fetch Breakpoints -> Any XHR or fetch 的勾
- 体验:Anko + Kotlin
● 依赖:compile 'org.jetbrains.anko:anko:0.10.0' ● 界面: import android.view.View import org.jetbrains.an ...
- 关于安卓调用wcf的一些问题
最近公司有个项目需要和别的系统做对接,对方开放的是webservice接口,搞了很久终于搞出来了,在此记录一下 获取数据的service public class SoapService implem ...
- 3D集合图元:最小边界框/包围盒(boundingbox)
对于2D边界框的应用时比较广泛地,它为一个简单匹配建立了很小的计算规则,3D模型的boundingbox则比较困难,计算代价较大.对于PCL库的使用则降低了计算难度,三维数值化降低了建模过程,可以使用 ...
- (转)基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面
http://www.cnblogs.com/wuhuacong/p/3669575.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...
- 采用requests库构建简单的网络爬虫
Date: 2019-06-09 Author: Sun 我们分析格言网 https://www.geyanw.com/, 通过requests网络库和bs4解析库进行爬取此网站内容. 项目操作步 ...