MySQL 基础 ———— 变量
生活随笔
收集整理的這篇文章主要介紹了
MySQL 基础 ———— 变量
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、MySQL系統變量
系統變量是由系統提供,屬于服務器層面。
系統變量分為:全局變量和會話變量。
全局變量一般要加 GLOBAL 關鍵字,例如在《MySQL 基礎 ————事務與隔離級別總結》中提到的 GLOBAL TRANSACTION,就屬于全局變量,它針對所有連接都會生效,但是一旦MySQL服務重啟,同樣會失效。
會話變量由 SESSION 關鍵字修飾,一般可以省略,比如? SET TRANSACTION ISOLATION ,這里的事務隔離級別設置就只針對當前會話,即當前連接。
二、查看系統變量
查看所有的全局或會話系統變量:
SHOW GLOBAL|SESSION VARIABLES;查看滿足條件的部分系統變量:
SHOW GLOBAL VARIABLES LIKE '%char%';查看具體的變量值:
SELECT @@global.character_set_client; SELECT @@character_set_client;三、設置系統變量
系統變量可以被用戶修改。有兩種方式:
方式一:
SET GLOBAL|[SESSION] 系統變量名 = 值;方式二:
SET @@global|[session].系統變量名 = 值;比如,設置事務提交方式(查看事務提交方式:SELECT? VARIABLES? LIKE? 'autocommit'??):
-- 全局 SET GLOBAL autocommit = 0; SET @@global.autocommit = 0;-- 當前會話 SET [SESSION] autocommit = 0; SET @@[session].autocommit = 0;四、自定義變量
自定義變量分為:用戶變量和局部變量。
4.1 用戶變量
用戶變量要求必須帶有@符號,只針對當前會話有效。可在當前會話中的任何地方使用,相當于針對本次連接的“全局變量”。
賦值操作可以用 = 或 := 兩種。
4.1.1 聲明并初始化
SET @變量名 = 變量值; SET @變量名 := 變量值; SELECT @變量名 := 變量值;4.1.2 賦值(更新用戶變量的值)
上述初始化的三種方法依然適用,同時,也可以使用 SELECT INTO:
SELECT 字段 INTO @變量名 FROM 表;4.1.3 使用用戶變量
SELECT @變量名;4.2 局部變量
局部變量的作用域僅僅在定義它的 BEGIN... END(存儲過程)中有效。而且聲明語句一定要在 BEGIN...END? 中的第一句話。
-- 聲明 DECLARE 變量名 類型 [DEFAULT 默認值]; -- 賦值 SET 變量名 = 值; SET 變量名 := 值; SELECT @變量名 := 值; SELECT 字段 INTO 變量名 FROM 表; -- 使用局部變量 SELECT 變量名;4.3 演示
1、用戶變量演示:
SET @name = 'Morty'; SELECT @name; -- 輸出 Morty [5Bytes]SET @name = 100; SELECT @name; -- 輸出 100SET @count = 1; SELECT @count; -- 輸出 1SELECT COUNT(*) INTO @count FROM emp ; SELECT @count; -- 輸出 112、局部變量演示:
創建存儲過程:
-- 創建存儲過程 DELIMITER $ CREATE PROCEDURE emp_name_pro() BEGIN DECLARE emp_name VARCHAR(5) DEFAULT 'Moryt'; SELECT emp_name; END $調用存儲過程:
CALL emp_name_pro;五、用戶變量與局部變量的比較
| ? | 作用域 | 定義和使用位置 | 語法 |
| 用戶變量 | 當前會話 | 會話中的任何地方 | 必須加@,不用指定類型 |
| 局部變量 | 存儲過程的定義中 | BEGIN... END 的第一句 | 一般不用加@,必須限定類型 |
?
總結
以上是生活随笔為你收集整理的MySQL 基础 ———— 变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java实现用户头像上传(修改默认文件大
- 下一篇: python oracle blob_