精华内容
下载资源
问答
  • 存储过程优点主要包括以下几点:第一点,性能提高。这是相对于不适用存储过程来说的,因为存储过程在创建的时候就编译好了,而后每次调用都不会再次编译,这相对于传统的SQL语句中每次调用都需要编译的情况来说,...

    存储过程的优点主要包括以下几点:

    第一点,性能提高。这是相对于不适用存储过程来说的,因为存储过程在创建的时候就编译好了,而后每次调用都不会再次编译,这相对于传统的SQL语句中每次调用都需要编译的情况来说,性能提高了何止一点两点。

    第二点,重用性强。存储过程使用名字即可使用,也就是传说中的“一次编写,随便调用”。这样不仅提高了重用性,还减少了出错的几率,也会加快开发速度,可以说是一件非常好的事情。

    第三点,减少网络流量。这一点对于小数据量的时候一般体现不出来,那么当数据量较大的时候,我们会发现由于使用存储过程比使用SQL语句会使用更少的字节数,因此它会降低传输的数据量。

    第四点,安全性提高。由于存储过程也可以使用权限控制,而且参数化的存储过程可以防止SQL注入攻击,也在一定程度上保证了安全性。

    第五点,灵活性增强。由于存储过程可以使用流程控制语句来编写,导致它有着很强的灵活性,可以根据实际情况来执行不同的SQL语句,而不是只能单纯的简单的执行命令。而且该存储过程还可以修改其逻辑而其他部分不用改变,也就是说,我们的表的结构改变了,我们只需要修改相应的存储过程即可,我们的Java或者PHP等程序不需要改变。

    第六点,当业务复杂的时候,存储过程会减少工作量,为什么呢,原因很简单,如果我们不适用存储过程,那么就会导致我们先从数据库中取出来数据,然后经过计算,再放入到数据库中,这个开销还是蛮大的,这中间的开销包括我们的Java或者PHP程序连接数据库获取结果集等若干操作,如果我们使用了存储过程,那么就没有那么多事了,直接在mysql内就搞定了。

    缺点:

    第一点,工作量加大。这里并不是说我们把程序该做的事让mysql去做不好,而是mysql本身并没有很像样的IDE来开发我们的存储过程,我们很多时候还是需要手写,这样就会比较麻烦,而且存储过程的调试也是一个问题,没有很像样的调试工具。

    第二点,优势不明显。运行速度上,对于大多数的语句缓存来说,编译sql的时间开销并不是很大,但是执行存储过程还需要检查权限等一些其他开销,所以,对于很简单的sql,存储过程并没有很大优势。

    第三点,赘余功能。对web程序来说,我们连接数据库的用户往往就是同一个,不需要太多的安全机制,所以,对于安全上的检测看上去很好,实际上优点多余。

    第四点,小型程序完全无用。对于小型web应用来说,它的使用价值就更小了,反而会拖累开发进度。

    第五点,对于运维上。当我们的程序要更换数据库的时候,它的移植性相对于不适用存储过程要复杂一些,对于维护上,由于是在db端,因此比server端的程序更好维护一些。

    展开全文
  • 存储过程就是一些编译好了...存储过程详解参考:http://www..com/knowledgesea/archive/2013/01/02/2841588.html优点存储过程是一个预编译的代码块,执行效率比较高存储过程在服务器端运行,减少客户端的压力允许...

    存储过程

    就是一些编译好了的SQL语句,这些SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后给这些代码块取一个名字,在用到这个功能的时候调用即可。

    存储过程详解参考:

    http://www..com/knowledgesea/archive/2013/01/02/2841588.html

    优点:

    存储过程是一个预编译的代码块,执行效率比较高

    存储过程在服务器端运行,减少客户端的压力

    允许模块化程序设计,只需要创建一次过程,以后在程序中就可以调用该过程任意次,类似方法的复用

    一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率

    可以一定程度上确保数据安全

    缺点:

    调试麻烦(没有像开发程序那样容易)

    可移植性不灵活(因为存储过程依赖于具体的数据库)

    MySQL中的存储引擎

    有两个常用存储引擎:MyISAM与InnoDB(MySQL默认的)

    MyISAM与InnoDB的区别:

    1、事务处理方面:

    MyISAM强调性能,查询速度比InnoDB快,但不提供事务支持;

    InnoDB提供事务支持。

    2、外键:

    MyISAM不支持外键;InnoDB支持外键。

    3、锁:

    MyISAM只支持表级锁;InnoDB支持表级锁与行级锁,默认是行级锁。

    因此InnoDB适合插入和更新比较多的情况,MyISAM适合频繁查询的情况。

    4、全文索引:

    MyISAM支持全文索引,InnoDB不支持全文索引(从MySQL5.6版本开始提供对全文索引的支持)

    5、表主键:

    MyISAM:允许没有主键的表存在

    InnoDB:如果没有设定主键,就会自动生成一个6字节的主键(用户不可见)

    6、表的具体行数:

    MyISAM:select count(*) from table,MyISAM只需要读出保存好的行数,因为MyISAM内置了一个计数器。

    InnoDB:不保存具体的行数,执行select count(*) from table时,是扫描一遍整个表来计算有多少行。

    问题:如果一个表中有自增主键ID,当insert17条记录后,删除第15,16,17条记录,再重启MySQL,再insert一条记录,这条记录的ID是18还是15?

    答:如果是MyISAM,ID是18.因为MyISAM会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失。

    若果是InnoDB,ID是15.因为InnoDB只会把自增主键的最大ID记录到内存中,重启数据库会导致最大ID丢失。

    展开全文
  • 匿名用户1级2016-09-21 回答mysql存储过程的基本用法有哪些在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在了 ...

    匿名用户

    1级

    2016-09-21 回答

    mysql存储过程的基本用法有哪些

    在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。

    特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。

    一、MySQL 创建存储过程

    "pr_add" 是个简单的 MySQL 存储过程,这个MySQL 存储过程有两个 int 类型的输入参数 "a"、"b",返回这两个参数的和。

    复制代码 代码如下:

    drop procedure if exists pr_add;

    计算两个数之和

    复制代码 代码如下:

    create procedure pr_add

    (

    a int,

    b int

    )

    begin

    declare c int;

    if a is null then

    set a = 0;

    end if;

    if b is null then

    set b = 0;

    end if;

    set c = a + b;

    select c as sum;

    /*

    return c;

    不能在 MySQL 存储过程中使用。return 只能出现在函数中。

    */

    end;

    二、调用 MySQL 存储过程

    复制代码 代码如下:

    call pr_add(10, 20);

    执行 MySQL 存储过程,存储过程参数为 MySQL 用户变量。

    复制代码 代码如下:

    set @a = 10;

    set @b = 20;

    call pr_add(@a, @b);

    三、MySQL 存储过程特点

    创建 MySQL 存储过程的简单语法为:

    复制代码 代码如下:

    create procedure 存储过程名字()

    (

    [in|out|inout] 参数 datatype

    )

    begin

    MySQL 语句;

    end;

    MySQL 存储过程参数如果不显式指定"in"、"out"、"inout",则默认为"in"。习惯上,对于是"in" 的参数,我们都不会显式指定。

    1. MySQL 存储过程名字后面的"()"是必须的,即使没有一个参数,也需要"()"

    2. MySQL 存储过程参数,不能在参数名称前加"@",如:"@a int"。下面的创建存储过程语法在 MySQL 中是错误的(在 SQL Server 中是正确的)。 MySQL 存储过程中的变量,不需要在变量名字前加"@",虽然 MySQL 客户端用户变量要加个"@"。

    复制代码 代码如下:

    create procedure pr_add

    (

    @a int, -- 错误

    b int -- 正确

    )

    3. MySQL 存储过程的参数不能指定默认值。

    4. MySQL 存储过程不需要在 procedure body 前面加 "as"。而 SQL Server 存储过程必须加 "as" 关键字。

    复制代码 代码如下:

    create procedure pr_add

    (

    a int,

    b int

    )

    as -- 错误,MySQL 不需要 "as"

    begin

    mysql statement ...;

    end;

    5. 如果 MySQL 存储过程中包含多条 MySQL 语句,则需要 begin end 关键字。

    复制代码 代码如下:

    create procedure pr_add

    (

    a int,

    b int

    )

    begin

    mysql statement 1 ...;

    mysql statement 2 ...;

    end;

    6. MySQL 存储过程中的每条语句的末尾,都要加上分号 ";"

    复制代码 代码如下:

    ...

    declare c int;

    if a is null then

    set a = 0;

    end if;

    ...

    end;

    7. MySQL 存储过程中的注释。

    复制代码 代码如下:

    /*

    这是个

    多行 MySQL 注释。

    */

    declare c int; -- 这是单行 MySQL 注释 (注意 -- 后至少要有一个空格)

    if a is null then # 这也是个单行 MySQL 注释

    set a = 0;

    end if;

    展开全文
  • 存储过程是SQL语言中的一种,在大型的数据库系统中,一系列为了达到某种特定功能的SQL语句。经过重新编译之后存储在数据库中,再通过指定的名字,并且提供参数来执行它。一、SQL Server 存储过程Transact-SQL非常...

    存储过程是SQL语言中的一种,在大型的数据库系统中,一系列为了达到某种特定功能的SQL语句。经过重新编译之后存储在数据库中,再通过指定的名字,并且提供参数来执行它。

    一、SQL Server 存储过程

    Transact-SQL非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。

    二、存储过程的概念

    存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。

    由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、简单网络负担。

    三、存储过程的优点

    1. 存储过程允许标准组件式编程存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。

    2. 存储过程能够实现较快的执行速度如果某一操作包含大量的T-SQL语句代码,分别被多次执行,那么存储过程要比批处理的执行速度快得多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化并给出最终被存在系统表中的存储计划。而批处理的T-SQL语句每次运行都需要预编译和优化,所以速度就要慢一些。

    fe76d4039cb25aa0286e6baea3f68a34.png3. 存储过程减轻网络流量对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。从而减轻了网络流量,降低了网络负载。

    4. 存储过程可被作为一种安全机制来充分利用系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全。

    四、系统存储过程系统存储过程是系统创建的存储过程,目的在于能够方便的从系统表中查询信息或完成与更新数据库表相关的管理任务或其他的系统管理任务。系统存储过程主要存储在master数据库中,以“sp”下划线开头的存储过程。尽管这些系统存储过程在master数据库中,但我们在其他数据库还是可以调用系统存储过程。有一些系统存储过程会在创建新的数据库的时候被自动创建在当前数据库中。

    展开全文
  • 我的观点:这么设计的目的并不能方便随时修改业务逻辑,只是方便熟悉存储过程的开发人员,能够随时修改业务逻辑。对于后续的业务逻辑越趋于复杂,修改就越困难,存储过程中的重复代码就越多;重复代码越多,系统的坏...
  • 总结下使用存储过程的优缺点一、存储过程优点存储过程是一组预先创建并用指定的名称存储在数据库服务器上的 SQL 语句,将使用比较频繁或者比较复杂的操作,预先用 SQL 语句写好并存储起来,以后当需要数据库提供相同...
  • 存储设备有哪些

    千次阅读 2021-06-30 02:59:39
    描述数据存储设备有哪些1、移动硬盘移动硬盘是以硬盘为存储介质,与计算机之间交换大容量数据、强调便携性的存储产品。多采用USB、IEEE1394等传输速度较快的接口,可以以较高的速度与系统进行数据传输。2、U盘U盘,...
  • 我们在报表开发中经常会使用存储过程准备数据,存储过程支持分步计算,可以实现非常复杂的计算逻辑,为报表开发带来便利。所以,报表开发中这样的存储过程并不少见: 3008 行,141KB 的存储过程,会给报表开发带来...
  • mysql存储过程 delimiter

    2021-01-20 20:31:46
    mysql数据库存储过程存储过程简介存储过程可以简单理解为一条或者多条sql语句的集合,存储过程用来实现将一组关于表的操作的sql语句当作一个整体来执行,存储过程在实际应用中最主要的特点的事提高执行效率以及sql...
  • mysql储存过程是什么

    2021-02-05 20:00:41
    但是在数据库的实际操作中,经常会一个完整的操作需要多条 SQL 语句处理多个表才能...存储过程是数据库存储的一个重要的功能,但是 MySQL 在 5.0 以前并不支持存储过程,这使得 MySQL 在应用上大打折扣。好在 My...
  • mysql存储过程

    2021-04-28 08:53:44
    SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程参数)来调用执行它。存储过程是可...
  • MySQL存储过程

    2021-01-19 13:00:08
    一、存储过程概述存储过程是一组为了完成特定功能的SQL语句集合。使用存储过程的目的就是将常用或复杂的工作预先用SQL语句写好并用一个指定名称存储起来,这个过程编译和优化后存储在数据库服务器中,因此称为存储...
  • mysql 存储过程

    2021-02-02 07:53:14
    什么是存储过程简单的说,就是一组SQL语句集,功能强大,可以实现...有哪些特性输入输出参数,可以声明变量,if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;函数的普遍特性:模块...
  • MySQL储存过程详解

    2021-03-03 19:49:41
    然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程参数)来调用执行它。一个存储过程是一个可编程的...
  • mysql之存储过程

    2021-01-27 14:09:43
    存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql存储过程优点#1. 用于替代程序写的SQL语句,实现程序与sql解耦#2. 可以通过直接修改存储过程的方式修改...
  • oracle数据库中查看系统存储过程的方法复制代码 代码如下:select line,text from dba_source where name='PRO_E_F_ORDER_STAT';select object_name,object_type from dba_objects where object_type='PROCEDURE';...
  • mysql call 存储过程

    2021-01-18 22:27:53
    PHP调用MYSQL存储过程实例PHP调用MYSQL存储过程实例标签:mysql存储phpsqlquerycmd2010-09-26 11:1011552人阅读评论(3)收藏举报实例一:无参的...文章thinkyoung2016-01-20544浏览量存储过程实例存储过程:是为了...
  • mysql中的存储过程

    2021-03-04 01:58:45
    存储过程简介SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程参数)来调用执行它。...
  • mysql 存储过程 声明

    2021-01-18 23:47:37
    MySQL 5之存储过程载记一:实现过程(1)MySQL存储过程是在“命令提示符”下创建的,所以首先应该打开“命令提示符”窗口。(2)进入“命令提示符”窗口后,首先应该登录MySQL数据库服务器,在“命令提示符”下输入如下...
  • mysql 存储过程 执行

    2021-01-21 08:46:19
    mysql存储过程mysql存储过程存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程参数)来执行它...
  • mysql存储过程 repeat

    2021-01-19 02:47:57
    MySQL利用存储过程清除所有表中的所有记录MySQL利用存储过程清除所有表中的所有记录在使用MySQL过程中,难免会出现一些测试数据,然而这些测试数据在真正部署运行的时候,通常要被清楚掉,并且自增长的字段要回复...
  • MySql中创建存储过程

    2021-02-02 05:47:12
    存储过程优点有一箩筐。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。特别是业务逻辑复杂的时候,一大堆的SQL ...
  • 一、MYSQL储存过程简介:储存过程是一个可编程的函数,它在中创建并保存。它可以SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。中...
  • 用户通过指定存储过程的名字并给出参数(如果该存储过程参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程存储过程是由流控制和SQL 语句书写的过程,这个...
  • 存储过程(stored Procedure):是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并提供参数(如果参数的话)来执行它。数据库中的一个重要学习对象。存储过程优点:1.速度快...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 744,602
精华内容 297,840
关键字:

存储过程的优点有哪些