mysql存储过程与函数学习与实践方式

 更新时间:2017年12月08日 10:14:51   作者:WalkerShen  
下面小编就为大家分享一篇mysql存储过程与函数学习与实践方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

什么是存储过程?

存储过程是一个预编译的SQL语句,

优点是允许模块化的设计,就是说只需要创建一次,以后在该程序中就可以调用多次。

如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。

其实就是跟编程语言一样,编写一个方法,然后可以进行复用的意思,例如可以编写一个根据名字查询学生数据的方法,然后就不需要每次都去写了,使用的时候也方便很多

有哪些优缺点?

优点

  • 1)存储过程是预编译过的,执行效率高。
  • 2)存储过程的代码直接存放于数据库中,通过存储过程名直接调用,减少网络通讯。
  • 3)安全性高,执行存储过程需要有一定权限的用户。
  • 4)存储过程可以重复使用,减少数据库开发人员的工作量。

缺点

  • 1)调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。
  • 2)移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。
  • 3)重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。
  • 4)如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。

关键语法

声明语句结束符,可以自定义:
DELIMITER $$ 或 DELIMITER //

声明存储过程:
CREATE PROCEDURE demo_in_parameter(IN p_in int)  

存储过程开始和结束符号:
BEGIN .... END    

变量赋值:
SET @p_in=1  

变量定义:
DECLARE l_int int unsigned default 4000000; 

创建mysql存储过程、存储函数:
create procedure 存储过程名(参数)

存储过程体:
create function 存储函数名(参数)

使用案例

创建一个存储过程,可以根据学生的名字去查询学生的数据

1、创建表

CREATE TABLE `student` (
  `id` varchar(64) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `class_id` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、创建存储过程|函数

# 函数定义开头
delimiter $$
# create procedure 函数名(in|out|input 参数名 参数类型)
# 参数类型 如果是varchar的话要表明长度,如果是int的话就不需要
create procedure select_student(in s_name varchar(32))
# begin和end之前写sql语句
begin
	select * from student s
	where s.name=s_name;
end
# 使用$$代表函数结束
$$

3、测试

# 先插入数据
insert into student(id,name,class_id) values(1,"walker","11")

# 设置变量,调用函数
set @s_name="walker";
call select_student(@s_name)

4、查询结果

1    walker    11

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL修改存储过程的详细步骤

    MySQL修改存储过程的详细步骤

    这篇文章主要给大家介绍了关于MySQL修改存储过程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL中使用表别名与字段别名的基本教程

    MySQL中使用表别名与字段别名的基本教程

    这篇文章主要介绍了MySQL中使用表别名与字段别名的基本教程,利用SELECT语句和AS子句进行取别名的操作,需要的朋友可以参考下
    2015-12-12
  • mysql数据库基础知识点与操作小结

    mysql数据库基础知识点与操作小结

    这篇文章主要介绍了mysql数据库基础知识点与操作,总结分析了mysql数据库修改数据表、增删改查及数据库函数基本功能,需要的朋友可以参考下
    2020-01-01
  • MySQL中符号@的作用

    MySQL中符号@的作用

    本文主要介绍了MySQL中符号@的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • mysql数据库数据批量插入的实现

    mysql数据库数据批量插入的实现

    本文介绍了在MySQL数据库中进行数据批量插入和性能测试的方法,包括使用Navicat批量插入数据、编写SQL测试、索引的创建和使用、查询测试以及提升SQL性能的优化方法,感兴趣的可以参考一下
    2024-11-11
  • MySQL数据库中的安全设置方案

    MySQL数据库中的安全设置方案

    MySQL 是一个真正的多用户、多线程SQL数据库服务器,它是一个客户机/服务器结构的实现。MySQL是现在流行的关系数据库中其中的一种,相比其它的数据库管理系统(DBMS)来说,MySQL具有小巧、功能齐全、查询迅捷等优点。MySQL 主要目标是快速、健壮和易用。
    2015-04-04
  • MySQL 元数据锁及问题排查的解决

    MySQL 元数据锁及问题排查的解决

    MySQL中的元数据锁主要用于管理并发操作下的数据字典一致性,本文主要介绍了MySQL 元数据锁及问题排查的解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • 解压版MYSQL安装及遇到的错误及解决方法

    解压版MYSQL安装及遇到的错误及解决方法

    这篇文章主要介绍了解压版MYSQL安装及遇到的错误及解决方法,需要的朋友可以参考下
    2018-11-11
  • MySQL root密码忘记后更优雅的解决方法

    MySQL root密码忘记后更优雅的解决方法

    这篇文章主要给大家介绍了关于MySQL root密码忘记后更优雅的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • 连接mysql报错——没有设置“usessl=false”的问题

    连接mysql报错——没有设置“usessl=false”的问题

    这篇文章主要介绍了连接mysql报错——没有设置“usessl=false”的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08

最新评论