第62讲:MySQL存储过程中变量的定义及应用

这篇具有很好参考价值的文章主要介绍了第62讲:MySQL存储过程中变量的定义及应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在MySQL数据库种分为三种类型的变量,分别是系统变量、用户自定义的变量、局部变量。

1.系统变量

系统变量是由MySQL数据库提供的系统变量,属于服务层面的系统变量,系统变量在使用时的级别又分为两种:

  • 全局变量(global):全局变量针对所有的会话生效,但是当重启MySQL后,修改的系统变量值将会失效,若想永久修改变量的值,可以在MySQL的配置文件中声明。

  • 局部变量(session):会话变量只针对与单个会话生效,到另一个会话窗口将失效。

系统变量的两种使用级别可以在使用变量时指定使用哪一个级别,如果不明确指定系统变量的级别,默认是session。

1.1.查看系统变量的语法格式

1)查看所有的系统变量

SHOW [ SESSION | GLOBAL ] VARIABLES 

2)查找某一个系统变量

SHOW [ SESSION | GLOBAL ] VARIABLES LIKE '变量名'

3)查看指定变量的值

SELECT @@[SESSION | GLOBAL].变量名

1.2.设置系统变量值的语法格式

两种方式可以设置变量的值。

SET [ SESSION | GLOBAL ] 系统变量名 =SET @@[SESSION | GLOBAL].系统变量名 =

1.3.系统变量使用案例

1)查看所有的系统变量

mysql> show variables;

2)查看名称包含auto的系统变量

左侧是变量名,右侧是变量值。

mysql> show variables like '%auto%';
+----------------------------------------------+-------+
| Variable_name                                | Value |
+----------------------------------------------+-------+
| auto_generate_certs                          | ON    |
| auto_increment_increment                     | 1     |
| auto_increment_offset                        | 1     |
| autocommit                                   | ON    |
| automatic_sp_privileges                      | ON    |
| caching_sha2_password_auto_generate_rsa_keys | ON    |
| innodb_autoextend_increment                  | 64    |
| innodb_autoinc_lock_mode                     | 2     |
| innodb_stats_auto_recalc                     | ON    |
| sha256_password_auto_generate_rsa_keys       | ON    |
| sql_auto_is_null                             | OFF   |
+----------------------------------------------+-------+
11 rows in set (0.00 sec)

3)查看指定变量的变量值

mysql> select @@session.autocommit;
+----------------------+
| @@session.autocommit |
+----------------------+
|                    1 |
+----------------------+
1 row in set (0.00 sec)

4)修改系统变量的值

mysql> set @@session.autocommit = 0;
Query OK, 0 rows affected (0.02 sec)

或者

mysql> set session autocommit = 0;
Query OK, 0 rows affected (0.00 sec)

2.用户自定义的变量

在MySQL数据库中,还支持用户根据自己的需要,自定义的环境变量,用户自定义的变量不需要提前声明,直接赋值使用即可,用户自定义的变量仅应用于当前的会话连接。

用户自定义的变量是不需要声明或者初始化的,如果没有赋值直接使用自定义的变量名,变量值则为NULL。

2.1.用户自定义变量的语法格式

1)定义变量并赋值

方式一,使用SET直接定义变量并赋值。

SET @变量名1 = 变量值1
SET @变量名1 = 变量值1 , @变量名2 = 变量值2

SET @变量名1 := 变量值1 
SET @变量名1 := 变量值1 , @变量名2 := 变量值2 

建议使用:=的方式为变量赋值,因为在变量运算时=符号也是运算符号。

方式二,由于用户自定义的变量不需要声明,可以使用SELECT直接定义变量和赋值。

SELECT @变量名1 := 变量值1 , @变量名2 := 变量值2 

方式三,将SQL的查询结果赋值给变量。

SELECT 字段名 INTO @变量名 FROM 表名

将某个表的某个字段的结果赋值给变量。

2)使用变量

SELECT @变量名1

2.2.用户自定义变量的案例

1)使用set定义变量并赋值

1.一次性定义一个变量
mysql> set @name = 'jiangxl';
或者
mysql> set @username :=  'wang';

2.一次性定义多个变量
mysql> set @username = 'wang' , @userid = '1';
或者
mysql> set @age := '19' , @book := 'linux';

2)使用select定义变量并赋值

使用select定义完变量赋完值之后就可以看到变量的值。

1.一次性定义一个变量
mysql> select @myzhiwu := 'devops_linux';
+----------------------------+
| @myzhiwu := 'devops_linux' |
+----------------------------+
| devops_linux               |
+----------------------------+

2.一次性定义多个变量
mysql> select @myzhiwu := 'devops_linux' , @myage := '25';
+----------------------------+----------------+
| @myzhiwu := 'devops_linux' | @myage := '25' |
+----------------------------+----------------+
| devops_linux               | 25             |
+----------------------------+----------------+

3)将ryxxb的总数赋值给变量

mysql> select count(*) into @mycount from ryxxb;

4)查看变量的值

查询各个定义的变量所对应的值。

mysql> select @name,@username,@userid,@age,@book,@myzhiwu,@myage;
+---------+-----------+---------+------+-------+--------------+--------+
| @name   | @username | @userid | @age | @book | @myzhiwu     | @myage |
+---------+-----------+---------+------+-------+--------------+--------+
| jiangxl | wang      | 1       | 19   | linux | devops_linux | 25     |
+---------+-----------+---------+------+-------+--------------+--------+

3.可以在存储过程中定义的局部变量

局部变量是在存储过程中声明的,仅应用于存储过程的BEGIN…END这个范围中,局部变量需要通过DECLARE关键字声明,声明完成后再通过SET或者SELECT进行赋值,局部变量和用户自定义变量的赋值方式是一模一样的。

3.1.局部变量的语法格式

1)声明变量

DECLARE 变量名 变量值的类型 [DEFAULT 默认值]

变量值的类型就是数据库字段的类型,例如:INT BIGINT CHAR VARCHAR DATE TIME等等。

2)变量赋值

SET 变量名 = 变量值
SET 变量名 := 变量值
SELECT 字段名 INTO 变量名 FROM 表名;

3.2.局部变量的应用案例

创建一个存储过程,在里面定义两个局部变量,分别用SET和SELECT赋值,最后查看变量的内容。文章来源地址https://www.toymoban.com/news/detail-455936.html

1.创建视图
create procedure proc_2()
begin
	declare ryxxb_count int default 0;			#声明ryxxb表总数的变量,类型为int,默认值为0
	declare username varchar(10);				#声明username变量,类型为varchar
	set username := 'jiangxl';						#赋值username变量
	select count(*) into ryxxb_count from ryxxb;		#将ryxxb表的总数据量赋值为ryxxb_count变量
	select ryxxb_count,username;						#查询变量的值
end;

2.调用视图
mysql> call proc_2();
+-------------+----------+
| ryxxb_count | username |
+-------------+----------+
|          22 | jiangxl  |
+-------------+----------+
1 row in set (0.00 sec)

到了这里,关于第62讲:MySQL存储过程中变量的定义及应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL 数据库】9、存储过程

    🌱 存储过程是事先经过编译并存储在数据库中的 SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,可以提高数据处理效率 🌱 存储过程思想上很简单:就是数据库 SQL 语言层面的代码封装与重用 🍃 【封装,复用

    2024年02月08日
    浏览(34)
  • 数据库(MySQL)的存储过程

    存储过程是事先经过编译并存储在数据库中的一段SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库SQL 语言层面的代码封装与重用。 特点

    2024年02月10日
    浏览(33)
  • MySQL数据库中的存储过程以及存储函数练习

     字段名       数据类型       主键    外键    非空   唯一    自增       id             INT               是      否       是       是           否    name    VARCHAR(50)   否      否       是       否           否    glass   VARCHAR(50)     否   

    2024年02月15日
    浏览(33)
  • MySQL数据库——MySQL修改存储过程(ALTER PROCEDURE)

    在实际开发过程中,业务需求修改的情况时有发生,所以修改 MySQL 中的存储过程是不可避免的。 MySQL 中通过 ALTER PROCEDURE 语句来修改存储过程。下面将详细讲解修改存储过程的方法。 MySQL 中修改存储过程的语法格式如下: ALTER PROCEDURE 存储过程名 [ 特征 ... ] 特征 指定了存储

    2024年02月04日
    浏览(32)
  • 使用MySQL存储过程提高数据库效率和可维护性

    MySQL 存储过程是一种强大的数据库功能,它允许你在数据库中存储和执行一组SQL语句,类似于编程中的函数。存储过程可以大幅提高数据库的性能、安全性和可维护性。本文将详细介绍MySQL存储过程的使用。 MySQL存储过程是一组预编译的SQL语句,它们以一个名称存储在数据库

    2024年02月08日
    浏览(35)
  • Mysql数据库实验报告--实验五 存储过程和触发器

    在这个系列会更新一些最近老师要求写的实验报告~ 大家尽量对着我的文章做一个参考,不要盲目的cv,毕竟这个对于我们以后的工作学习还是十分重要的。 从这个实验开始,就不在cmd命令行里面进行mysql数据库的操作,因为代码长度和代码的复杂性,需使用 MySQL Workbench: 双

    2024年02月09日
    浏览(41)
  • 关于Android Studio连接mysql数据库的过程和注册功能的实现(数据的插入)以及mysql环境变量的配置

    1.安装mysql数据库,安装的教程哔站有很多,版本尽量用mysql5.7的版本,用mysql8.0的版本与android studio进行连接的话可能会出现问题。 2.安装完成之后,给本机配置环境变量,步骤:如下图示 (1)通过搜索打开环境变量。 (2).点击环境变量。 (3).找到系统变量点击新建。

    2024年04月14日
    浏览(50)
  • MySQL数据库——存储过程-介绍以及基本语法(特点、创建、调用、查看、删除、示例)

    目录 介绍 特点 基本语法 创建 调用 查看 删除  示例  存储过程是 事先经过编译 并 存储在数据库 中的一段 SQL 语句的 集合 ,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想

    2024年02月06日
    浏览(46)
  • 【MySQL】探索MySQL存储过程的魔力,初学者的数据库编程秘笈(内含实战SQL脚本)

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:重温MySQL MySQL存储过程作为一种服务器端的 数据库编程方式 ,提供了高效、可重用的方法来执行相对复杂的数据库操

    2024年02月15日
    浏览(48)
  • 存储过程、触发器、游标、视图、自定义函数 字段类型、字段可空、统计字段、逻辑删除 权限系统数据库&无限极类别设计

    在数据库设计中,存储过程、触发器、游标、视图、自定义函数、字段类型、字段可空、统计字段、逻辑删除以及权限系统和无限级类别设计都是重要的概念。下面我将逐一解释这些概念,并提供相关的设计建议。 存储过程 (Stored Procedure) 定义 :存储过程是一组为了完成特定

    2024年03月09日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包