表、视图、存储过程、函数、触发器、事件

  • Post author:
  • Post category:其他


表:里面存储的都是真实的数据
视图:就是一个表或者多个表的一个映射,一般只做查询使用。比如你想要的数据存在两个表里,但你查询时不想每次都写关联,那么你创建一个视图,以后只查询这个视图就可以(查询时视图与查询表语法一样)。
触发器:做数据库操作的时候,还希望相关的数据同步操作就用触发器,比如想要向A表插入数据的时候,同时向B表插入,这样写过触发器每次向A表插入数据之后就会自动向B表插入。
存储过程:这个一般是沉淀数据使用的,当你需要查询的数据不能用一个sql语句查出或者sql语句查询速度特别慢,想要提高效率,就会用到存储过程,先把需要的数据沉淀到结果表里然后直接查询结果表就能提高效率。



视图,存储过程和触发器我都会用,为什么要用,道理一直没太明白,能否用简单的话给解释一下。
想学习一下。
视图是将一些数据有机的结合起来放到一起,方便展示给有浏览权限的用户查阅。
存储过程是执行一组sql语句,将一个复杂的操作过程放到一个sp里面,由数据库服务器处理,提高运行的效率和保证数据的完整性。
触发器,是一个表数据的变更后通过触发器来修改与之相关联的其他表的数据,保证数据的一致性。
视图是一张虚拟表,通过它可以浏览你感兴趣的部分或全部内容。
存储过程是由一组SQL语句和可选控制流语句的预编译集合。
触发器是一种强制业务规则,确保数据的完整性和唯一性。
联机帮助里面仔细看看!
其实完全可以不用,用了也是有利有弊。我们公司的业务就没有用任何存储过程之类的东西。
经常察看使用的功能,用视图,存储过程感觉会比较方便。
另外就是权限的问题,
视图可以方便权限的控制,比如你只想给用户看某些表某些字段的权限;
存储过程也可以控制权限,可以使任何修改只能调用存储过程来实现。
至于触发器,完全可以自己写程序来实现。
视图是保存在數據庫中的選擇查詢﹐相當于一個從一個或多個數據表中派生出來的虛擬表﹐是用戶以查看數據庫中數據的一種方式。通过它可以浏览你感兴趣的部分或全部内容
触发器是種特殊類型的存儲過程﹐與表格緊密相連。當用戶修改表中的數據時﹐它自動執行。
存储过程是由一组SQL语句和可选控制流语句的预编译集合。
它被划分成部件片段。檢查引用數據庫中其它對象(表﹐视图等)﹐確保引用的對象是存在的。
一旦分解完成然后就編譯。存儲過程首次運行時﹐讀出查詢計划并完成編譯過程計划。然后運行。
節約了每次運行存儲過程的語法檢查﹐分解和編譯查詢樹的時間。
答案就象這樣:
為什麼要在這裡打工? 
因為要吃飯  (觸發器 和存儲過程 可以減少我們很多的工作
為什麼要準時上般?
怕扣工資...(事物 觸發 觸發器 ,小心死鎖)

你为什么药要使用数据库而不使用文件作你的数据服务?因为数据库很方便,但是它方便在什么地方呢?因为你可以使用视图,触发器,存储过程来解决很多的问题,这就是为什么?我估计你还得好好想想
当你能灵活应用的时候就不会问这个问题了
sql是第四代语言,比面向对象的第三代语言要高一个档次,可以为我们编程减少很多工作量

 
我觉得存储过程和触发器都是在服务段执行的批语句(可能这样说有点不恰当),但是触发器故名思意是被触发执行的,这点由数据库可以保证它被适时地被触发,而存储过程是需要你主动去掉用的。两者不可互相替代!

 
触发器是在实际对数据进行更新的过程当中,触发某一事件! 而存储过程在实际调用! 一般尽量不要使用触发器!

 应该说的就是视图能做的存储过程都能做,但视图只能运用到select,如果现在想在学这两种过程中选择的话,还是推荐存储过程,只要学会更难的你接很容易接受一般难度的    
  视图和存储过程比是没什么意义的 视图就是虚拟表,把视图和表比较还有点意思 视图不占实际空间,可以对任意的表进行叠加和剪裁,利用分区视图的功能,能加快表的I/O读取时间(需要2块以上硬盘)   
  视图是用来   看的   . 存储过程是用来交互的   . 这就好比一个静的,一个是   动的. 如果需要交互,当然是存储过程.如果仅仅是显示结果,那就用视图. 如果一定要比较同时是显示的结果,我记得有人说存储过程比试图快.但是视图维护更简单和灵活. 所以一般来讲:静的用视图   ,动的用存储过程.   
 视图只不过是存储在sql   server上的select语句罢了,当对视图请求时,sql   server会像执行一句普通的select语句那样的执行视图的select语句,它的性能并不像人们想象得那么出色。 而存储过程在编译后可以生成执行计划,这使得每次执行存储过程的时候效率将会更高,这是存储过程,另外台提交参数的时候,使用存储过程将会减少网络带宽流量,这是存储过程相对于普通的sql语句在性能上的最大的优势。 当然,从sql   server2000/7.0版本开始普通的sql查询在执行后,它的执行计划将会被放入缓存中,以便下次执行的时候能够获得较高的性能,但是很久不使用的查询计划将会从高速缓存清理出去。 总之,从性能上来说存储过程要优于视图。    

 存储过程

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

函数

l过程不必返回值l函数必须返回值l过程可以有OUT和IN OUT参数l函数只能有IN参数l过程不可以在SQL语句中调用l某些函数可以在SQL语句中调用

视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图


视图的查询条件是固定的,而存储过程可以通过给里面的参数赋值达到查询条件灵活变化的效果。


视图,在你每次查询时,都需要重新生成执行计划。而存储过程第一次编译完成后。以后就不需要再次编译了,速度比视图快  视图是一个综合一个或多个表组成的虚拟表,  存储过程是一个程序


这么说吧,过程相当于一个暗箱,内部可以做一些实际的操作,视图相当于一个窗口,方便你看,避免你东张西望


视图是由查询结果生成的虚拟的表。  我们可以对视图进行增加、修改和更新的操作  只是要有一定的限制   只要保证视图中所涉及的字段全部来源于一个表,  而且不能使用派生字段,一定是表中的原有字段  还有一点就是,没有出现在视图的其它字段,在创建表时  一定是允许空,这样我们就可以操作视图来影响原表啦。  我们可以把视图当做表来操作,  而存储过程不是表,我们不可以直接操作它,只可以查询。  在某种程度上,存储过程的执行速度要比普通的检索语句要快。  而且比较灵活,如果同等条件都可以用视图和存储过程来实现的话,  我选择存储过程  至于安全性吗,我觉得存储过程的安全性要高于视图。


两个完全不同的概念:  视图是从一个或多个基本表中导出来的表。  存储过程则是一段程序,是一组编译好的T_SQL代码


没啥比较性,视图类似于表啊,存储过程是属于方法


视图相当于虚拟表,存储过程可以处理一些业务逻辑



版权声明:本文为running_nz原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。