日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MYSQL储存过程和储存函数和变量

發布時間:2025/4/16 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MYSQL储存过程和储存函数和变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

儲存過程和儲存函數和變量

變量的應用:

變量分類為: 系統變量和自定義變量

系統變量和全局變量還可以細分:

系統變量分類: 全局變量和會話變量

自定義變量分類: 用戶變量和局部變量

下面是變量的一些具體用法:
系統變量

說明:變量由系統提供,不是用戶定義,屬于服務器層面;
1.查看所有的系統變量:
show global| session variables;
(global全局變量,‘|’代表二選一,session會話變量)

2.產看滿足條件的部分系統變量:
show global | session variables like ‘模糊查詢’;
3.查看指定的某個指定系統變量的值:
select @@global | session.系統變量名;
4.為某個系統變量賦值(兩種方式):
set global| session 系統變量名=值;
set @@global| session.系統變量名=值;
5.使用系統變量:
select @用戶變量名;
注意: 如果是全局變量則需要加globle,如果是會話變量則加session,如果不寫則默認為會話變量。
6.全局變量的作用域:
服務器每一次啟動都會為所有的全局變量賦初始值,針對所有的會話(連接)有效,但是不能跨重啟。 會話變量的作用域: 僅僅針對于會話(連接)有效,

用戶變量

1.用戶變量作用域:針對于當前會話(連接)有效;
2.使用步驟:
聲明、賦值,使用 (自定義變量要求聲明的的同時必須初始化)
聲明并初始化(有三種方式):
set @用戶變量名 =值;
set @用戶變量名:=值;
select @用戶變量名:=值;
(初始化的同時也相當于給自定義變量第一次賦值)
賦值(有四種方式):
set @用戶變量名 =值;
set @用戶變量名:=值;
select @用戶變量名:=值;
select 字段 into 用戶變量名 from 表;
(要求查詢出來的字段值為一個,一組的話無法賦值)
eg: select count(*) into @name from employees;
3.用戶變量使用:
select @用戶變量名;

局部變量:

1.作用域:僅僅在定義它的begin and中有效;應用在begin and的第一句話
2.使用步驟:
聲明:DECLARE 變量名 類型;
聲明同時賦值:DECLARE 變量名 類型 DEFAULT 值;
賦值(四種方式):
(一個set語句可以為多個變量賦值,各個變量賦值語句之間用‘,’隔開)
set 局部變量名=值;
set 局部變量名:=值;
select @局部變量:=值;
select 字段 into 局部變量名 from 表 WHERE 限定條件;
3.使用局部變量:select 局部變量名;

例:
#1,查看系統的全局變量
show global variables;

#2.查看部分的全局變量
show global variables like ‘char%’;

#3.查看指定是某個全局變量
SELECT @@global.autocommit;

儲存過程

存儲過程和函數是事先經過編譯并存儲在數據庫中的一段SQL語句的集合。

語法格式: create procedure 儲存過程名(參數列表) begin儲存過程體(sql語句) and

1.參數列表包含三部分
參數模式 參數名 參數類型
舉例:
in stuname varchar(20);

參數模式: in 該參數可以作為輸入,需要調用方傳入值 out 該參數可以作為輸出,該參數可以作為返回值 inout 該參數既可以作為輸入又可以作為輸出

2.如果儲存過程體中僅僅有一句話:begin and可以省略
3.
儲存過程體中每條SQL語句的結尾都必須要使用;結尾;
儲存過程的結尾可以使用delimiter重新設置語句結束標識符;

語法:delimiter 結束標記;

MySQL儲存過程的語句塊以begin開始,以end結束。語句體可以包含變量的聲明、控制語句、sql查詢語句等。由于儲存過程內部語句要以分號結尾,所以出現在定義儲存過程之前,應將語句結束標志“;”更改為其他字符,并且因該降低該字符在儲存過程那個中出現的機率,更改結束標志可以使用delimiter關鍵字定義。

調用儲存過程語法

語法格式: call 儲存過程名(實參列表);

對儲存過程中的參數模式具體分析

空參列表:

帶IN的參數列表

帶out的參數列表

帶INOUT的參數列表

儲存過程和儲存函數的區別

存儲過程和函數的區別:

? 函數必須有返回值,而存儲過程沒有。 ? 存儲過程的參數可以是IN、OUT、INOUT類型,函數的參數只能是IN 優點: ? 存儲過程只在創建時進行編譯;而SQL語句每執行一次就編譯一次,所以使用存儲過程可以提高數據庫執行速度。 ? 簡化復雜操作,結合事務一起封裝。 ? 復用性好 ? 安全性高,可指定存儲過程的使用權

說明:

并發量少的情況下,很少使用存儲過程。 并發量高的情況下,為了提高效率,用存儲過程比較多。

mysql變量的術語分類

1.用戶變量:以"@“開始,形式為”@變量名",由客戶端定義的變量。
用戶變量跟mysql客戶端是綁定的,設置的變量只對當前用戶使用的客戶端生效,當用戶斷開連接時,所有變量會自動釋放。
2.全局變量:定義時如下兩種形式,set GLOBAL 變量名 或者 set @@global.變量名
對所有客戶端生效,但只有具有super權限才可以設置全局變量。
3.會話變量:只對連接的客戶端有效。
4.局部變量:設置并作用于begin…end語句塊之間的變量。
declare語句專門用于定義局部變量。而set語句是設置不同類型的變量,包括會話變量和全局變量
語法:declare 變量名[…] 變量類型 [default 值]
declare定義的變量必須寫在復合語句的開頭,并且在任何其它語句的前面。

變量的賦值:
直接賦值: set 變量名=表達式值或常量值[…];

用戶變量的賦值:
1、set 變量名=表達式或常量值;
2、也可以將查詢結果賦值給變量(要求查詢返回的結果只能有一行)
例:set 列名 into 變量名 from 表名 where 條件;
3、select 值 into @變量名;
客戶端變量不能相互共享。

儲存函數

創建語法:create FUNCTION 函數名(參數列表) RETURNS 返回類型begin 函數體AND 注意:參數列表包含兩部分:參數名 參數類型(函數體不定會有return語句,如果ruturn語句沒有放在函數體最后也不會報錯,但是不建議)當函數體只有一句話的時候,begin and可以省略delimiter 語句設置結束的標識符;

2.調用函數

SELECT 函數名(參數列表);

查看儲存過程和儲存函數

show cerate {procedure| function} 存儲過程名;

刪除儲存過程和儲存函數

drop {PROCEDURE | FUNCTION } 存儲過程名;

總結

以上是生活随笔為你收集整理的MYSQL储存过程和储存函数和变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。