亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    MySQL存儲過程高級SQL語句總結

    本篇文章給大家?guī)砹岁P于mysql的相關知識,其中主要介紹了關于存儲過程的高級SQL語句的相關內(nèi)容,下面一起來看一下,希望對大家有幫助。

    MySQL存儲過程高級SQL語句總結

    程序員必備接口測試調(diào)試工具:立即使用
    Apipost = Postman + Swagger + Mock + Jmeter
    Api設計、調(diào)試、文檔、自動化測試工具
    后端、前端、測試,同時在線協(xié)作,內(nèi)容實時同步

    推薦學習:mysql視頻教程

    MySQL高級SQL語句(存儲過程)

    一、存儲過程的概述

    1.1 什么是存儲過程

    存儲過程是一組為了完成特定功能的SQL語句集合。
    存儲過程在使用過程中是將常用或者復雜的工作預先使用SQL語句寫好并用一個指定的名稱存儲起來,這個過程經(jīng)編譯和優(yōu)化后存儲在數(shù)據(jù)庫服務器中。當需要使用該存儲過程時,只需要調(diào)用它即可。存儲過程在執(zhí)行上比傳統(tǒng)SQL速度更快、執(zhí)行效率更高。

    1.2 存儲過程的有點

    1. 執(zhí)行一次后,會將生成的二進制代碼駐留緩沖區(qū),提高執(zhí)行效率。
    2. SQL語句加上控制語句的集合,靈活性高。
    3. 在服務器端存儲,客戶端調(diào)用時,降低網(wǎng)絡負載。
    4. 可多次重復被調(diào)用,可隨時修改,不影響客戶端調(diào)用。
    5. 可完成所有的數(shù)據(jù)庫操作,也可控制數(shù)據(jù)庫的信息訪問權限。

    二、創(chuàng)建、調(diào)用和查看存儲過程

    2.1 創(chuàng)建存儲過程

    delimiter $$                 #將語句的結束符號從分號;臨時改為兩個$$(可以自定義) create procedure proc ()     #創(chuàng)建存儲過程,過程名為proc,不帶參數(shù) -> begin                     #過程體以關鍵字begin開始 -> select * from store_info; #過程體語句 -> end $$                    #過程體以關鍵字end結束  delimiter ;                   #將語句的結束符號恢復為分號
    登錄后復制

    示例:

    delimiter $$create procedure proc01 ()-> bengin -> create table student(id int,name char(10),age int);-> insert into student values(1,'zhangsan',18);-> insert into student values(2,'lisi',18);-> select * from student;-> end $$delimiter ;
    登錄后復制

    MySQL存儲過程高級SQL語句總結

    2.2 調(diào)用和查看存儲過程

    call proc;               #調(diào)用存儲過程    show create procedure [數(shù)據(jù)庫.]存儲過程名;  #查看某個存儲過程的具體信息  show create procedure proc; show create procedure procG  show procedure status [like '%proc%'] G
    登錄后復制

    示例:

    call proc01;      show create procedure proc01;  show create procedure proc01G       #查看存儲過程的具體信息    show procedure status like '%Proc01%'G
    登錄后復制

    MySQL存儲過程高級SQL語句總結
    MySQL存儲過程高級SQL語句總結
    MySQL存儲過程高級SQL語句總結

    2.3 刪除存儲過程

     #存儲過程內(nèi)容的修改方法是通過刪除原有存儲過程,之后再以相同的名稱創(chuàng)建新的存儲過程。 drop procedure if exists proc;  #僅當存在時刪除,不添加If EXISTS 時,如果指定的過程不存在,則產(chǎn)生一個錯誤。
    登錄后復制

    示例:

    drop procedure if exists proc01;
    登錄后復制

    MySQL存儲過程高級SQL語句總結

    三、存儲過程的參數(shù)

    • IN 輸入?yún)?shù): 表示調(diào)用者向過程傳入值。(傳入值可以是字面量或變量)
    • OUT 輸出參數(shù): 表示過程向調(diào)用者傳出值。(可以返回多個值)(傳出值只能是變量)
    • INOUT 輸入輸出參數(shù): 既表示調(diào)用者向過程傳入值,又表示過程向調(diào)用者傳出值。(值只能是變量)

    注意:變量名不能含有下劃線。

    delimiter $$create procedure proc2(in stuname char(20))  #參數(shù)為stuname,數(shù)據(jù)類型一定要與下面的where語句后字段的數(shù)據(jù)類型相同-> begin -> select * from student where name = stuname;-> end $$delimiter ;call proc2('zhangsan');       #調(diào)用存儲過程,并傳入?yún)?shù)‘zhangsan’
    登錄后復制

    MySQL存儲過程高級SQL語句總結

    四、存儲過程的控制語句

    MySQL存儲過程高級SQL語句總結

    4.1 條件語句 :if-then-else … end if

     delimiter $$    create procedure proc03(in innum int)   #創(chuàng)建存儲過程proc03,參數(shù)為innum,類型為int   -> begin   -> declare var int;         #定義變量var為int類型   -> set var=innum*2;         #變量var的值等于傳入的參數(shù)值乘2  -> if var>=10 then          #當var的值大于10時,id值會加1,否則減1  -> update ss set id=id+1;    -> else   -> update ss set id=id-1;    -> end if;    -> end $$     delimiter ;    call proc03(8);    #調(diào)用存儲過程,并傳入?yún)?shù)8    call proc03(3);    #調(diào)用存儲過程,并傳入?yún)?shù)3
    登錄后復制

    MySQL存儲過程高級SQL語句總結

    4.2 循環(huán)語句 :while ···· end while

     delimiter $$                   #修改默認結束符為$$  create procedure proc05()      #創(chuàng)建存儲過程proc04  -> begin                       #過程體以關鍵字begin開始  -> declare var int(10);        #定義變量var為int類型  -> set var=0;                  #var的起始值為0  -> while var<6 do              #使用while循環(huán),當var值小于6時滿足條件,則向表中插入var的值  -> insert into ss values(var);    -> set var=var+1;              #每次循環(huán)后var值自增1  -> end while;                  #結束while循環(huán)  -> end $$                      #創(chuàng)建存儲過程結束    delimiter ;                    #重新修改默認結束符為原始的;    call proc05;                   #調(diào)用存儲過程proc04
    登錄后復制

    MySQL存儲過程高級SQL語句總結

    推薦學習:mysql視頻教程

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號