MySQL中的變量類型很多,下面為您介紹的是MySQL系統變量方面的知識,如果您對MySQL系統變量感興趣的話,不妨一看。
MySQL可以訪問許多系統和連接變量。當服務器運行時許多變量可以動態更改。這樣通常允許你修改服務器操作而不需要停止並重啟服務器。
mysqld服務器維護兩種MySQL系統變量。全局變量影響服務器整體操作。會話變量影響具體客戶端連接的操作。
當服務器啟動時,它將所有全局變量初始化為默認值。這些默認值可以在選項文件中或在命令行中指定的選項進行更改。服務器啟動後,通過連接服務器並執行SET GLOBAL var_name語句,可以動態更改這些全局變量。要想更改全局變量,必須具有SUPER權限。
服務器還為每個連接的客戶端維護一系列會話變量。在連接時使用相應全局變量的當前值對客戶端的會話變量進行初始化。對於動態會話變量,客戶端可以通過SET SESSION var_name語句更改它們。設置會話變量不需要特殊權限,但客戶端只能更改自己的會話變量,而不能更改其它客戶端的會話變量。
對於全局變量的更改可以被訪問該全局變量的任何客戶端看見。然而,它只影響更改後連接的客戶的從該全局變量初始化的相應會話變量。不影響目前已經連接的客戶端的會話變量(即使客戶端執行SET GLOBAL語句也不影響)。
可以使用幾種語法形式來設置或檢索全局或會話變量。下面的例子使用了sort_buffer_sizeas作為示例變量名。
要想設置一個GLOBAL變量的值,使用下面的語法:
mysql> SET GLOBAL sort_buffer_size=value;
mysql> SET @@global.sort_buffer_size=value;
要想設置一個SESSION變量的值,使用下面的語法:
mysql> SET SESSION sort_buffer_size=value;
mysql> SET @@session.sort_buffer_size=value;
mysql> SET sort_buffer_size=value;
LOCAL是SESSION的同義詞。
如果設置變量時不指定GLOBAL、SESSION或者LOCAL,默認使用SESSION。
要想檢索一個GLOBAL變量的值,使用下面的語法:
mysql> SELECT @@global.sort_buffer_size;
mysql> SHOW GLOBAL VARIABLES like 'sort_buffer_size';
要想檢索一個SESSION變量的值,使用下面的語法:
mysql> SELECT @@sort_buffer_size;
mysql> SELECT @@session.sort_buffer_size;
mysql> SHOW SESSION VARIABLES like 'sort_buffer_size';
這裡,LOCAL也是SESSION的同義詞。
當你用SELECT @@var_name搜索一個變量時(也就是說,不指定global.、session.或者local.),MySQL返回SESSION值如果存在),否則返回GLOBAL值。
對於SHOW VARIABLES,如果不指定GLOBAL、SESSION或者LOCAL,MySQL返回SESSION值。
當設置GLOBAL變量需要GLOBAL關鍵字但檢索時不需要它們的原因是防止將來出現問題。如果我們移除一個與某個GLOBAL變量具有相同名字的SESSION變量,具有SUPER權限的客戶可能會意外地更改GLOBAL變量而不是它自己的連接的SESSION變量。如果我們添加一個與某個GLOBAL變量具有相同名字的SESSION變量,想更改GLOBAL變量的客戶可能會發現只有自己的SESSION變量被更改了。
帶您了解MySQL隨機字符串函數
深入研究MySQL結果字符串
MySQL截取字符串函數方法
MySQL字符串各列類型的區別
MySQL多個條件判斷示例