新聞中心
這篇文章主要介紹“MySQL變量怎么自定義”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“mysql變量怎么自定義”文章能幫助大家解決問題。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),桂陽企業(yè)網(wǎng)站建設(shè),桂陽品牌網(wǎng)站建設(shè),網(wǎng)站定制,桂陽網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,桂陽網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
系統(tǒng)變量
簡介
1、系統(tǒng)變量 系統(tǒng)變量分為全局系統(tǒng)變量(需要添加 global 關(guān)鍵字)以及會話系統(tǒng)變量(需要添加 session 關(guān)鍵字),有時也把全局系統(tǒng)變量簡稱為全局變量,有時也把會話系統(tǒng)變量稱為local變量。如果不寫,默認會話級別 全局系統(tǒng)變量針對于所有會話(連接)有效,但 不能跨重啟 在MySQL中有些系統(tǒng)變量只能是全局的,例如 max_connections 用于限制服務(wù)器的最大連接數(shù);有些系統(tǒng)變量作用域既可以是全局又可以是會話,例如 character_set_client 用于設(shè)置客戶端的字符集;有些系統(tǒng)變量的作用域只能是當(dāng)前會話,例如 pseudo_thread_id 用于標記當(dāng)前會話的 MySQL 連接 ID 2、用戶自定義變量 每一個MySQL客戶機成功連接MySQL服務(wù)器后,都會產(chǎn)生與之對應(yīng)的會話。會話期間,MySQL服務(wù)實例會在MySQL服務(wù)器內(nèi)存中生成與該會話對應(yīng)的會話系統(tǒng)變量,這些會話系統(tǒng)變量的初始值是全局系統(tǒng)變量值的復(fù)制 會話系統(tǒng)變量僅針對于當(dāng)前會話(連接)有效。會話期間,當(dāng)前會話對某個會話系統(tǒng)變量值的修改,不會影響其他會話同一個會話系統(tǒng)變量的值 會話1對某個全局系統(tǒng)變量值的修改會導(dǎo)致會話2中同一個全局系統(tǒng)變量值的修改
代碼案例
# 查看系統(tǒng)變量 # 查詢?nèi)窒到y(tǒng)變量 SHOW GLOBAL VARIABLES; # 查詢會話系統(tǒng)變量 SHOW SESSION VARIABLES; # 默認查詢的是會話系統(tǒng)變量 SHOW VARIABLES; # 查詢部分系統(tǒng)變量 # 模糊查詢 SHOW GLOBAL VARIABLES LIKE 'admin_%'; SHOW VARIABLES LIKE 'character_%'; # 查看指定系統(tǒng)變量 SELECT @@global.max_connections; SELECT @@global.character_set_client; # 錯誤寫法,由于該變量是會話系統(tǒng)變量 SELECT @@global.pseudo_thread_id; # 錯誤寫法,由于該變量是全局系統(tǒng)變量 SELECT @@session.max_connections; # 查看會話系統(tǒng)變量 SELECT @@session.character_set_client; SELECT @@session.pseudo_thread_id; # 當(dāng)變量在全局系統(tǒng)變量或會話系統(tǒng)量中都有時,先查詢會話系統(tǒng)變量,再查詢?nèi)窒到y(tǒng)變量 SELECT @@character_set_client; # 修改系統(tǒng)變量的值 # 修改全局系統(tǒng)變量 # 方式1: SET @@global.max_connections = 161; # 方式2: SET GLOBAL max_connections = 171; # 針對于當(dāng)前的數(shù)據(jù)庫實例是有效的,一旦重啟mysql服務(wù),就失效了 # 修改會話系統(tǒng)變量 # 方式1: SET @@session.character_set_client = 'gbk'; # 方式2: SET SESSION character_set_client = 'gbk'; # 針對于當(dāng)前會話是有效的,一旦結(jié)束會話,重新建立起新的會話,就失效了
用戶變量
簡介
分為會話用戶變量和局部變量 會話用戶變量:作用域和會話變量一樣,只對 當(dāng)前連接 會話有效 局部變量:只在 BEGIN 和 END 語句塊中有效。局部變量只能在 存儲過程和函數(shù) 中使用
定義變量
#方式1:“=”或“:=” SET @用戶變量 = 值; SET @用戶變量 := 值; #方式2:“:=” 或 INTO關(guān)鍵字 SELECT @用戶變量 := 表達式 [FROM 等子句]; SELECT 表達式 INTO @用戶變量 [FROM 等子句];
查看用戶變量的值
SELECT @用戶變量
會話用戶變量代碼案例
# 方式1: SET @m1 = 1; SET @m2 := 2; SET @sum := @m1 + @m2; # 查看 SELECT @sum; # 方式2: SELECT @count := COUNT(*) FROM employees; SELECT @count; SELECT AVG(salary) INTO @avg_sal FROM employees; SELECT @avg_sal;
局部變量簡介
使用DECLARE聲明 聲明并使用在BEGIN ... END 中 (使用在存儲過程、函數(shù)中) DECLARE的方式聲明的局部變量必須聲明在BEGIN中的首行的位置 BEGIN #聲明局部變量 DECLARE 變量名1 變量數(shù)據(jù)類型 [DEFAULT 變量默認值]; DECLARE 變量名2,變量名3,... 變量數(shù)據(jù)類型 [DEFAULT 變量默認值]; #為局部變量賦值 SET 變量名1 = 值; SELECT 值 INTO 變量名2 [FROM 子句]; #查看局部變量的值 SELECT 變量1,變量2,變量3; END # 定義變量 DECLARE 變量名 類型 [default 值]; # 如果沒有DEFAULT子句,初始值為NULL # 賦值 # 方式1 SET 變量名=值; SET 變量名:=值; # 方式2 SELECT 字段名或表達式 INTO 變量名 FROM 表; # 查看 SELECT 局部變量名;
局部變量代碼案例
DELIMITER // # 開始 CREATE PROCEDURE test_var() # 創(chuàng)建存儲過程 BEGIN #1、聲明局部變量 DECLARE a INT DEFAULT 0; DECLARE b INT ; # DECLARE a,b INT DEFAULT 0; # 寫法2 DECLARE emp_name VARCHAR(25); #2、賦值 SET a = 1; SET b := 2; # 將last_name賦值給emp_name SELECT last_name INTO emp_name FROM employees WHERE employee_id = 101; #3、使用 SELECT a,b,emp_name; END // DELIMITER; # 結(jié)束 #調(diào)用存儲過程 CALL test_var(); # 舉例1:聲明局部變量,并分別賦值為employees表中employee_id為102的last_name和salary DELIMITER // # 開始 CREATE PROCEDURE test_pro() BEGIN #聲明 DECLARE emp_name VARCHAR(25); DECLARE sal DOUBLE(10,2) DEFAULT 0.0; #賦值 SELECT last_name,salary INTO emp_name,sal # 賦值 FROM employees WHERE employee_id = 102; #使用 SELECT emp_name,sal; END // DELIMITER ; # 結(jié)束 # 調(diào)用存儲過程 CALL test_pro(); # 舉例2:聲明兩個變量,求和并打印 (分別使用會話用戶變量、局部變量的方式實現(xiàn)) # 方式1:使用會話用戶變量 SET @v1 = 10; SET @v2 := 20; SET @result := @v1 + @v2; # 查看 SELECT @result; # 方式2:使用局部變量 DELIMITER // CREATE PROCEDURE add_value() BEGIN #聲明 DECLARE value1,value2,sum_val INT; #賦值 SET value1 = 10; SET value2 := 100; SET sum_val = value1 + value2; #使用 SELECT sum_val; END // DELIMITER ; #調(diào)用存儲過程 CALL add_value(); # 舉例3:創(chuàng)建存儲過程“different_salary”查詢某員工和他領(lǐng)導(dǎo)的薪資差距,并用IN參數(shù)emp_id接收員工id,用OUT參數(shù)dif_salary輸出薪資差距結(jié)果 DELIMITER // # 開始 CREATE PROCEDURE different_salary(IN emp_id INT, OUT dif_salary DOUBLE) # 輸出dif_salary DOUBLE BEGIN #分析:查詢出emp_id員工的工資;查詢出emp_id員工的管理者的id;查詢管理者id的工資;計算兩個工資的差值 #聲明變量 DECLARE emp_sal DOUBLE DEFAULT 0.0; #記錄員工的工資 DECLARE mgr_sal DOUBLE DEFAULT 0.0; #記錄管理者的工資 DECLARE mgr_id INT DEFAULT 0; #記錄管理者的id #賦值 SELECT salary INTO emp_sal FROM employees WHERE employee_id = emp_id; SELECT manager_id INTO mgr_id FROM employees WHERE employee_id = emp_id; SELECT salary INTO mgr_sal FROM employees WHERE employee_id = mgr_id; SET dif_salary = mgr_sal - emp_sal; END // DELIMITER; # 結(jié)束 # 調(diào)用存儲過程 SET @emp_id := 103; SET @dif_sal := 0; CALL different_salary(@emp_id,@dif_sal); # 查看 SELECT @dif_sal;
關(guān)于“mysql變量怎么自定義”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。
分享文章:mysql變量怎么自定義
文章來源:http://fisionsoft.com.cn/article/goseci.html