15_MySQL中的变量与函数

本文介绍了MySQL中的变量,包括系统变量(全局变量、会话变量)、自定义变量(用户变量、局部变量)及其用法。同时详细讲解了游标的概念和使用方法,以及函数的创建、调用、查看和删除,强调了函数与存储过程的区别。
摘要由CSDN通过智能技术生成

0. 概述

存储过程和函数是 事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。

​ 即可以在数据库中书写存储过程与函数,使用JDBC时就可以直接调用这俩者,而不用再使用一条条的SQL语句增加服务器与数据库 的传输

​ 存储过程和函数的区别在于函数必须有返回值,而存储过程没有。

​ 函数 : 是一个有返回值的过程

​ 过程 : 是一个没有返回值的函数

1. 变量

在MySQL中变量分为系统变量和自定义变量,它们又有划分:

  • 系统变量
    • 全局变量
    • 会话变量
  • 自定义变量
    • 用户变量
    • 局部变量

1.1 系统变量

系统变量就是由MySQL系统提供的变量,不属于用户定义,属于服务器层面。

注意:全局变量需要添加GLOBAL关键字,会话变量需要添加SESSION关键字,而如果不写关键字,那么默认是会话级变量。

系统变量使用的基本语法如下:

-- 查看所有系统变量
SHOW GLOBAL|[SESSION] VARIABLES;# GLOBAL表示查看系统全局变量,SESSION表示查看系统会话变量,[SESSION]是一个可选项,如果不写则默认是会话变量
-- 查看满足部分条件的系统变量
SHOW GLOBAL|[SESSION] VARIABLES LIKE '%匹配字符%';# LIKE '%char'的语法与MySQL模糊查询语法一致,使用通配符匹配
-- 查看指定的系统变量的值
SELECT @@GLOBAL|[SESSION].系统变量名;# 例如:select @@global.hostname;#查看主机名
-- 为某个系统变量赋值
# 方式一
SET GLOBAL|[SESSION] 系统变量名=值;
# 方式二
SET @@GLOBAL|[SESSION].系统变量名=值;# 例如:set @@global.autocommit=1;

1.1.1全局变量

全局变量的作用域是针对于所有会话(连接)有效,但不能跨重启(即重启数据库服务)。所谓的会话就是一次连接

全局变量的常用语法如下:

-- 查看所有全局变量
SHOW GLOABL VARIABLES;# 必须写GLOBAL,表示全局
-- 查看满足条件的部分全局变量
SHOW GLOBAL VARIABLES LIKE '%匹配字符%';
-- 查看指定全局变量的值
SELECT @@GLOBAL.全局变量名;# 也可以添加上GLOBAL
-- 为某个全局变量赋值
SET @@GLOBAL.全局变量名='新值';
SET GLOBAL 全局变量名='新值';

1.1.2 会话变量

会话变量只针对于当前会话(连接)有效。会话变量的常用语法为:

-- 查看所有会话变量
SHOW [SESSION] VARIABLES;# 即使不写session,默认也是会话级变量
-- 查看满足条件的部分会话级变量
SHOW [SESSION] VARIABLES LIKE '%匹配字符%';
-- 查看指定会话变量的值
SELECT @@会话级变量名;# 默认就是会话级变量
SELECT @@SESSION.会话级变量名;# 也可以添加上SESSION
-- 为某个会话变量赋值
SET @@SESSION.会话级变量名='新值';
SET SESSION 会话级变量名='新值';

1.2 自定义变量

自定义变量顾名思义就是用户自己定义的变量,而不是由系统提供的。

使用自定义变量需要先声明再赋值,最后才能使用(查看、比较、运算等)。

1.2.1 用户变量

用户变量只针对于当前会话(连接)有效,作用域等同于会话变量。

用户变量的使用语法如下:

-- 第一步:声明并初始化用户变量,有下面三种方式
SET @变量名=值;# 方式一
SET @变量名:=值;# 方式二
SELECT @变量名:=值;# 方式三
-- 第二步:赋值(也可以更新变量的值),有两种方式
# 方式一(下面这三种都可以为变量赋值)
SET @变量名=值;# 方式一,也使用较多
SET @变量名:=值;# 方式一
SELECT @变量名:=值;# 方式一
# 方式二
在编程定义一个名为 `save_to_mysql` 的函数变量通常涉及到选择合适的编程语言和确定该函数变量在程序的具体用途。以下是一个简单的例子,展示了在Python语言如何定义一个名为 `save_to_mysql` 的函数,该函数用于将数据保存到MySQL数据库。 ```python import mysql.connector def save_to_mysql(data): """ 将传入的数据保存到MySQL数据库。 参数: data -- 要保存的数据,通常是一个字典或者模型实例。 返回: 如果保存成功返回True,否则返回False。 """ try: # 连接数据库 connection = mysql.connector.connect( host='localhost', # 数据库服务器地址 user='your_username', # 数据库用户名 passwd='your_password', # 数据库密码 database='your_database' # 数据库名 ) cursor = connection.cursor() # 插入数据的SQL语句,这假设有一个名为my_table的表 sql = "INSERT INTO my_table (column1, column2) VALUES (%s, %s)" # 执行SQL语句,传入数据 cursor.execute(sql, (data['column1'], data['column2'])) connection.commit() # 提交事务 return True except mysql.connector.Error as e: print(f"Error: {e}") return False finally: if connection.is_connected(): cursor.close() connection.close() # 使用示例 save_to_mysql({'column1': 'value1', 'column2': 'value2'}) ``` 在上面的例子,`save_to_mysql` 函数接受一个字典类型的数据参数,使用 `mysql.connector` 库连接到MySQL数据库,并将数据插入到指定的表。请注意,你需要根据自己的数据库配置修改连接参数和SQL语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值