久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql變量怎么自定義

153次閱讀
沒有評論

共計 4218 個字符,預計需要花費 11 分鐘才能閱讀完成。

這篇文章主要介紹“mysql 變量怎么自定義”的相關知識,丸趣 TV 小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“mysql 變量怎么自定義”文章能幫助大家解決問題。

系統變量

簡介

1、系統變量
  系統變量分為全局系統變量(需要添加  global  關鍵字)以及會話系統變量(需要添加  session  關鍵字),有時也把全局系統變量簡稱為全局變量,有時也把會話系統變量稱為 local 變量。如果不寫,默認會話級別
  全局系統變量針對于所有會話(連接)有效,但   不能跨重啟
  在 MySQL 中有些系統變量只能是全局的,例如  max_connections  用于限制服務器的最大連接數;有些系統變量作用域既可以是全局又可以是會話,例如  character_set_client  用于設置客戶端的字符集;有些系統變量的作用域只能是當前會話,例如  pseudo_thread_id  用于標記當前會話的  MySQL  連接  ID
2、用戶自定義變量
  每一個 MySQL 客戶機成功連接 MySQL 服務器后,都會產生與之對應的會話。會話期間,MySQL 服務實例會在 MySQL 服務器內存中生成與該會話對應的會話系統變量,這些會話系統變量的初始值是全局系統變量值的復制
  會話系統變量僅針對于當前會話(連接)有效。會話期間,當前會話對某個會話系統變量值的修改,不會影響其他會話同一個會話系統變量的值
  會話 1 對某個全局系統變量值的修改會導致會話 2 中同一個全局系統變量值的修改 

代碼案例

#  查看系統變量
#  查詢全局系統變量
SHOW GLOBAL VARIABLES;
#  查詢會話系統變量
SHOW SESSION VARIABLES; 
#  默認查詢的是會話系統變量
SHOW VARIABLES; 
#  查詢部分系統變量
#  模糊查詢
SHOW GLOBAL VARIABLES LIKE  admin_% 
SHOW VARIABLES LIKE  character_% 
#  查看指定系統變量
SELECT @@global.max_connections;
SELECT @@global.character_set_client;
#  錯誤寫法,由于該變量是會話系統變量
SELECT @@global.pseudo_thread_id;
#  錯誤寫法,由于該變量是全局系統變量
SELECT @@session.max_connections;
#  查看會話系統變量
SELECT @@session.character_set_client;
SELECT @@session.pseudo_thread_id;
#  當變量在全局系統變量或會話系統量中都有時,先查詢會話系統變量,再查詢全局系統變量
SELECT @@character_set_client; 
#  修改系統變量的值
#  修改全局系統變量
#  方式 1:SET @@global.max_connections = 161;
#  方式 2:SET GLOBAL max_connections = 171;
#  針對于當前的數據庫實例是有效的,一旦重啟 mysql 服務,就失效了
#  修改會話系統變量
#  方式 1:SET @@session.character_set_client =  gbk 
#  方式 2:SET SESSION character_set_client =  gbk 
#  針對于當前會話是有效的,一旦結束會話,重新建立起新的會話,就失效了 

用戶變量

簡介

 分為會話用戶變量和局部變量
會話用戶變量:作用域和會話變量一樣,只對   當前連接   會話有效
局部變量:只在  BEGIN  和  END  語句塊中有效。局部變量只能在   存儲過程和函數   中使用 

定義變量

# 方式 1:“=”或“:=”SET @用戶變量  =  值;
SET @用戶變量  :=  值;
#方式 2:“:=”  或  INTO 關鍵字
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  中  (使用在存儲過程、函數中)DECLARE 的方式聲明的局部變量必須聲明在 BEGIN 中的首行的位置
BEGIN
 # 聲明局部變量
 DECLARE  變量名 1   變量數據類型  [DEFAULT  變量默認值];
 DECLARE  變量名 2, 變量名 3,...  變量數據類型  [DEFAULT  變量默認值];
 # 為局部變量賦值
 SET  變量名 1  =  值;
 SELECT  值  INTO  變量名 2  [FROM  子句];
 # 查看局部變量的值
 SELECT  變量 1, 變量 2, 變量 3;
#  定義變量
DECLARE  變量名   類型  [default  值]; #  如果沒有 DEFAULT 子句,初始值為 NULL
#  賦值
#  方式 1
SET  變量名 = 值;
SET  變量名:= 值;
#  方式 2
SELECT  字段名或表達式  INTO  變量名  FROM  表;
#  查看
SELECT  局部變量名;

局部變量代碼案例

DELIMITER // #  開始
CREATE PROCEDURE test_var() #  創建存儲過程
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; #  結束
#調用存儲過程
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 ; #  結束
#  調用存儲過程
CALL test_pro();
#  舉例 2:聲明兩個變量,求和并打印  (分別使用會話用戶變量、局部變量的方式實現)#  方式 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 ;
#調用存儲過程
CALL add_value();
#  舉例 3:創建存儲過程“different_salary”查詢某員工和他領導的薪資差距,并用 IN 參數 emp_id 接收員工 id,用 OUT 參數 dif_salary 輸出薪資差距結果
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; #  結束
#  調用存儲過程
SET @emp_id := 103;
SET @dif_sal := 0;
CALL different_salary(@emp_id,@dif_sal);
#  查看
SELECT @dif_sal;

關于“mysql 變量怎么自定義”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注丸趣 TV 行業資訊頻道,丸趣 TV 小編每天都會為大家更新不同的知識點。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計4218字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 晴隆县| 兴义市| 凤山县| 扎囊县| 绥中县| 建宁县| 嘉定区| 武宁县| 方正县| 松潘县| 桃源县| 常熟市| 平乡县| 水城县| 福州市| 灵台县| 宜春市| 天长市| 大荔县| 寿宁县| 富蕴县| 建昌县| 宜城市| 大关县| 霍邱县| 旬邑县| 瓦房店市| 南乐县| 陵水| 阿克| 安泽县| 扶余县| 建德市| 湛江市| 上思县| 安吉县| 武安市| 青龙| 昌黎县| 惠来县| 唐河县|