**1. 变量分类**
变量分为局部变量与用户变量。
**2. 局部变量**
```sql
# 语法
DECLARE var_name[, var_name, ...] type_ [DEFAULT value_]
- var_name:变量名
- type_:变量类型
- value_:默认值,如果不给默认值,则默认为 null
# 可以在函数或存储过程的begin...end中使用局部变量
# 局部变量作用域只在begin...end内
create procedure proce_name(params)
begin
-- 声明局部变量
declare uname varchar(255) default null;
-- 调用set给局部变量赋值
set uname = 'zhangsan';
--也可以调用select...into...给局部变量赋值
select username into uname from account where id=1;
end
```
**3. 用户变量**
用户变量在整个会话内都有效,当退出会话时会被自动释放。
```sql
# 用户变量必须使用 @ 开头命名
# 使用 set 声明并初始化一个用户变量
# 用户变量必须初始化
mysql> set @pass='zhangsan';
mysql> select @pass;
+----------+
| @pass |
+----------+
| zhangsan |
+----------+
# 在函数或存储过程的begin...end内声明的 @ 变量也是用户变量
create procedure proce_var()
begin
set @uname = '张三';
end $
mysql> select @uname $
+----------+
| @uname |
+----------+
| 张三 |
+----------+
# 可以使用 select...into...声明并初始化一个用户变量
mysql> select * from account;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | 张三 | zhangsan |
| 2 | 李四 | lisi |
| 3 | 王五 | wangwu |
+----+----------+----------+
mysql> select username into @rname from account where id=1;
mysql> select @rname;
+--------+
| @rname |
+--------+
| 张三 |
+--------+
- MySQL
- MySQL是什么
- MySQL环境搭建
- centos7-MySQL8
- windows-MySQL8
- 数据库软件
- sqlyog软件安装
- navicat软件安装
- powerDesigner软件安装
- RDBMS术语
- SQL语句组成
- 数据库系统组成
- 数据库操作
- 数据表操作
- 查询语句
- 基本语法
- 子查询
- 表连接
- 查询语句执行顺序
- 事务
- 事务是什么
- 事务的作用
- 事务的4个特性
- 事务隔离级别
- 事务的实现
- 索引
- 索引的作用
- 索引操作
- 存储引擎
- 备份与恢复
- 视图
- 视图是什么
- 视图的作用
- 创建视图
- 查看视图
- 更改视图
- DML操作视图
- 删除视图
- 存储过程与函数
- 过程与函数是什么
- 存储过程操作
- 定义存储过程
- 调用存储过程
- 查看存储过程
- 删除存储过程
- 修改存储过程
- 函数操作
- 过程与函数区别
- 流程控制
- if语句
- case语句
- while循环语句
- repeat循环语句
- loop循环语句
- 变量
- 处理程序
- 光标
- Redis
- 简介
- 下载与安装
- 命令操作redis数据库
- 通用命令
- 数据操作
- 持久化
- Windows上的持久化操作
- 数据库设计
- 数据库设计过程
- ER模型图
- MongoDB
- MongoDB是什么?
- MongoDB特性
- MongoDB 数据模型
- 安装MongoDB
- MongoDB认证
- Database操作
- Collection操作
- Document操作
- 插入
- 查询
- 更新
- 删除
- buckWrite
- MongoDB索引
- 副本集
- 聚焦分析
- 事务管理
- 写关注
- 读关注