[TOC]
# 變量
Mysql本質是一種編程語言,需要很多變量來保存數據。Mysql中很多的屬性控制都是通過mysql中固有的變量來實現的。
## 系統變量
系統內部定義的變量,系統變量針對所有用戶(MySQL客戶端)有效。
查看系統所有變量:show variables [like ‘pattern’];
Mysql允許用戶使用select查詢變量的數據值(系統變量)
基本語法:select @@變量名;
修改系統變量:分為兩種修改方式
1、 局部修改(會話級別):只針對當前自己客戶端當次連接有效
基本語法:set 變量名 = 新值;
2、 全局修改:針對所有的客戶端,“所有時刻”都有效
基本語法:set global 變量名 = 值; || set @@global.變量名 = 值;
全局修改之后:所有連接的客戶端并沒發現改變?全局修改只針對新客戶端生效(正在連著的無效)
注意:如果想要本次連接對應的變量修改有效,那么不能使用全局修改,只能使用會話級別修改(set 變量名 = 值);
# 普通變量
不帶@符號
定義:declare 變量名 類型名 [default 默認值]; //普通變量必須先這樣定義
賦值形式:set 變量名=值; 取值:就直接使用變量名;
只能在編程環境中使用:1.定義函數內部2.定義存儲過程的內部3.定義觸發器的內部;
作用范圍在begin到end語句塊之間。在該語句塊里設置的變量,declare語句專門用于定義局部變量。
1、 局部變量是使用declare關鍵字聲明
2、 局部變量declare語句出現的位置一定是在begin和end之間(beginend是在大型語句塊中使用:函數/存儲過程/觸發器)
3、 聲明語法:declare 變量名 數據類型 [屬性];
# 會話變量
帶@符號
定義形式(其實也是賦值形式):set @變量名=值; 取值:就基本使用變量名
使用場所,哪里都可以
在mysql中因為沒有比較符號==,所以是用=代替比較符號:有時候在賦值的時候,會報錯:mysql為了避免系統分不清是賦值還是比較:特定增加一個變量的賦值符號: :=
Set @變量名 := 值;
Mysql是專門存儲數據的:允許將數據從表中取出存儲到變量中:查詢得到的數據必須只能是一行數據(一個變量對應一個字段值):Mysql沒有數組。
1、 賦值且查看賦值過程:select @變量1 := 字段1,@變量2 := 字段2 from 數據表 where 條件;

2、 只賦值,不看過程:select 字段1,字段2… from 數據源 where條件 into @變量1,@變量2…

# 變量賦值有如下形式
1.(針對普通變量): set 變量名=表達式; #此語法中的變量必須先使用declare聲明
2.(針對會話變量): set @變量名=表達式; #此方式可以無需declare語法聲明,而是直接賦值
3.(針對會話變量): select @變量名 := 表達式; #此語句會給該變量賦值,同時會作為一個select語句輸出結果集
4.(針對會話變量): select 表達式 into @變量名; #此語句雖然看起來是select語句,但其實并不輸出結果集,而只是給變量賦值
- SQL
- 名詞
- mysql
- 初識mysql
- 備份和恢復
- 存儲引擎
- 數據表損壞和修復
- mysql工具
- 數據庫操作
- 增
- 刪
- 改
- 查
- 數據類型
- 整數類型
- 小數類型
- 日期時間類型
- 字符和文本型
- enum類型
- set類型
- 時間類型
- null與not null和null與空值''的區別
- 數據表操作
- 創建
- 索引
- 約束
- 表選項列表
- 表的其他語句
- 視圖
- sql增刪改查
- sql增
- sql刪
- sql改
- sql查
- sql語句練習
- 連接查詢和更新
- 常用sql語句集錦
- 函數
- 字符函數
- 數值運算符
- 比較運算符與函數
- 日期時間函數
- 信息函數
- 聚合函數
- 加密函數
- null函數
- 用戶權限管理
- 用戶管理
- 權限管理
- pdo
- 與pdo相關的幾個類
- 連接數據庫
- 使用
- pdo的錯誤處理
- pdo結果集對象
- pdo結果集對象常用方法
- pdo預處理
- 常用屬性
- mysql編程
- 事務
- 語句塊
- mysql中的變量
- 存儲函數
- 存儲過程
- 觸發器
- mysql優化
- 存儲引擎
- 字段類型
- 三范式和逆范式
- 索引
- 查詢緩存
- limit分頁優化
- 分區
- 介紹
- 分區算法
- list分區
- range范圍
- Hash哈希
- key鍵值
- 分區管理
- 特別注意
- 分表
- 數據碎片與維護
- innodb表壓縮
- 慢查詢
- explain執行計劃
- count和max,groupby優化
- 子查詢優化
- mysql鎖機制
- 介紹
- 演示
- 總結
- 樂觀鎖和悲觀鎖
- 扛得住的mysql
- 實例和故事
- 系統參數優化
- mysql體系結構
- mysql基準測試
- 索引
- mysql的復制
- win配置MySQL主從
- mysql5.7新特性
- 常見問題
- general log
- 忘記密碼
- uodo log與redo log
- 事務隔離級別
- mysql8密碼登錄
- explain
- 高效的Tree表
- on delete cascade 總結
- mongod
- 簡介
- 集合文檔操作語句
- 增刪改查
- 索引
- 數據導入和導出
- 主從復制
- php7操作mongod
- 權限管理
- redis
- redis簡介
- 3.2版本配置文件
- 3.0版本配置文件
- 2.8版本配置文件
- 配置文件總結
- 外網連接
- 持久化
- RDB備份方式保存數據
- AOF備份方式保存數據
- 總結
- win安裝redis和sentinel部署
- 事務
- Sentinel模式配置
- 分布式鎖
- 管道
- php中redis代碼
- 發布訂閱
- slowlog
- Redis4.0
- scan和keys
- elasticsearch
- 配置說明
- 啟動
- kibana
- kibana下載
- kibana配置文件
- kibana常用功能
- 常用術語
- Beats
- Beats簡介
- Filebeat
- Packetbeat
- Logstash
- 配置
- elasticsearch架構
- es1.7
- head和bigdesk插件
- 插件大全
- 倒排索引
- 單模式下API增刪改查
- mget獲取多個文檔
- 批量操作bulk
- 版本控制
- Mapping映射
- 基本查詢
- Filter過濾
- 組合查詢
- es配置文件
- es集群優化和管理
- logstash
- kibana
- es5.2
- 安裝
- 沖突處理
- 數據備份
- 缺陷不足
- 集群管理api
- 分布式事務
- CAP理論
- BASE模型
- 兩階段提交(2PC)
- TCC (Try-Confirm-Cancle)
- 異步確保型
- 最大努力通知型
- 總結