mysql笔记:17. 数据库编程

文章目录

  • 一、存储过程
    • [1. 创建存储过程](#1. 创建存储过程)
    • [2. 查看存储过程](#2. 查看存储过程)
    • [3. 调用存储过程](#3. 调用存储过程)
    • [4. 修改存储过程](#4. 修改存储过程)
    • [5. 删除存储过程](#5. 删除存储过程)
  • 二、函数
    • [1. 创建自定义函数](#1. 创建自定义函数)
    • [2. 查看自定义函数](#2. 查看自定义函数)
    • [3. 调用自定义函数](#3. 调用自定义函数)
    • [4. 删除自定义函数](#4. 删除自定义函数)

为了提高SQL语句的重用性,MySQL可以将频繁使用的业务逻辑封装成程序进行存储,这类程序包括存储过程、函数、触发器等。

一、存储过程

存储过程是一组可以完成特定功能的SQL语句集合,它可以将常用或复杂操作封装成一个代码块存储在数据库服务器中,以便重复使用,大大减少数据库开发人员的工作量。

1. 创建存储过程

基本语法:

SQL 复制代码
CREATE PROCEDURE pro_name([[IN | OUT | INOUT ] 参数名称 参数类型]) [characteristic ... ] routine_body

MySQL默认的语句结束符号为分号(;),而在创建存储过程时,存储过程体可能包含多条SQL语句,所以为避免分号与存储过程中SQL语句的结束符相冲突,需要使用DELIMITER改变存储过程的结束符。存储过程定义完毕后再恢复默认结束符。

SQL 复制代码
mysql> DELIMITER //

2. 查看存储过程

存储过程创建之后,可以使用SHOW PROCEDURE STATUS语句和SHOW CREATE PROCEDURE语句分别显示存储过程的状态信息和创建信息,也可以在数据库information_schema的Routines数据表中查询。

SQL 复制代码
mysql> SHOW PROCEDURE STATUS [LIKE 'pattern'];
mysql> SHOW CREATE PROCEDURE pro_name;

3. 调用存储过程

基本语法:

SQL 复制代码
mysql> CALL [dbname.]pro_name([实参列表]);

4. 修改存储过程

基本语法:

SQL 复制代码
mysql> ALTER PROCEDURE pro_name[characteristic ... ];

只能修改存储过程的特征值,不能修改存储过程的参数

5. 删除存储过程

基本语法:

SQL 复制代码
mysql> DROP PROCEDURE [IF EXISTS] pro_name;

二、函数

MySQL支持函数的使用,其中的函数分为两种:内置函数、自定义函数。自定义函数和内置函数性质相同,都用于实现某种功能。

1. 创建自定义函数

自定义函数和存储过程类似,都是存储在数据库中的一段SQL语句集合;区别在于存储过程没有直接返回值,主要用于执行操作,而自定义函数可以通过RETURN语句返回数据。创建自定义函数的基本语法:

SQL 复制代码
CREATE FUNCTION func_name([func_parameter[...]]) RETURNS type [characteristic ... ] Routine_body

2. 查看自定义函数

自定义函数创建之后,可以使用SHOW FUNCTION STATUS语句和SHOW CREATE FUNCTION语句分别显示存储过程的状态信息和创建信息,也可以在数据库information_schema的Routines数据表中查询。

SQL 复制代码
mysql> SHOW FUNCTION STATUS [LIKE 'pattern'];
mysql> SHOW CREATE FUNCTION func_name;

从语法来看,查看存储过程和自定义函数相似,只是使用的关键字不同。

3. 调用自定义函数

自定义函数的调用和MySQL内置函数的调用类似,基本语法:

SQL 复制代码
mysql> SELECT func_name(parameters) [, func_name(parameters) ... ];

4. 删除自定义函数

SQL 复制代码
mysql> DROP FUNCTION [IF EXISTS] func_name;
相关推荐
做梦敲代码23 分钟前
达梦数据库-读写分离集群部署
数据库·达梦数据库
苹果醋31 小时前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
小蜗牛慢慢爬行1 小时前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
hanbarger1 小时前
nosql,Redis,minio,elasticsearch
数据库·redis·nosql
微服务 spring cloud1 小时前
配置PostgreSQL用于集成测试的步骤
数据库·postgresql·集成测试
先睡2 小时前
MySQL的架构设计和设计模式
数据库·mysql·设计模式
弗罗里达老大爷2 小时前
Redis
数据库·redis·缓存
m0_748256782 小时前
WebGIS实战开源项目:智慧机场三维可视化(学习笔记)
笔记·学习·开源
红色的山茶花2 小时前
YOLOv9-0.1部分代码阅读笔记-loss.py
笔记