SQL基礎-變量 存儲過程和函數


一、變量

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 函數名;

●其他案例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM