精华内容
下载资源
问答
  • 存储过程-04.存储过程和视图结合操作 资源多多只取三分
  • 存储过程和视图区别

    千次阅读 2019-07-04 12:30:23
    SQL里面不带参数的存储过程视图区别1、存储过程是程序化的sql可以实现一般sql不能实现的功能。 如:先检索一个表得到一些数据,经过一定的编辑后更新到另外一个表中、这就可以用不带参数的存储过程实现。 2、...
    SQL里面不带参数的存储过程与视图的区别
    1、存储过程是程序化的sql可以实现一般sql不能实现的功能。 如:先检索一个表得到一些数据,经过一定的编辑后更新到另外一个表中、这就可以用不带参数的存储过程实现。 2、视图是虚拟表,不存储数据,存储的是sql,检索他的时候实际上是执行定义它的sql语句。

    说明:从你的问题上可以看出,你使用存储过程仅仅是用它检索数据,所以你会产生这样的疑问,一定要记住,存储过程理解的简单一点就是“数据库中的程序”,
    可以在不需要外部程序(如C,java,vb等)的情况下,让数据库自己解决复杂的、用一般sql不能实现的功能,而视图则不然。

    视图和存储过程比是没什么意义的
    视图就是虚拟表,把视图和表比较还有点意思
    视图不占实际空间,可以对任意的表进行叠加和剪裁,利用分区视图的功能,能加快表的I/O读取时间(需要2块以上硬盘)

    视图只不过是存储在sql   server上的select语句罢了,当对视图请求时,sql   server会像执行一句普通的select语句那样的执行视图的select语句,它的性能并不像人们想象得那么出色。
    而存储过程在编译后可以生成执行计划,这使得每次执行存储过程的时候效率将会更高,这是存储过程,另外台提交参数的时候,使用存储过程将会减少网络带宽流量,这是存储过程相对于普通的sql语句在性能上的最大的优势。

    视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是 SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所使用的方法,在 Transact-SQL 语句中通过引用视图名称来使用虚拟表。使用视图可以实现下列任一或所有功能:
       将用户限定在表中的特定行上。
    例如,只允许雇员看见工作跟踪表内记录其工作的行。
       将用户限定在特定列上。
    例如,对于那些不负责处理工资单的雇员,只允许他们看见雇员表中的姓名列、办公室列、工作电话列和部门列,而不能看见任何包含工资信息或个人信息的列。
       将多个表中的列联接起来,使它们看起来象一个表。
       聚合信息而非提供详细信息。
    例如,显示一个列的和,或列的最大值和最小值。
    ------------------
       数据库中的索引与书籍中的索引类似。在一本书中,利用索引可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。
    ------------------

    存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、 有条件执行以及其它强大的编程功能。
    存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
    可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
      可以在单个存储过程中执行一系列 SQL 语句。
      可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
      存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。

    转载于:https://www.cnblogs.com/Eleanore/archive/2012/06/11/2545384.html

    展开全文
  • sqlserver存储过程和视图解密工具
  • 存储过程和视图

    2021-05-17 14:16:55
    存储过程 定义 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。 存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的...

    存储过程

    定义

    存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

    存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

    存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

    MySQL支持

    MySQL 5.0 版本开始支持存储过程。

    优点

    • 存储过程可封装,并隐藏复杂的商业逻辑。
    • 存储过程可以回传值,并可以接受参数。
    • 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。
    • 存储过程可以用在数据检验,强制实行商业逻辑等。

    缺点

    • 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。
    • 存储过程的性能调校与撰写,受限于各种数据库系统。

    创建存储过程

    DELIMITER [end_label]	--声明语句结束符
    
    CREATE
        [DEFINER = { user | CURRENT_USER }]	--存储过程使用者
     PROCEDURE sp_name ([proc_parameter[,...]])	--存储过程名
        [characteristic ...] routine_body
     
    proc_parameter:
        [ IN | OUT | INOUT ] param_name type	
        -- 参数列表
    	-- IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
    	-- OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
    	-- INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)
    	
    characteristic:	-- 变量声明
        COMMENT 'string'
      | LANGUAGE SQL
      | [NOT] DETERMINISTIC
      | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
      | SQL SECURITY { DEFINER | INVOKER }
     
    routine_body:	-- 程序体
      Valid SQL routine statement
     
    [begin_label:] BEGIN
      [statement_list]
        ……
    END [end_label]
    
    DELIMITER ;	--更改语句结束符为默认值
    

    运行存储过程

    call 存储过程名(参数)
    

    视图

    定义

    视图是一种虚拟的表。视图从数据库中的一个或多个表导出来的表。视图还可以从已经存在的视图的基础
    上定义。数据库中只存放了视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表中。使用
    视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中
    的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。

    作用

    视图是在原有的表或者视图的基础上重新定义的虚拟表,这可以从原有的表上选取对用户有用的信息。那
    些对用户没有用,或者用户没有权限了解的信息,都可以直接屏蔽掉。这样做既使应用简单化,也保证了
    系统的安全。视图起着类似于筛选的作用。

    视图的作用归纳为如下几点:

    1. 视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。
    2. 视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)
    3. 从而加强了安全性,使用户只能看到视图所显示的数据。
    4. 视图还可以被嵌套,一个视图中可以嵌套另一个视图。

    创建视图

    CREATE VIEW view_name AS
    SELECT column_name(s)
    FROM table_name
    WHERE condition
    

    更新视图

    CREATE OR REPLACE VIEW view_name AS
    SELECT column_name(s)
    FROM table_name
    WHERE condition
    

    删除视图

    DROP VIEW view_name
    
    展开全文
  • 存储过程创建视图

    2017-11-06 16:16:45
    存储过程创建视图存储过程创建视图存储过程创建视图存储过程创建视图存储过程创建视图
  • 一次性删除所有存储过程和视图.升级数据库必备
  • 要把视图看做是一张表,包含了一张表的部分数据或者多个表的综合数据,视图的使用普通表一样; 视图建立并存储在服务器,有效减少网络数据流量,提高安全性; 视图中不存放数据,数据依然存放在视图引用的原始...

    视图

    要把视图看做是一张表,包含了一张表的部分数据或者多个表的综合数据,视图的使用和普通表一样;

    视图建立并存储在服务器,有效减少网络数据流量,提高安全性;

    视图中不存放数据,数据依然存放在视图引用的原始数据表中;

    可以根据需求来提前创建不同的视图。

    企业管理器创建视图:

    T-SQL创建视图:

    复制代码
    USE DBName
    go
    IF EXISTS(SELECT * FROM sysobjects WHERE name=view_Name)
        DROP VIEW view_Name
    CREATE VIEW view_Name
        AS
            <SELECT语句>
    复制代码

    代码示例:

    存储过程

    啥是存储过程?

    就是事先存储好的SQL语句,放在数据库端,需要使用时直接调用存储过程就可以执行相应的SQL语句。存储过程可带参数,也可返回结果。

    存储过程有啥优势呢?

    执行速度更快;允许模块化设计;提高系统安全性;减少网络流量。

    传统SQL语句与存储过程执行效率的对比:

    跟视图有啥区别呢?

    视图仅仅用来查询,而存储过程可以用来增删查改;视图是数据库的一张虚拟表,可以像表一样使用,而存储过程本质来说还是在执行SQL语句。

    如何查看存储过程?

    存储过程分类:

    三种:系统存储过程、扩展存储过程、自定义存储过程

    系统存储过程:由“sp_"开头,由系统定义与维护,需要学会使用。

    扩展存储过程:“xp_”开头,以DLL形式单独存在,至今不知道有啥鸟用!

    自定义存储过程:根据需要自定义,类似C#里面的“方法”的存在。

    存储过程调用方法:

    EXECUTE    过程名 【参数】
    简写:EXEC    过程名 【参数】

    代码示例:

    重点!自定义存储过程!!!

    复制代码
    1 use DB
    2 go
    3 create procedure(缩写:proc) 存储过程名
    4                 @参数1  数据类型=默认值  OUTPUT
    5                 ……
    6                 @参数n   数据类型=默认值  OUTPUT    
    7 as
    8                  SQL语句
    9 go
    复制代码

    自定义存储过程的内容全在上面规范里面,其中:

    第3行,procedure可以缩写为proc;

    第4~6行的参数定义可有可无,若有,在调用存储过程时需要一起传递过来;默认值可有可无,若有,在调用存储过程时可以不传递参数值;OUTPUT关键字可有可无,若有在调用时需要有一个变量来接受它的返回值

     

    什么时候使用存储过程?

    当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;当在一个事务的完成需要很复杂的商业逻辑时(比如,对多个数据的操作,对多个状态的判断更改等)要考虑;还有就是比较复杂的统计和汇总也要考虑,但是过多的使用存储过程会降低系统的移植性。

     

     

    https://www.cnblogs.com/JustYong/p/5359689.html

    转载于:https://www.cnblogs.com/baili-luoyun/p/11052505.html

    展开全文
  • 存储过程和视图的应用

    千次阅读 热门讨论 2013-03-13 21:43:10
    一、存储过程  存储过程在SQL的世界中... 以前学习数据库的知识都是纯理论的东西,并没有对存储过程和视图有太深刻的理解,但是通过这次的机房重构使用了存储过程和视图,挺简单的。之前写过一篇博客是对存储过程

    一、存储过程

            存储过程在SQL的世界中扮演着一个举足轻重的角色,所谓存储过程,就是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过存储过程的名字并给出参数来执行它。

            以前学习数据库的知识都是纯理论的东西,并没有对存储过程和视图有太深刻的理解,但是通过这次的机房重构使用了存储过程和视图,挺简单的。之前写过一篇博客是对存储过程的一个总结:

    http://blog.csdn.net/liutengteng130/article/details/7740296  

     

    下面来说说具体的应用:

            机房收费系统中有一个注册卡号的,此时我不仅要往卡表中写信息,还要往学生信息表中写信息,充值表中还要写信息,需要往三个表中写信息,而且代码大多都是相同的内容,如果有主外键的话,肯定要按照主外键的顺序往表中写信息,否则肯定会出现很多让人头疼的问题。但是用上存储过程就会一下都会把三个表中的信息添加上,系统运行效率高,速度快,还不容易出现问题,大大节省了我们的工作效率。


    代码:

    USE [Charge_System]
    GO
    /****** Object:  StoredProcedure [dbo].[PROC_RegisterBLL]    Script Date: 03/14/2013 10:04:27 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER procedure[dbo].[PROC_RegisterBLL]
    --参数
    @studentID varchar(10),@studentName varchar(10),@sex varchar(10),@department varchar(10),
    @grade varchar(10),@studentClass varchar(10),@studentType char(10),@cardNo varchar(10),
    @cardCash numeric(18,1),@handlers varchar(10),@state varchar(10),@isCheck varchar(10),
    @cardDate varchar(10),@cardTime varchar(10),
    @reCharge numeric(18,1),@rechargeDate varchar(10),@rechargeTime varchar(10)
      
      as 
       insert into T_Student(studentID,studentName ,sex,department ,grade,studentClass ,studentType )values(@studentID,@studentName ,@sex,@department ,@grade,@studentClass ,@studentType )
      
       insert into T_Card (studentID,cardNo,cardCash,handlers,state,isCheck ,cardDate,cardTime ) values (@studentID,@cardNo,@cardCash,@handlers,@state,@isCheck ,@cardDate,@cardTime)
       
       insert into T_Recharge (cardNo,reCharge ,handlers,isCheck ,rechargeDate,rechargeTime ) values(@cardNo,@reCharge ,@handlers ,@isCheck,@rechargeDate ,@rechargeTime )
    


    这是有参数的存储过程,外界一定要给参数赋值,如下D层代码:

     ''' <summary>
        ''' 注册卡信息
        ''' </summary>
        ''' <param name="enCard">实体类</param>
        ''' <returns>返回Boolean类型,是否添加成功</returns>
        ''' <remarks>用存储过程注册,把卡表,学生信息表,充值表都写进去了</remarks>
        Public Function AddCard(enCard As CardEntity, enStudent As StudentEntity, enRecharge As RechargeEntity) As Boolean Implements ICard.AddCard
    
            Dim strSQL As String   'Sql字符串
            '参数集合
            Dim param As SqlParameter()
            param = New SqlParameter() {
                                        New SqlParameter("@studentID", enCard.studentID),
                                        New SqlParameter("@cardNo", enCard.cardNo),
                                       New SqlParameter("@cardCash", enCard.cardCash),
                                       New SqlParameter("@handlers", enCard.handlers),
                                       New SqlParameter("@state", enCard.state),
                                       New SqlParameter("@isCheck", enCard.isCheck),
                                       New SqlParameter("@cardDate", enCard.cardDate),
                                        New SqlParameter("@cardTime", enCard.cardTime),
                                        New SqlParameter("@studentName", enStudent.studentName),
                                        New SqlParameter("@sex", enStudent.sex),
                                        New SqlParameter("@department", enStudent.department),
                                        New SqlParameter("@grade", enStudent.grade),
                                        New SqlParameter("@studentClass", enStudent.studentClass),
                                        New SqlParameter("@studentType", enStudent.studentType),
                                        New SqlParameter("@reCharge", enRecharge.reCharge),
                                        New SqlParameter("@rechargeDate", enRecharge.rechargeDate),
                                        New SqlParameter("@rechargeTime", enRecharge.rechargeTime)
                                       }
    
            '增加数据语句
            strSQL = "PROC_RegisterBLL"
    
    
            '用Sqlhelper类
    
            Return SqlHelper.DBSqlhelper.ExccuteNoQuery(strSQL, CommandType.StoredProcedure, param)
    
    
        End Function
    这样就可以把参数传到存储过程中。


    存储过程的优点:存储过程是模块化的,从维护的角度来说是一件好事。

                                      存储过程是可调的,还可以进行修改。

                                      存储过程抽象或者隔离了客户端与服务器端的函数。

    二、视图

         视图是一个虚拟表,其内容由查询定义.与真实的表一样,视图包含一系列带有名称的列和行数据.行和列在引用视图时动态生成.视图类似于筛选.



    SELECT     dbo.T_Student.*, dbo.T_Card.cardNo, dbo.T_Card.cardCash, dbo.T_Card.state
    FROM         dbo.T_Card INNER JOIN
                          dbo.T_Student ON dbo.T_Card.studentID = dbo.T_Student.studentID


    这就是一个简单的视图。

    使用视图的好处:

          视图隐藏了底层的表结构,简化了数据访问操作,大大加强了安全性,用户只能看到视图提供的数据

          方便权限管理,让用户对视图有权限而不是对底层表有权限进一步加强了安全性.

          视图提供了一个用户访问的接口,当底层表改变后,改变视图的语句来进行适应,是已经建立在这个视图上的客户端程序不受影响.


    视图分为普通视图,索引视图,分割视图.

         普通视图由Select FROM组成,并不实际存储数据.

         索引视图是视图加聚集索引.索引视图会将数据物理存在数据库中,索引视图所存的数据和索引视图中所涉及的底层表保持同步.索引视图可以看做是一个和表等效的对象.

         分割视图返回的数据由几个平行表进行UNION连接。将几个由不同数据源或者相同数据源获得的平行数据集进行连接所获得的。


        视图还可以放在存储过程中使用,总之使用非常灵活。从各种不同的角度去分析问题,解决问题,找出更方便快捷的方法,学以致用。


    展开全文
  • 存储过程视图区别

    2013-07-10 11:47:00
    存储过程 存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由...
  • 数据库中存储过程和视图区别

    千次阅读 2011-07-21 10:02:35
    然后面试官又问我,那写存储过程一样可以实现,这两者有什么样的区别呢?我一时没反映过来,其实用存储过程确实可以实现视图的功能,但他有一此是视图无法实现的。比如逻辑处理,输入输出等。但具体我也不是
  • SQL存储过程和视图

    2014-02-11 16:29:51
    存储过程用于银行转账等复杂逻辑中, 视图在不同数据库实现方式不同,oracle提供物化视图,mysql只是虚表,不存储真实数据
  • 存储过程视图

    千次阅读 热门讨论 2015-12-27 20:28:38
    那时候我们已经掌握了创建存储过程和视图的基本语句,这在机房重构的过程中扮演了不可缺少的角色。 存储过程 一.存储过程的好处  存储过程是在大型数据库系统中,一组为了完成特定功能的SQL语句集。——百度...
  • 该工具软件可以搜索SQL Server 2012数据库中存储过程以及视图的名称定义内容中的关键字,并可以复制及保存找到的存储过程和视图的定义内容。有助于新接手系统的软件工程师研究已有系统。
  • 数据库索引,存储过程视图,事务 数据库索引,存储过程视图,事务数据库索引,存储过程视图,事务
  • 通过VB.net版机房收费系统,在重构的使用过程中对存储过程和视图的本质进行挖掘。
  • sql中存储过程和视图、函数的区别

    千次阅读 2015-03-13 10:20:34
     视图由SELECT查询语句所定义的一个虚拟表,是查看数据的一种非常有效的方式,同真实的数据表一样,视图也包含一系列带有名称的数据列数据行,但视图与数据表又有很大的不同,视图中的数据并不真实的存在于数据库...
  • 存储过程视图,触发器函数中查找文本。
  • sql server查看有哪些存储过程和视图的方法 select * from sys.sysobjects where type='p' //存储过程 select * from sys.sysobjects where type='v' //视图 sp_helptext procName //查看存储过程结构 sp_help...
  • 1.什么是存储过程,有哪些优缺点? 存储过程是在大型数据库中,一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译之后永久生效,用户通过去指定存储过程的名字并给出参数来执行它。 优点: 可以...
  • sybaseiq 创建 存储过程视图 ,触发器等语法大全
  • 绿色版查看sql加密存储过程视图等工具
  • 2,存储过程和存储函数的区别 存储在数据库中供所有用户程序调用的子程序叫做存储过程和存储函数 区别:存储函数可以通过return 语句来返回一个值,如果有一个返回值就用存储函数,么有返回值或者有多个返回值用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 278,277
精华内容 111,310
关键字:

存储过程和视图的区别