最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL教程徹底學(xué)懂存儲(chǔ)過(guò)程

 更新時(shí)間:2021年10月26日 09:58:48   作者:數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)之美  
這篇文章主要為大家介紹了MySQL系列的存儲(chǔ)過(guò)程,文中詳細(xì)的為大家解釋存儲(chǔ)過(guò)程的相關(guān)概念及用法語(yǔ)法,以及對(duì)存儲(chǔ)過(guò)程的理解解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助

在這里插入圖片描述

1、存儲(chǔ)過(guò)程的相關(guān)概念

什么是存儲(chǔ)過(guò)程:
類(lèi)似于java中的方法,python中的函數(shù)。

使用存儲(chǔ)過(guò)程的好處:
1、提高代碼的重用性;
2、簡(jiǎn)化操作;
3、減少了編譯次數(shù),并且減少了和數(shù)據(jù)庫(kù)服務(wù)器的連接次數(shù),提高了效率。注意:平時(shí)每執(zhí)行一句sql語(yǔ)句,就會(huì)連接mysql服務(wù)器一次;

存儲(chǔ)過(guò)程的含義:
一組預(yù)先編譯好的SQL語(yǔ)句的集合。

2、存儲(chǔ)過(guò)程的用法

1)存儲(chǔ)過(guò)程的創(chuàng)建語(yǔ)法

create procedure 存儲(chǔ)過(guò)程名(參數(shù)列表)
begin
     存儲(chǔ)過(guò)程體(一組合法有效的sql語(yǔ)句)
end

2)對(duì)創(chuàng)建語(yǔ)法的理解

① 參數(shù)列表:參數(shù)列表包含3部分

參數(shù)模式   參數(shù)名   參數(shù)類(lèi)型

例如:in  stuname  varchar(20)

② 參數(shù)模式分類(lèi)

in:該參數(shù)可以作為輸入,也就是該參數(shù),需要調(diào)用方傳入值。

out:該參數(shù)可以作為輸出,也就是該參數(shù),可以作為返回值。

inout:該參數(shù)既可以作為輸入又可以作為輸出,也就是該參數(shù)既需要傳入值,又可以返回值。

③ 如果存儲(chǔ)過(guò)程體僅僅只有一句話,begin/end可以省略。

Ⅰ 存儲(chǔ)過(guò)程體中的每條sql語(yǔ)句的結(jié)尾,要求必須加分號(hào)。
Ⅱ 存儲(chǔ)過(guò)程的結(jié)尾,可以使用delimiter重新設(shè)置,否則都用";"會(huì)造成混淆。
語(yǔ)法:delimiter 結(jié)束標(biāo)記
例如:delimiter $  -- 表示以$作為結(jié)尾符號(hào)。

④ 存儲(chǔ)過(guò)程的調(diào)用語(yǔ)法

call 存儲(chǔ)過(guò)程名(實(shí)參列表);

3.空參的存儲(chǔ)過(guò)程

"存儲(chǔ)過(guò)程的整個(gè)執(zhí)行過(guò)程,最好在CMD窗口中執(zhí)行"
-- 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程
delimiter $
create procedure myp()
begin
    	insert into admin(username,`password`)
    	values ("tom","1111"),("jerry","2222"),
    	("jalen","3333"),("rose","4444"),("tonny","5555");
end $
-- 調(diào)用存儲(chǔ)過(guò)程
call myp()$
-- 查看結(jié)果。
select * from admin$

結(jié)果如下:

在這里插入圖片描述

4.帶in模式的存儲(chǔ)過(guò)程

在這里插入圖片描述

1)案例:創(chuàng)建存儲(chǔ)過(guò)程實(shí)現(xiàn),根據(jù)部門(mén)編號(hào),查詢對(duì)應(yīng)的部門(mén)名稱。

-- 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程
delimiter $
create procedure myp2(in num int)
begin
    select e.ename,d.dname
    from emp e 
    left join dept d on e.deptno=d.deptno
    where e.deptno=num;
end $
-- 調(diào)用存儲(chǔ)過(guò)程
call myp2(10)$

結(jié)果如下:

在這里插入圖片描述

2)案例:創(chuàng)建一個(gè)存儲(chǔ)過(guò)程實(shí)現(xiàn),用戶是否登陸成功。

在這里插入圖片描述

操作如下:

-- 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程
delimiter $
create procedure myp3(in username varchar(10),password varchar(10))
begin 
    declare result int;
    select count(*) into result
    from admin ad
    where ad.username=username
    and ad.password=password;
    select if(count(*) > 0,"登陸成功","登陸失敗") 登陸狀態(tài);
end $
-- 調(diào)用存儲(chǔ)過(guò)程
call myp3('john','8888');

結(jié)果如下:

在這里插入圖片描述

5.帶out模式的存儲(chǔ)過(guò)程

在這里插入圖片描述

1)案例1:創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,根據(jù)女神姓名,返回對(duì)應(yīng)的男神姓名

-- 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程
delimiter $
create procedure myp4(in beautyName varchar(20),out boyName varchar(20))
begin 
    select b.boyName into boyName
    from beauty left join boys b
    on beauty.boyfriend_id=b.id
    where beauty.name=beautyName;
end $
-- 調(diào)用
# 重新定義一個(gè)變量@boyname接收返回值boyName。
call myp4("趙敏",@boyname)$
select @boyname$

call myp4("柳巖",@boyname)$
select @boyname$

結(jié)果如下:

在這里插入圖片描述

2)案例2:創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,根據(jù)女神名,返回對(duì)應(yīng)的男神名和男神魅力值

-- 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程
delimiter $
create procedure myp5(in beautyName varchar(20),out boyName varchar(20),out userCP int)
begin 
    select b.boyName,b.userCP into boyName,userCP
    from beauty left join boys b
    on beauty.boyfriend_id=b.id
    where beauty.name=beautyName;
end $
-- 調(diào)用
# 重新定義一個(gè)變量@boyname接收返回值boyName。
call myp5("趙敏",@boyname,@usercp)$
select @boyname,@usercp$

call myp5("柳巖",@boyname,@usercp)$
select @boyname,@usercp$

結(jié)果如下:

在這里插入圖片描述

6.帶inout模式的存儲(chǔ)過(guò)程

1)案例1:傳入a和b兩個(gè)值,最終a和b都翻倍并返回。

-- 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程
delimiter $
create procedure myp6(inout a int ,inout b int)
begin 
    -- 局部變量不用加@符號(hào)。
    set a=a*2;
		set b=b*2;
end $
-- 調(diào)用
-- 特別注意調(diào)用這一塊兒。
set @m=10$
set @n=20$
call myp6(@m,@n)$
select @m,@n$

結(jié)果如下:

在這里插入圖片描述

7.存儲(chǔ)過(guò)程的案例解析

1)創(chuàng)建存儲(chǔ)過(guò)程或函效,實(shí)現(xiàn)傳入用戶名和密碼,插入到admin表中。

2)創(chuàng)建儲(chǔ)過(guò)程或函數(shù),實(shí)現(xiàn)傳入女神編號(hào),返回女神名稱和女神電話。

3)創(chuàng)建存儲(chǔ)存儲(chǔ)過(guò)程或函數(shù),實(shí)現(xiàn)傳入兩個(gè)女神生日,返回大小。

1)創(chuàng)建存儲(chǔ)過(guò)程或函效,實(shí)現(xiàn)傳入用戶名和密碼,插入到admin表中。

-- 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程
delimiter $
create procedure pro1(in username varchar(20),in userpwd varchar(20))
begin 
    insert into admin(username,`password`)
    values (username,userpwd);
end $

-- 調(diào)用存儲(chǔ)過(guò)程
call pro1("魯智深","123abc")$
select * from admin$

結(jié)果如下:

在這里插入圖片描述

2)創(chuàng)建儲(chǔ)過(guò)程或函數(shù),實(shí)現(xiàn)傳入女神編號(hào),返回女神名稱和女神電話。

-- 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程
delimiter $
create procedure pro2(in id int,out beautyName varchar(20),out beautyPhone varchar(20))
begin
    select beauty.name,beauty.phone into beautyName,beautyPhone
    from beauty
    where beauty.id=id;
end $

-- 調(diào)用存儲(chǔ)過(guò)程
call pro2(2,@beautyname,@beautyphone)$
select @beautyname,@beautyphone$

call pro2(3,@beautyname,@beautyphone)$
select @beautyname,@beautyphone$

結(jié)果如下:

在這里插入圖片描述

3)創(chuàng)建存儲(chǔ)存儲(chǔ)過(guò)程或函數(shù),實(shí)現(xiàn)傳入兩個(gè)女神生日,返回大小。

-- 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程
delimiter $
create procedure pro3(in borndate1 datetime,in borndate2 datetime,out result int)
begin
    select datediff(borndate1,borndate2) into result;
end $

-- 調(diào)用存儲(chǔ)過(guò)程
call pro3("1993-8-12",now(),@result)$
select @result$

結(jié)果如下:

在這里插入圖片描述

8.存儲(chǔ)過(guò)程的刪除

drop procedure 存儲(chǔ)過(guò)程名;

9.查看某個(gè)存儲(chǔ)過(guò)程的信息

在這里插入圖片描述

10.存儲(chǔ)過(guò)程案例考核

1)創(chuàng)建存儲(chǔ)過(guò)程或函數(shù)實(shí)現(xiàn)傳入女神名稱,返回:女神AND男神,格式的字符串
   如傳入:小昭
   返回:小昭AND張無(wú)忌
2)創(chuàng)建存儲(chǔ)過(guò)程或函數(shù),根據(jù)傳入的條目數(shù)和起始索引,查詢beauty表的記錄。

1)創(chuàng)建存儲(chǔ)過(guò)程或函數(shù),實(shí)現(xiàn)傳入女神名稱,返回:女神AND男神,格式的字符串。

delimiter $
create procedure test1(in beautyname varchar(20))
begin
    select concat(beauty.name,"AND",boys.boyName)
    from beauty left join boys
    on beauty.boyfriend_id=boys.id
    where beauty.name=beautyname;
end $

call test1("柳巖")$
call test1("趙敏")$

結(jié)果如下:

在這里插入圖片描述

2)創(chuàng)建存儲(chǔ)過(guò)程或函數(shù),根據(jù)傳入的條目數(shù)和起始索引,查詢beauty表的記錄。

delimiter $
create procedure test2(in startIndex int,in length int)
begin
    select *
    from beauty
    limit startIndex,length;
end $
-- 每頁(yè)顯示3條記錄
-- 顯示第2頁(yè)
call test2(3,3)$
-- 顯示第3頁(yè)
call test2(6,3)$

結(jié)果如下:

在這里插入圖片描述

以上就是MySQL系列徹底學(xué)懂存儲(chǔ)過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于MySQL存儲(chǔ)過(guò)程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL中聚合函數(shù)count的使用和性能優(yōu)化技巧

    MySQL中聚合函數(shù)count的使用和性能優(yōu)化技巧

    這篇文章主要介紹了Windows 10,MySQL版本是5.7.12-log環(huán)境下mysql中聚合函數(shù)count的使用和性能優(yōu)化,需要的朋友可以參考下
    2018-06-06
  • mysql刪除字段的基本語(yǔ)法和示例

    mysql刪除字段的基本語(yǔ)法和示例

    在MySQL中,使用ALTER?TABLE語(yǔ)句配合DROP?COLUMN子句可以刪除表中的某個(gè)字段,示例中,從employees表中刪除email字段,此操作會(huì)永久刪除該字段的數(shù)據(jù),因此需提前備份,需要的朋友可以參考下
    2024-09-09
  • IDEA鏈接MySQL報(bào)錯(cuò)08001和連接成功后不顯示表的問(wèn)題及解決方法

    IDEA鏈接MySQL報(bào)錯(cuò)08001和連接成功后不顯示表的問(wèn)題及解決方法

    這篇文章主要介紹了IDEA鏈接MySQL報(bào)錯(cuò)08001和連接成功后不顯示表的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • MySQL?8.0.29?解壓版安裝配置方法圖文教程

    MySQL?8.0.29?解壓版安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了MySQL?8.0.29?解壓版安裝配置方法圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • MySQL 有關(guān)MHA搭建與切換的幾個(gè)錯(cuò)誤log匯總

    MySQL 有關(guān)MHA搭建與切換的幾個(gè)錯(cuò)誤log匯總

    這篇文章主要介紹了MySQL 有關(guān)MHA搭建與切換的幾個(gè)錯(cuò)誤log匯總,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-12-12
  • MySQL存儲(chǔ)路徑遷移的詳細(xì)步驟

    MySQL存儲(chǔ)路徑遷移的詳細(xì)步驟

    在構(gòu)建Web應(yīng)用程序時(shí),MySQL是存儲(chǔ)數(shù)據(jù)的核心工具,在云服務(wù)器上,正確設(shè)置MySQL的存儲(chǔ)路徑對(duì)應(yīng)用性能至關(guān)重要,通過(guò)遷移,我們不僅解決了空間不足的問(wèn)題,還能讓數(shù)據(jù)庫(kù)運(yùn)行得更快,所以本文將給大家介紹MySQL存儲(chǔ)路徑遷移的詳細(xì)步驟,需要的朋友可以參考下
    2024-06-06
  • mysql主從同步原理及應(yīng)用場(chǎng)景示例詳解

    mysql主從同步原理及應(yīng)用場(chǎng)景示例詳解

    這篇文章主要為大家介紹了mysql主從同步原理及應(yīng)用場(chǎng)景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • MySQL報(bào)錯(cuò):sql_mode=only_full_group_by的4種輕松解決方法(含舉例)

    MySQL報(bào)錯(cuò):sql_mode=only_full_group_by的4種輕松解決方法(含舉例)

    今天學(xué)mysql函數(shù)的時(shí)候在自己服務(wù)器上的MySQL碰見(jiàn)了個(gè)奇怪的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于MySQL報(bào)錯(cuò):sql_mode=only_full_group_by的4種輕松解決方法,需要的朋友可以參考下
    2023-01-01
  • MySQL 中的 LIMIT 語(yǔ)句及基本用法

    MySQL 中的 LIMIT 語(yǔ)句及基本用法

    LIMIT 語(yǔ)句用于限制查詢返回的行數(shù),常用于分頁(yè)查詢或取部分?jǐn)?shù)據(jù),提高查詢效率,這篇文章主要介紹了MySQL 中的 LIMIT 語(yǔ)句,需要的朋友可以參考下
    2025-04-04
  • mysql多表join時(shí)候update更新數(shù)據(jù)的方法

    mysql多表join時(shí)候update更新數(shù)據(jù)的方法

    如果item表的name字段為''就用resource_library 表的resource_name字段前面加上字符串Review更新它,他們的關(guān)聯(lián)關(guān)系在表resource_review_link中。
    2011-03-03

最新評(píng)論

宜城市| 淄博市| 永仁县| 大英县| 聂拉木县| 武汉市| 宁乡县| 鹤峰县| 东源县| 孝感市| 永顺县| 上思县| 宁明县| 大田县| 兰溪市| 福安市| 怀来县| 桐庐县| 冀州市| 榕江县| 大足县| 平阴县| 大宁县| 保山市| 清远市| 承德县| 大新县| 邢台县| 随州市| 清河县| 安陆市| 措美县| 开封县| 云龙县| 酉阳| 肥城市| 会理县| 多伦县| 东明县| 巴中市| 昌平区|