MySQL入门之存储过程与存储函数

原创 2017年07月22日 00:03:25

-------------------------------------------------------------------------------------------------------------

教程大纲:

http://blog.csdn.net/qq78442761/article/details/76018310

-------------------------------------------------------------------------------------------------------------


存储过程

存储过程的特点:

1.可增强SQL语言的功能和灵活性

2.良好的封装性

3.高性能

4.可减少网络流量

5.存储过程可以作为一种安全机制来确保数据库的安全性和数据的完整性

创建存储过程

将mysql结束符修改为两个叹号再修改回来



给test_1中创建一个存储过程,用于实现给定表customers中一个cust_id 即可修改表中该客户的性别为一个指定的性别


注意:创建存储过程必须具有create routine权限

查看数据库中存在哪些存储过程



查看某个存储过程的具体信息



存储过程体

1.局部变量

a) 声明局部变量用于存储存储过程中的临时结果

b) 使用declare

c) 只存在于begin end 中

d) 必须在存储过程体的开头处声明

e) 用户变量要用@,用户变量存在于整个会话中

下面演示申请局部变量



Set语句

在存储变量中使用set语句为局部变量赋值,如下操作


Select  into 语句

把选定列的值直接存储到局部变量中

语法如下

Select col_name into var_name table_expr

1.col_name:指定列名

2.Var_name:用于指定要赋值的变量名

3.Table_expr:表示select语句中的from子句

4.返回结果只有一行数据

 

流程控制语句

1.条件判断语句 

if search_condition then statement_list

[elseif search_condition then statement_list]

[else statement_list]

End if

1.search_condition:用于指定判断的条件

2.Statement_list:用于包含了一条或多条的SQL语句

Case语句

Case case_value

When when_value then statement_list

[when when_value then statement_list]

[else statement_list]

End case

或者

Case

When search_condition then statement_list

[when search_condition then statement_list]

[else statement_list]

End else

一般使用第二种方法

 

循环语句

常用的循环语句有 while,repeat(复述),loop(环-跳转)

下面先介绍while语句

[begin_label:]while search_condition DO

Statement_list

End while[end_label]

1.首先判断search_condition是否为真 为真则循环

2.Begin_label和end_label是whlie语句的标注,名字必须相同并且成对出现

 

Repeat语句

[begin_label:]repeat

Statement_list

Until search_condition

End repeat[end_label]

1.repeat语句首先执行statement_list语句

2.Search_condition是否为真

3.可以使用begin_label和end_label进行标注

4.Repeat类似于do循环,先执行再判断

Loop语句

[begin_label:]loop

Statement_list

End loop[end_label]

1.可用begin_label和end_label进行标注

2.使用leave语句循环才退出

 

游标

1.游标是一个被select语句检索出来的集合

2.5.0之后的版本才会有

3.只用于存储过程

4.游标是结果,不是语句

下面说明语法

游标声明

1.declare cursor_name cursor for select_statement

2.Select_statement:指定一个select语句,其会返回多行数据,记住不能有into

打开游标

1.在5.5以后的版本中才有

2.Open cursor_name

读取游标

1. mysql5.5以后的版本才会有

2. Fetch cursor_name into var_name

3. Var_name:用于存放指定数据的变量名

关闭游标

1.在5.5之后的版本才有

2.Close cursor_name

3.如果没有明确关闭游标,mysql在end的时候会自动关闭

下面举一个例子

在test_1中创建一个存储过程,用于计算表customers1中的数据行的行数



调用存储过程sp_sumofrow进行调用再查看存储过程sp_sumofrow后的结果



调用存储过程

我们先创建一个存储过程



下面我们先查看一下customers1表




现在来调用并查看存储过程



修改存储过程

用alter procedure修改部分,但一般是先删除在创建

 

删除存储过程 





存储函数

1.与存储过程十分相似

2.不能拥有输出函数

3.可以直接调用,不需要call语句

4.必须包含一个return语句

下面来创建一个存储函数,给出id返回性别,无id的返回”没有改客户“



下面来调用存储函数和删除存储函数






版权声明:本文为博主原创文章,未经博主允许不得转载。

MYSQL存储过程和存储函数入门

一、MYSQL储存过程简介: 储存过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过...
  • ch18255112191
  • ch18255112191
  • 2015年09月08日 17:43
  • 6352

MySQL---数据库从入门走向大神系列(五)-存储过程

本篇博客讲解: 自动增长列、字段值唯一性约束、存储过程!自动增长列、字段值唯一性约束create table aa( id int auto_increment primary key, ...
  • qq_26525215
  • qq_26525215
  • 2016年08月08日 00:55
  • 6528

MySQL 存储过程和函数

MySQL 存储过程和函数 一、实验介绍 1.1 实验内容 本实验中将学习并实践 MySQL 中的存储过程和函数的创建及使用方法。 1.2 实验知识点 存储过程函数 ...
  • jijerry
  • jijerry
  • 2017年04月28日 12:54
  • 756

MySQL 存储过程和存储函数示例

以下示例主要用于个人温习使用,因为长时间不谢存储过程或函数自己很容易忘记。     存储函数     1、ZhangFun1 CREATE DEFINER=`wpms_test`@`%` FUNCTI...
  • woshizhangliang999
  • woshizhangliang999
  • 2016年03月24日 16:06
  • 2080

MySQL——存储过程和函数使用总结

什么是存储过程和函数 存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的...
  • Goskalrie
  • Goskalrie
  • 2016年11月16日 09:43
  • 1587

MySQL存储过程和函数的区别与优缺点

为什么要使用存储过程和函数 数据库对象存储过程和函数,是用来实现一组关于表操作的SQL语句代码当做一个整体来执行。一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面的SQL语句来执行结果有选...
  • qq_36952611
  • qq_36952611
  • 2017年07月02日 11:17
  • 750

MySQL 的存储过程 procedure 与 函数 function 的区别和使用方法

存储过程与函数的区别  本质上没区别,执行的本质都一样。   只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。     函数是可以嵌入在sql中使用的,可以在select中调用,而存...
  • xlxxcc
  • xlxxcc
  • 2016年09月09日 13:46
  • 7781

MySQL基础笔记(六) 存储过程与函数

写在开头:本文所有的示例都是基于workers表,表中保存了某公司的员工姓名、性别、工资、年龄和居住城市,如下:+----+-----------+--------+--------+------+-...
  • lisong694767315
  • lisong694767315
  • 2015年07月02日 23:22
  • 2048

MYSQL存储过程入门1、语法以及in,out区别

1.什么是存储过程? 其实存储过程就是预编译了的SQL语句。 2.优点: (1)提速: 只需要经过一次预编译,以后就可以直接调用该存储过程。如若有数百次的SQL语句执行,存储过程更快速,因为其经...
  • yanjiewen1
  • yanjiewen1
  • 2015年06月04日 14:31
  • 548

mysql写存储过程的一些注意事项以及mysql的一些函数

存储过程 drop procedure if exists proll; DELIMITER ;; create procedure proll(curDate varchar(20)) beg...
  • fuck487
  • fuck487
  • 2017年07月25日 18:51
  • 294
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL入门之存储过程与存储函数
举报原因:
原因补充:

(最多只允许输入30个字)