1. 程式人生 > 實用技巧 >lyt經典版MySQL基礎——變數

lyt經典版MySQL基礎——變數

  1 #變數
  2 /*
  3 系統變數:
  4     全域性變數
  5     會話變數
  6     
  7 自定義變數:
  8     使用者變數
  9     區域性變數
 10 */
 11 
 12 #一、系統變數
 13 /*說明:變數由系統提供,不是使用者定義,屬於伺服器層面
 14 使用的語法:
 15 1、檢視所有的系統變數
 16 show global|【session】 variables;
 17 
 18 2、檢視滿足條件的部分系統變數
 19 show golbal|【session】 variables like '%char%';
 20 
 21
3、檢視指定的某個系統變數的值 22 select @@global|【session】.系統變數名; 23 24 4、為某個系統變數賦值 25 方式一: 26 set global|【session】 系統變數名 = 值; 27 方式二: 28 set @@global|【session】.系統變數名 = 值; 29 30 注意: 31 如果是全域性級別,則需要加global,如果是會話級別,則需要加session, 32 如果不寫,則預設是session 33 */ 34 35 #1.全域性變數 36 /* 37 作用域:伺服器每次啟動將為所有的全域性變數賦初始值,針對於所有的會話(連線)有效,
38 但是不能跨重啟。 39 */ 40 #(1)檢視所有的全域性變數 41 SHOW GLOBAL VARIABLES; 42 43 #(2)檢視部分的全域性變數 44 SHOW GLOBAL VARIABLES LIKE '%char%'; 45 46 #(3)檢視指定的全域性變數的值 47 SELECT @@global.autocommit; 48 SELECT @@transaction_isolation; 49 50 #(4)為某個指定的全域性變數賦值 51 SET @@global.autocommit=0; 52 53 #2.會話變數 54 /*
55 作用域:僅僅針對當前會話(連線)有效 56 */ 57 #(1)檢視所有的會話變數 58 SHOW SESSION VARIABLES; 59 SHOW VARIABLES; 60 61 #(2)檢視部分的會話變數 62 SHOW VARIABLES LIKE '%char%'; 63 SHOW SESSION VARIABLES LIKE '%char%'; 64 65 #(3)檢視指定的某個會話變數 66 SELECT @@transaction_isolation; 67 SELECT @@session.transaction_isolation; 68 69 #(4)為某個會話變數賦值 70 #方式一: 71 SET @@session.transaction_isolation='read-uncommitted'; 72 73 #方式二: 74 SET SESSION transaction_isolation='read-committed'; 75 76 #二、自定義變數 77 /* 78 說明:變數是使用者自定義的,不是由系統的 79 使用步驟: 80 宣告 81 賦值 82 使用(檢視、比較、運算等) 83 */ 84 #1、使用者變數 85 /* 86 作用域:針對於當前會話(連線)有效,同於會話變數的作用域 87 應用在任何地方,也就是begin end裡面或begin end外面 88 */ 89 90 #賦值的操作符: = 或 := 91 #(1)宣告並初始化 92 SET @使用者變數名=值; 或 93 SET @使用者變數名:=值; 或 94 SELECT @使用者變數名:=值; 95 96 #(2)賦值(更新使用者變數的值) 97 #方式一:通過set或select 98 SET @使用者變數名=值; 或 99 SET @使用者變數名:=值; 或 100 SELECT @使用者變數名:=值; 101 #方式二:通過select into 102 SELECT 欄位 INTO @變數名 103 FROM 表; 104 105 #(3)使用(檢視使用者變數的值) 106 SELECT @使用者變數名; 107 108 #案例: 109 #宣告並初始化 110 SET @name='john'; 111 SET @name=100; 112 SET @count=1; 113 #賦值 114 SELECT COUNT(*) INTO @count 115 FROM employees; 116 #檢視/使用 117 SELECT @count; 118 119 #2、區域性變數 120 /* 121 作用域:僅僅在定義它的begin end中有效 122 應用在 begin end中的第一句話!!! 123 */ 124 125 #(1)宣告 126 DECLARE 變數名 型別; 127 DECLARE 變數名 型別 DEFAULT 值; 128 129 #(2)賦值 130 #方式一:通過set或select 131 SET @使用者變數名=值; 或 132 SET @使用者變數名:=值; 或 133 SELECT @使用者變數名:=值; 134 #方式二:通過select into 135 SELECT 欄位 INTO @變數名 136 FROM 表; 137 138 #(3)使用 139 SELECT 區域性變數名; 140 141 #對比使用者變數和區域性變數: 142 # 作用域 定義和使用的位置 語法 143 #使用者變數 當前會話 會話中的任何地方 必須加@符號,不用限定型別 144 #區域性變數 begin end 中 只能在 begin end 中,且為第一句話 一般不用加@符號,需要限定型別 145 146 #案例:宣告兩個變數並賦初始值,求和,並列印 147 #1.使用者變數 148 SET @m=1; 149 SET @n=2; 150 SET @sum=@m+@n; 151 SELECT @sum; 152 153 #2.區域性變數 154 DECLARE m INT DEFAULT 1; 155 DECLARE n INT DEFAULT 2; 156 DECLARE SUM INT; 157 SET SUM=m+n; 158 SELECT SUM; -- 報錯,因為沒有放在作用域裡