跳轉到內容

MySQL/語言/使用者變數

來自華夏公益教科書,開放的書籍,用於開放的世界

區域性變數

[編輯 | 編輯原始碼]

區域性變數無法從其函式或儲存過程外部訪問[1]

它們像這樣宣告[2]

DECLARE MyVariable1 INT DEFAULT 1;

會話變數

[編輯 | 編輯原始碼]
  • 使用 := 賦值運算子在語句中設定變數的能力
  • 例如(@total)用於計算示例中的總計,您必須先擁有總計列,因為它必須在計算個別百分比之前計算。
  • 會話變數在整個執行緒持續時間內設定。
  • 在絕大多數情況下,您將使用程式語言來執行此類操作。
  • MySQL 變數在處理 MySQL 命令列時非常有用。
  • 如果未返回任何記錄,則不會為該語句設定使用者變數。
  • 在欄位列表中設定的使用者變數不能用作條件。
  • 變數的值使用 SET 語句或在帶有 := 的 SELECT 語句中設定。
 select @test := 2;
 select @test + 1;  -- returns 3

 set @startdate='some_start_date', @enddate='some_end_date'

 SELECT @toremember:=count(*) FROM membros;
	
 select @numzero := count(*) from table1 where field=0; 
 select @numdistinct := count(distinct field) from table1 where field <> 0 ; 
 select @numzero @numdistinct;
  • 您可以將 SELECT 獲取的值複製到一個或多個變數中。
 SET @id = 0, @name = '';
 SELECT id, name INTO @id, @name FROM table1 limit 1;
 SELECT @id, @name;

全域性變數

[編輯 | 編輯原始碼]

全域性變數對所有使用者可見,它允許在會話期間或永久地修改配置檔案設定。 因此,在更改它們時,有必要分別使用 set globalset session 指定這種永久或臨時標準。 例如

 mysql> set @@global.max_connections = 1000;
 mysql> show global variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 60 |
+---------------+-------+
1 row in set (0.00 sec)
 mysql> set @@session.wait_timeout=120;

參考文獻

[編輯 | 編輯原始碼]
華夏公益教科書