国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)庫(MySQL)的存儲過程

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)庫(MySQL)的存儲過程。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、存儲過程介紹

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

存儲過程是事先經(jīng)過編譯并存儲在數(shù)據(jù)庫中的一段SQL 語句的集合,調(diào)用存儲過程可以簡化應(yīng)用開發(fā)人員的很多工作,減少數(shù)據(jù)在數(shù)據(jù)庫和應(yīng)用服務(wù)器之間的傳輸,對于提高數(shù)據(jù)處理的效率是有好處的。 存儲過程思想上很簡單,就是數(shù)據(jù)庫SQL 語言層面的代碼封裝與重用。

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

特點(diǎn)

  1. 封裝,復(fù)用
  2. 可以接收參數(shù),也可以返回?cái)?shù)據(jù)
  3. 減少網(wǎng)絡(luò)交互,效率提升

二、存儲過程的基本語法

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

2.1? 創(chuàng)建

CREATE PROCEDURE 存儲過程名稱( [參數(shù)列表] ) 

BEGIN

	 SQL 語句 

END;

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

2.2? 調(diào)用

CALL 名稱 ( [參數(shù)])

2.3? 查看

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

--查詢指定數(shù)據(jù)庫的存儲過程及狀態(tài)信息

SELECT* FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = '對應(yīng)的數(shù)據(jù)庫名稱'

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

--查詢某個(gè)存儲過程的定義

SHOW CREATE PROCEDURE 存儲過程名稱

2.4? 刪除

DROP PROCEDURE [ IFEXISTS ] 存儲過程名稱

三、存儲過程中的變量

3.1? 系統(tǒng)變量

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

系統(tǒng)變量是MySQL服務(wù)器提供,不是用戶定義的,屬于服務(wù)器層面。分為全局變量(GLOBAL)、會話變量(SESSION)。
--查看系統(tǒng)變量
SHOW [SESSION | GIOBAL ] VARIABLFS ;? ? ? ? ?--查看所有系統(tǒng)變景
SHOW [SESSION |GLOBAL] VARUABLES LIKE ..…. ;? ? ? ?--可以通過UKL模糊匹配方式查找變量

SELECT @@[SESSION |?GLOBAL] 系統(tǒng)變量名;? ? ? ?--查看指定變量的值


--設(shè)置系統(tǒng)變量
SET [ SESSION| GLOBAL] 系統(tǒng)變量名 = 值;
SET @@[SESSION | GLOBAL] 系統(tǒng)變量名 = 值;

注意:
如果沒有指定SESSION/GLOBAL,默認(rèn)是SESSION,會話變量。
mysql服務(wù)重新啟動之后,所設(shè)置的全局參數(shù)會失效,要想不失效,可以在/etc/my.cnf 中配置。

?

3.2? 用戶自定義變量

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

用戶定義變量是用戶根據(jù)需要自己定義的變量,用戶變量不用提前聲明,在用的時(shí)候直接用“@變量名”使用就可以。其作用域?yàn)楫?dāng)前連接。

--賦值
SET @var_name = expr [,@var_name = expr ]... ;

SET @var_name := expr [,@var_name := exprl] ... ;

SELECT @var_name :=expr [,@var_name :=expr ] ..- ;

SELECT字段名INTO@var_name FROM表名;


--使用
SELECT @var_name ;

?

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

注意:

用戶定義的變量無需對其進(jìn)行聲明或初始化,如果沒有進(jìn)行聲明或初始化,將會獲取到的值為NULL。如下所示:@abc沒有聲明,查看自定義變量@abc將會獲取到null。

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

3.3? 局部變量

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

局部變量是根據(jù)需要定義的在局部生效的變量,訪問之前,需要DECLARE聲明??捎米鞔鎯^程內(nèi)的局部變量和輸入?yún)?shù),局部變量的范圍是在其內(nèi)聲明的BEGIN.... END塊。

聲明
DECLARE? 變量名? 變量類型? [DEFAULT...];
變量類型就是數(shù)據(jù)庫字段類型:INT、BIGINT、CHAR.VARCHAR.DATE、TIME等。

賦值
SET 變量名 = 值;

SET 變量名 := 值;
SELECT 字段名 INTO 變量名 FROM 表名....;

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

四、存儲過程--流程控制

4.1? 存儲過程-if判斷

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

語法:
IF 條件1 THEN
ELSEIF 條件2 THEN????????--可選
ELSE????????--可選
END IF;
?

定義存儲過程,完成如下需求:
根據(jù)定義的分?jǐn)?shù)scre變量,判定當(dāng)前分?jǐn)?shù)對應(yīng)的分?jǐn)?shù)等級。
1.score >=85分,等級為優(yōu)秀。
2.score >=60分且score <85分,等級為及格。
3.score<60分,等級為不及格。

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

4.2? 存儲過程-參數(shù)

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

用法:

CREATE PROCEDURE 存儲過程名稱 ([ IN/OUT/INOUT參數(shù)名參數(shù)類型 ])
BEGIN
????????--SQL語句
END ;
?

定義存儲過程,完成如下需求:

1.根據(jù)傳入?yún)?shù)score,判定當(dāng)前分?jǐn)?shù)對應(yīng)的分?jǐn)?shù)等級,并返回。
①score >=85分,等級為優(yōu)秀。
②score >= 60分且score <85分,等級為及格。
③score<60分,等級為不及格。

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

?2.將傳入的200分制的分?jǐn)?shù),進(jìn)行換算,換算成百分制,然后返回。
數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

4.3? case

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

定義存儲過程,完成如下需求:

根據(jù)傳入的月份,判定月份所屬的季節(jié)(要求采用case結(jié)構(gòu))。
1. 1-3月份,為第一季度
2. 4-6月份,為第二季度
3. 7-9月份,為第三季度
4. 10-12月份,為第四季度
數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

? ?

五、存儲過程-循環(huán)

5.1??循環(huán)-while

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

定義存儲過程,完成如下需求:

計(jì)算從1累加到n的值,n為傳入的參數(shù)值。
數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

5.2??循環(huán)-repeat

repeat循環(huán)控制語句至少會執(zhí)行一次,滿足條件則退出。

定義存儲過程,完成如下需求:

計(jì)算從1累加到n的值,n為傳入的參數(shù)值。

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

?

5.3??循環(huán)-loop

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

LOOP實(shí)現(xiàn)簡單的循環(huán),如果不在sQL邏輯中增加退出循環(huán)的條件,可以用其來實(shí)現(xiàn)簡單的死循環(huán)。LOOP可以配合一下兩個(gè)語句使用:

① LEAVE: 配合循環(huán)使用,退出循環(huán)。
② ITERATE: 必須用在循環(huán)中,作用是跳過當(dāng)前循環(huán)剩下的語句,直接進(jìn)入下一次循環(huán)。


語法:

[begin_label:] LOOP
????????SQL邏輯..
END LOOP [end_ label];

LEAVE label; ????????--退出指定標(biāo)記的循環(huán)體
ITERATE label; ????????--直接進(jìn)入下一次循環(huán)

定義存儲過程,完成如下需求:

1.計(jì)算從1累加到n的值,n為傳入的參數(shù)值。

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql
2.計(jì)算從1到n之間的偶數(shù)累加的值,n為傳入的參數(shù)值。

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

六、存儲過程-游標(biāo)-cursor

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

游標(biāo)(CURSOR)是用來存儲查詢結(jié)果集的數(shù)據(jù)類型,在存儲過程和函數(shù)中可以使用游標(biāo)對結(jié)果集進(jìn)行循環(huán)的處理。游標(biāo)的使用包括游標(biāo)的聲明、OPEN、FETCH和CLOSE,其語法分別如下。
?

聲明游標(biāo)
DECLARE? 游標(biāo)名稱? CURSOR? FOR? 查詢語句;
打開游標(biāo)
OPEN? 游標(biāo)名稱;
獲取游標(biāo)記錄
FETCH? 游標(biāo)名稱? INTO? 變量 [,變量];
關(guān)閉游標(biāo)
CLOSE? 游標(biāo)名稱;
?

定義存儲過程,完成如下需求:

根據(jù)傳入的參數(shù)uage,來查詢用戶表tb_user中,所有的用戶年齡小于等于uage的用戶姓名(name)和專業(yè)(profession),并將用戶的姓名和專業(yè)插入到所創(chuàng)建的一張新表tb_user_pro
(id,name,profession)中。
--邏輯:
①聲明游標(biāo),存儲查詢結(jié)果集

②準(zhǔn)備:創(chuàng)建表結(jié)構(gòu)

③開啟游標(biāo)

④獲取游標(biāo)中的記錄

⑤插入數(shù)據(jù)到新表中

⑥關(guān)閉游標(biāo)
數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

完整的存儲過程語句如下:?

create procedure p1l(in uage int)

	begin

		declare uname varchar(100); 

		decLare upro varchar(100);

		declare u_cursor cursor for select name,profession from tb_user where age <= uage; 

		當(dāng) 條件處理程序的處理的狀態(tài)碼為02000的時(shí)候,就會退出。
		declare exit handler for SQLSTATE '02000'close u_cursor;

		drop table if exists tb_user_pro; 

		create table if not exists tb_user_pro(

		id int primary key auto_increment, 

		name varchar(100), 

		profession varchar(100)

		);

		open u_cursor; 

		while true do 

		fetch u_cursor into uname,Upro; 

		insert into tb_user_pro values(null,uname,Upro); 

		end while;

		close u_cursor; 

	end;

七、存儲過程-條件處理程序-handle

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

八、存儲函數(shù)

數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql

定義存儲函數(shù),完成如下需求:

計(jì)算從1累加到n的值,n為傳入的參數(shù)值。
數(shù)據(jù)庫(MySQL)的存儲過程,數(shù)據(jù)庫,mysql文章來源地址http://www.zghlxwxcb.cn/news/detail-691033.html

到了這里,關(guān)于數(shù)據(jù)庫(MySQL)的存儲過程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL數(shù)據(jù)庫——存儲過程-變量(系統(tǒng)變量、用戶定義變量、局部變量)

    目錄 系統(tǒng)變量? 1.查看系統(tǒng)變量? 2.設(shè)置系統(tǒng)變量 演示示例 用戶定義變量 1.賦值? 2.使用 演示示例 局部變量 聲明? 賦值 演示示例 變量 在MySQL中變量分為三種類型: 系統(tǒng)變量、用戶定義變量、局部變量。 系統(tǒng)變量是MySQL服務(wù)器提供,不是用戶定義的,屬于服務(wù)器層面。分為全

    2024年02月05日
    瀏覽(43)
  • Mysql數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告--實(shí)驗(yàn)五 存儲過程和觸發(fā)器

    Mysql數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告--實(shí)驗(yàn)五 存儲過程和觸發(fā)器

    在這個(gè)系列會更新一些最近老師要求寫的實(shí)驗(yàn)報(bào)告~ 大家盡量對著我的文章做一個(gè)參考,不要盲目的cv,畢竟這個(gè)對于我們以后的工作學(xué)習(xí)還是十分重要的。 從這個(gè)實(shí)驗(yàn)開始,就不在cmd命令行里面進(jìn)行mysql數(shù)據(jù)庫的操作,因?yàn)榇a長度和代碼的復(fù)雜性,需使用 MySQL Workbench: 雙

    2024年02月09日
    瀏覽(101)
  • MySQL數(shù)據(jù)庫——存儲過程-介紹以及基本語法(特點(diǎn)、創(chuàng)建、調(diào)用、查看、刪除、示例)

    MySQL數(shù)據(jù)庫——存儲過程-介紹以及基本語法(特點(diǎn)、創(chuàng)建、調(diào)用、查看、刪除、示例)

    目錄 介紹 特點(diǎn) 基本語法 創(chuàng)建 調(diào)用 查看 刪除? 示例? 存儲過程是 事先經(jīng)過編譯 并 存儲在數(shù)據(jù)庫 中的一段 SQL 語句的 集合 ,調(diào)用存儲過程可以簡化應(yīng)用開發(fā)人員的很多工作,減少數(shù)據(jù)在數(shù)據(jù)庫和應(yīng)用服務(wù)器之間的傳輸,對于提高數(shù)據(jù)處理的效率是有好處的。 存儲過程思想

    2024年02月06日
    瀏覽(100)
  • 【Mysql】X-DOC:Mysql數(shù)據(jù)庫大量數(shù)據(jù)查詢加速(定時(shí)JOB和存儲過程應(yīng)用案例)

    【Mysql】X-DOC:Mysql數(shù)據(jù)庫大量數(shù)據(jù)查詢加速(定時(shí)JOB和存儲過程應(yīng)用案例)

    在某中臺系統(tǒng)中,設(shè)計(jì)了大量的基礎(chǔ)數(shù)據(jù)(維度數(shù)據(jù)、維度映射關(guān)系等)來支撐業(yè)務(wù)功能,業(yè)務(wù)表中存在大量的維度外鍵關(guān)聯(lián)字段,其優(yōu)點(diǎn)是可以實(shí)現(xiàn)前端的選擇錄入,數(shù)據(jù)校驗(yàn),確保錄入數(shù)據(jù)的準(zhǔn)確性;缺點(diǎn)是在做業(yè)務(wù)報(bào)表時(shí),需要做大量的維度關(guān)聯(lián)(join)操作。 受限于

    2024年02月12日
    瀏覽(23)
  • 【MySQL】探索MySQL存儲過程的魔力,初學(xué)者的數(shù)據(jù)庫編程秘笈(內(nèi)含實(shí)戰(zhàn)SQL腳本)

    【MySQL】探索MySQL存儲過程的魔力,初學(xué)者的數(shù)據(jù)庫編程秘笈(內(nèi)含實(shí)戰(zhàn)SQL腳本)

    ?????作者名稱:DaenCode ??作者簡介:啥技術(shù)都喜歡搗鼓搗鼓,喜歡分享技術(shù)、經(jīng)驗(yàn)、生活。 ??人生感悟:嘗盡人生百味,方知世間冷暖。 ??所屬專欄:重溫MySQL MySQL存儲過程作為一種服務(wù)器端的 數(shù)據(jù)庫編程方式 ,提供了高效、可重用的方法來執(zhí)行相對復(fù)雜的數(shù)據(jù)庫操

    2024年02月15日
    瀏覽(95)
  • 數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程實(shí)驗(yàn)七存儲過程與函數(shù)的創(chuàng)建管理

    數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程實(shí)驗(yàn)七存儲過程與函數(shù)的創(chuàng)建管理

    1. 理解存儲過程和函數(shù)的概念。 2. 掌握創(chuàng)建存儲過程和函數(shù)的方法。 3. 掌握執(zhí)行存儲過程和函數(shù)的方法。 4. 掌握游標(biāo)的定義、使用方法。 1.驗(yàn)證性實(shí)驗(yàn):某超市的食品管理的數(shù)據(jù)庫的Food表對其操作。 2.設(shè)計(jì)性試驗(yàn):學(xué)校教師管理數(shù)據(jù)庫中的teacherInfo表對其操作。 三、實(shí)驗(yàn)步

    2024年02月03日
    瀏覽(23)
  • MySQL 數(shù)據(jù)庫存儲引擎

    MySQL 數(shù)據(jù)庫存儲引擎

    目錄 一、存儲引擎簡介 二、MyISAM存儲引擎 1、MylSAM介紹 2、MyISAM表支持3種不同的存儲格式 3、MylSAM的特點(diǎn) 4、MyISAM使用的生產(chǎn)場景 三、InnoDB存儲引擎 1、InnoDB介紹 2、InnoDB的特點(diǎn) 3、InnoDB適用生產(chǎn)場景 4、MyISAM和InnoDB的區(qū)別 四、查看和修改存儲引擎 1、查看系統(tǒng)支持的存儲引擎

    2023年04月25日
    瀏覽(94)
  • MySQL數(shù)據(jù)庫之存儲引擎

    MySQL數(shù)據(jù)庫之存儲引擎

    MySQL中的數(shù)據(jù)用各種不下同的技術(shù)存儲在文件中,每一種技術(shù)都使用不同的存儲機(jī)制、索引技巧、鎖定水平并最終提供不同的功能和能力,這些不同的技術(shù)以及配套的功能在MySQL中稱為存儲引擎。 存儲引擎是MySQL將數(shù)據(jù)存儲在文件系統(tǒng)中的存儲方式或者存儲格式。 存儲引擎是

    2024年02月03日
    瀏覽(96)
  • 【MySQL數(shù)據(jù)庫 | 第十六篇】存儲引擎

    【MySQL數(shù)據(jù)庫 | 第十六篇】存儲引擎

    目錄 ?前言: ?MySQL體系結(jié)構(gòu)圖: 存儲引擎簡介: 1. InnoDB存儲引擎: 2. MyISAM存儲引擎: 3. MEMORY存儲引擎: 4. NDB Cluster存儲引擎: 5. ARCHIVE存儲引擎: 存儲引擎語法: ACID與行級鎖: ?總結(jié): 經(jīng)過前面15篇的學(xué)習(xí),我們已經(jīng)學(xué)完了SQL的基本語法內(nèi)容,大致掌握了數(shù)據(jù)庫的操作

    2024年02月08日
    瀏覽(117)
  • 【MySQL數(shù)據(jù)庫】最全安裝過程及配置詳解

    【MySQL數(shù)據(jù)庫】最全安裝過程及配置詳解

    ???♂?iecne個(gè)人主頁: : iecne的學(xué)習(xí)日志 ??每天 關(guān)注 iecne的作品,一起進(jìn)步 ??一起學(xué)習(xí),必看iecne ??希望大家多多支持??一起進(jìn)步呀!

    2024年02月02日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包