一、變量
1.系統變量:全局變量、會話變量
說明:由系統提供,屬於服務器層面。如果是全局級別,則需要加 global,如果是會話級別,則需加 session,如果不寫,則默認 session。全局變量不能跨重啟。會話變量僅僅針對當前變量有效
●查看所有的系統變量
show global | 【session】 variables;
●查看滿足條件的部分系統變量
show global | 【session】 variable like '%char%';
●查看滿足條件的部分系統變量
select @@global | 【session】 .系統變量名;
●為某個系統變量賦值
set global | 【session】 系統變量名 = 值;
set @@global |【session】 .系統變量名 = 值;
2.自定義變量:用戶變量、局部變量
使用步驟:
聲明
賦值
使用(查看、比較、運算)
●用戶變量:可以應用在任何地方,begin end 里面或 begin end 外面。
聲明並初始化
方式一:
set @用戶變量名 = 值;
或 set @用戶變量名: = 值;
或 select @用戶變量名: = 值;
方式二:通過 select into
select 字段 into @變量名
from 表;
查看用戶變量值
select @用戶變量名;
●局部變量:只能應用在 begin end 中第一句話。
聲明
declare 變量名 類型;
declare 變量名 類型 default 值;
賦值
方式一:
set 局部變量名 = 值;
或 set 局部變量名: = 值;
或 select @局部變量名: = 值;
方式二:通過 select into
select 字段 into 局部變量名
from 表;
使用
select 局部變量名;
二、存儲過程和函數
類似於java中的方法。
1.存儲過程
含義:一組預先編號的SQL語句的集合。減少了編譯次數和數據庫服務器的連接次數。
●創建語法
如果存儲過程體僅僅只有一句話,begin end 可以省略。存儲過程體中每條語句結尾都必須加分號。
create procedure 存儲過程名(參數列表)
begin存儲過程體()
【delimiter 結束標記】 -- 存儲過程的結尾可以使用 delimiter 重新設置。
end 結束標記【$】
參數模式:
in 該參數可以作為輸入,也就是該參數需要調用方法傳入值
out 該參數可以作為輸出,也就是該參數可以作為返回值
inout 該參數既可以作為輸入又可以作為輸出,也就是該參數既需要傳入值,又可以返回值
●調用語法
call 存儲過程名(實參列表) 結束標記【$】;
使用之后查看表時:select *from 表【$】;
案例:
創建帶 in 模式的存儲過程:

創建帶 out 模式的存儲過程:

創建帶 inout 模式的存儲過程:

2.刪除存儲過程
drop procedure 存儲過程名; --一次只能刪除一個
3.查看存儲過程的信息
show create procedure 存儲過程名;
●其他三個案例,供參考


三、函數
存儲過程:可以有0個返回,也可以有多個返回,適合做批量插入、批量更新。
函數:只能有1個返回,適合做處理數據后返回一個結果。
1.創建語法
create function 函數名(參數列表) returns 返回類型
begin函數體()
end
注意:
1.參數列表包含兩部分:參數名、參數類型
2.函數體:肯定會有return語句, 如果沒有會報錯。如果return語句沒有放在函數體的最后也不報錯,但不建議
3.函數體中僅有一-句話,則可以省略begin end
4.使用delimiter語句設置結束標記
2.調用函數
select 函數名(參數列表);
案例:
無參數有返回值

有參數有返回值

3.查看函數
show create function 函數名;
4.刪除函數
drop function 函數名;
●其他案例

