**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索引
- 副本集
- 聚焦分析
- 事務管理
- 寫關注
- 讀關注