用戶定義的變量(前綴為@):
您可以訪問任何用戶定義的變量,而無需聲明或初始化它。如果引用尚未初始化的變量,則其值為NULL
和字符串類型。
select @now2;
NULL
set賦值:
set @num=0;
-- select count(1) from hs_draw_info where unify_loan_account is not null into @num;
select count(1) into @num from hs_draw_info where unify_loan_account is not null;
select @num;
select賦值:
select now() into @now;
select @now;
2019-02-20 13:44:21
或者
SELECT @start := 1, @finish := 10;
select @start,@finish;
select使用:=也可以實現賦值
用戶定義的變量是特定於會話的。也就是說,其他客戶端無法看到或使用由一個客戶端定義的用戶變量。
局部變量(無前綴):
DECLARE
在訪問本地變量之前,需要聲明它們。
它們可以用作局部變量和存儲過程中的輸入參數。
如果缺少default
,默認初始化為NULL
delimiter $$
drop procedure if exists pro $$
create procedure pro()
begin
declare num int default 0;
select count(1) from hs_draw_info where unify_loan_account is not null into num;
select num;
end $$
delimiter ;
call pro();
上面的num就是局部變量。
局部變量的BEGIN ... END
范圍是聲明它的塊。
服務器系統變量(前綴@@):
MySQL服務器維護許多配置為默認值的系統變量。它們可以是類型GLOBAL
,SESSION
或BOTH
。
全局變量會影響服務器的整體操作,而會話變量會影響其對各個客戶端連接的操作。
要查看正在運行的服務器使用的當前值,請使用SHOW VARIABLES
語句或SELECT @@var_name
。
SHOW VARIABLES LIKE '%wait_timeout%';
SELECT @@sort_buffer_size;
可以使用命令行或選項文件中的選項在服務器啟動時設置它們。在服務器運行時,大多數都可以動態更改SET GLOBAL
或使用SET SESSION
:
-- Syntax to Set value to a Global variable:
SET GLOBAL sort_buffer_size=1000000;
SET @@global.sort_buffer_size=1000000;
-- Syntax to Set value to a Session variable:
SET sort_buffer_size=1000000;
SET SESSION sort_buffer_size=1000000;
SET @@sort_buffer_size=1000000;
SET @@local.sort_buffer_size=10000;