日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

關于MySQL的存儲過程與存儲函數

瀏覽:325日期:2023-05-08 10:17:44
目錄
  • 初識存儲過程
  • 存儲過程語法
  • 存儲過程調用
  • 存儲函數的使用
    • 語法
    • 函數的調用
    • 對比存儲函數和存儲過程

初識存儲過程

  • 理解:
    • 含義: 存儲過程(Stored Procedure)是在大型數據庫系統中,一組為了完成特定功能的SQL 語句集(這些SQL語句已經編譯過了),它存儲在數據庫中,一次編譯后永久有效,用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。
    • 執行過程:存儲過程預先存儲在MySQL服務器,當需要執行的時候,客戶端向服務器端發送執行的命令,服務器端就可以把預先存儲好的這一系列sql語句全部執行。
  • 好處
    • 簡化操作,提高sql語句復用性
    • 減少網絡傳輸量(客戶端不需要把所有的SQL語句通過網絡發送給服務器端)
    • 減少sql語句暴露在網上的風險,提高數據查詢的安全性

存儲過程和視圖與函數的對比

存儲過程可以直接操作底層數據表,視圖是虛擬表,存儲過程一旦創建出來,我們直接通過存儲過程名調用就可以了,就像用函數一樣,相對于函數,存儲過程是沒有返回值的

接下來看看存儲過程的分類,現在不懂沒關系,等文章后面內容看完再回過來看,其實分類和函數的分類差不多,就是根據有無參數和有無返回值來劃分。

  • 存儲過程的分類
    存儲過程的參數類型可以是IN,OUT,INOUT,根據這樣可以分類
    • ①沒有參數(無參無返回)
    • ②僅僅帶IN類型(有參數無返回)
    • ③僅僅帶OUT類型(無參數有返回)
    • ④既有IN,又有OUT(有參有返回)
    • ⑤帶INOUT(有參有返回)

IN,OUT,INOUT都可以在一個存儲過程中帶多個

存儲過程語法

CREATE PROCEDURE 存儲過程名(IN|OUT|INOUT 參數名 參數類型,...)[characteristics ...]BEGIN	存儲過程體END

類似于Java的語法

修飾符 返回類型 方法名(參數類型 參數名,...){	方法體;}

接下來對參數類型前面的IN,OUT,INOUT進行說明

  • IN:當前參數是輸入參數,如果沒有定義參數的話,默認就是參數類型是IN
  • OUT:輸出參數
  • INOUT:可以表示為輸入參數,也可以是輸出參數

characteristics表示創建存儲過程時指定的對存儲過程的約束條件,其取值信息如下:

LANGUAGE SQL| [NOT] DETERMINISTIC| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }| SQL SECURITY { DEFINER | INVOKER }| COMMENT "string"
  • LANGUAGE SQL:說明存儲過程執行體是由SQL語句組成的,當前系統支持的語言為SQL。
  • [NOT] DETERMINISTIC:指明存儲過程執行的結果是否確定。DETERMINISTIC表示結果是確定的。每次執行存儲過程時,相同的輸入會得到相同的輸出。NOT DETERMINISTIC表示結果是不確定的,相同的輸入可能得到不同的輸出。如果沒有指定任意一個值,默認為NOT DETERMINISTIC。
  • { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }:指明子程序使用SQL語句的限制。
    • CONTAINS SQL表示當前存儲過程的子程序包含SQL語句,但是并不包含讀寫數據的SQL語句;
    • NO SQL表示當前存儲過程的子程序中不包含任何SQL語句;
    • READS SQL DATA表示當前存儲過程的子程序中包含讀數據的SQL語句;
    • MODIFIES SQL DATA表示當前存儲過程的子程序中包含寫數據的SQL語句。
    • 默認情況下,系統會指定為CONTAINS SQL。
  • SQL SECURITY { DEFINER | INVOKER }:執行當前存儲過程的權限,即指明哪些用戶能夠執行當前存儲過程。
    • DEFINER表示只有當前存儲過程的創建者或者定義者才能執行當前存儲過程;
    • INVOKER表示擁有當前存儲過程的訪問權限的用戶能夠執行當前存儲過程。
    • 如果沒有設置相關的值,則MySQL默認指定值為DEFINER。
  • COMMENT 'string':注釋信息,可以用來描述存儲過程。

需要注意的地方:

  • mysql默認以;作為語句結束的標識
  • 為了避免與存儲過程中SQL語句結束符相沖突,需要使用DELIMITER改變存儲過程的結束符。
  • 存儲過程定義完畢之后再使用“DELIMITER ;”恢復默認結束符。DELIMITER也可以指定其他符號作為結束符。
DELIMITER $CREATE PROCEDURE 存儲過程名(IN|OUT|INOUT 參數名  參數類型,...)[characteristics ...]BEGIN	sql語句1;	sql語句2;END $

存儲過程調用

準備工作

 -- 準備工作,創建新數據庫 create database  db15;use db15;create table empsas select * from atguigudb.employees;create table departmentsas    select * from atguigudb.departments;select * from emps;

無參無返回

存儲過程的調用,用call+存儲過程名

OUT類型

IN類型

帶IN和OUT

帶INOUT

存儲函數的使用

語法

CREATE FUNCTION 函數名(參數名 參數類型,...) RETURNS 返回值類型[characteristics ...]BEGIN	函數體   #函數體中肯定有 RETURN 語句END

說明:

1、參數列表:指定參數為IN、OUT或INOUT只對PROCEDURE是合法的,FUNCTION中總是默認為IN參數。

2、RETURNS type 語句表示函數返回數據的類型;

RETURNS子句只能對FUNCTION做指定,對函數而言這是強制的。它用來指定函數的返回類型,而且函數體必須包含一個RETURN value語句。

3、characteristic 創建函數時指定的對函數的約束。取值與創建存儲過程時相同,這里不再贅述。

4、函數體也可以用BEGIN…END來表示SQL代碼的開始和結束。如果函數體只有一條語句,也可以省略BEGIN…END。

函數的調用

SELECT 函數名(實參列表)

注意:

若在創建存儲函數中報錯“you might want to use the less safe log_bin_trust_function_creators variable”,有兩種處理方法:

  • 方式1:加上必要的函數特性“[NOT] DETERMINISTIC”和“{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}”

  • 方式2:

SET GLOBAL log_bin_trust_function_creators = 1;

對比存儲函數和存儲過程

關鍵字調用語法返回值應用場景存儲過程PROCEDURECALL 存儲過程()理解為有0個或多個一般用于更新存儲函數FUNCTIONSELECT 函數()只能是一個一般用于查詢結果為一個值并返回時

此外,存儲函數可以放在查詢語句中使用,存儲過程不行。反之,存儲過程的功能更加強大,包括能夠執行對表的操作(比如創建表,刪除表等)和事務操作,這些功能是存儲函數不具備的。

到此這篇關于關于MySQL的存儲過程與存儲函數的文章就介紹到這了,更多相關MySQL存儲過程與存儲函數內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: MySQL
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文在线免费视频| 中文字幕亚洲精品乱码| 精品视频国内| 日韩av有码| 国产精品毛片在线看| 欧美一区网站| 国产中文字幕一区二区三区| 欧美日韩精品免费观看视完整| 在线亚洲人成| 亚洲日本免费电影| 国产999精品在线观看| 99视频+国产日韩欧美| 国产免费久久| 99pao成人国产永久免费视频| 日本不卡视频在线| 日韩电影免费在线观看| 日本不卡在线视频| 亚洲精品国产嫩草在线观看| 深夜福利亚洲| 久久久久国产| 精品欧美日韩精品| 日本欧美在线看| 国产一区2区在线观看| 亚洲精品在线国产| 久久久久国产| 久久av影院| 日本一区二区中文字幕| 久久高清精品| 精品一区二区三区在线观看视频| 夜夜嗨av一区二区三区网站四季av| 国产欧美啪啪| 天堂va在线高清一区| 黄色亚洲精品| 欧美日韩水蜜桃| 你懂的国产精品| 日韩高清一级| 一级欧美视频| 国产亚洲综合精品| 99国产精品免费视频观看| 老司机精品视频在线播放| 欧美日本精品| 国产乱码精品一区二区亚洲| 综合国产视频| 蜜桃视频一区二区三区| 亚洲在线电影| 亚洲欧美日韩国产一区| 在线亚洲自拍| 美国三级日本三级久久99| 午夜在线观看免费一区| 亚洲乱码久久| 国产精品欧美一区二区三区不卡| 欧美色综合网| 精品午夜av| 国内精品伊人| 高清精品久久| 久久久久久久久99精品大| 高清日韩中文字幕| 免费污视频在线一区| 欧美精品黄色| 中文字幕一区二区三区四区久久 | 久久中文亚洲字幕| 国产精品高潮呻吟久久久久| 欧美日韩在线观看首页| 亚洲小说欧美另类婷婷| 国精品一区二区三区| 石原莉奈在线亚洲二区| 国产伦精品一区二区三区视频| 日韩国产精品久久久久久亚洲| 久久成人av| 91精品观看| 久久精品一本| 国产视频一区三区| 国产伦精品一区二区三区千人斩 | 亚洲二区免费| 日本成人手机在线| 一区二区三区四区日本视频| 在线视频精品| 91日韩在线| 日韩欧美高清一区二区三区| 亚洲黄色免费av| 日韩高清三区| 99精品99| 午夜精品久久久久久久久久蜜桃| 日韩中文字幕在线一区| 日韩电影免费在线观看| 国产亚洲欧美日韩精品一区二区三区 | 国产精品日本欧美一区二区三区| 国产精品探花在线观看| 婷婷亚洲综合| 国产成人精品免费视| 国产视频一区二区在线播放| 亚洲少妇一区| 久久国产毛片| 另类专区亚洲| 麻豆一区二区三区| 日韩欧美2区| 亚洲精品极品| 亚洲一区区二区| 欧美福利一区| 久久亚洲精品中文字幕蜜潮电影| 国内一区二区三区| 国产人成精品一区二区三| 国产精品hd| 国产精品男女| 精品一区二区三区在线观看视频| 国产日产精品_国产精品毛片 | 久久亚洲视频| 亚洲欧美日韩国产一区| 香蕉精品视频在线观看| 亚洲视频综合| 五月天综合网站| 99视频精品视频高清免费| a日韩av网址| 免费高潮视频95在线观看网站| 中文字幕在线视频网站| 日韩大片在线| 亚洲小说欧美另类婷婷| 伊人久久亚洲美女图片| 亚洲一区欧美激情| 亚洲视频国产精品| 亚洲精品激情| 国产精品丝袜在线播放| 国产精品久久久久久久久久10秀 | 九九久久婷婷| 亚洲区欧美区| 精品国产乱码久久久久久樱花 | 亚洲欧洲日韩| 国产精品九九| 国产日韩电影| 丝袜国产日韩另类美女| 久久国产欧美日韩精品| 毛片在线网站| 亚洲欧美视频| 免费一区二区三区在线视频| 中文字幕在线免费观看视频| 国产亚洲欧洲| 精品亚洲精品| 一区二区亚洲精品| 久久国产三级精品| 久久蜜桃资源一区二区老牛| 中文字幕av亚洲精品一部二部| 久久av日韩| 99精品99| 97精品中文字幕| 亚洲三级网址| 91精品综合| 久久亚洲人体| 在线亚洲激情| av高清不卡| 国产欧美日韩影院| 精品一区欧美| 毛片在线网站| 国产精品一区2区3区| 亚洲专区欧美专区| 国产亚洲一区二区手机在线观看| 青草久久视频| 久久成人精品| 免费av一区二区三区四区| 精品国产中文字幕第一页| 亚洲精品看片| 热久久久久久久| 日韩精品欧美| 国产拍在线视频| 欧美三级第一页| 一区二区三区四区日韩| 女人av一区| 国产综合欧美| 亚洲午夜在线| 久久亚洲国产| 在线视频观看日韩| 色婷婷精品视频| 欧美日韩免费看片| 欧美少妇精品| 激情偷拍久久| 国内精品99| 亚洲激精日韩激精欧美精品| 亚洲91视频| 国产91一区| 亚洲二区三区不卡| 黄色日韩在线| 免费在线视频一区| 亚洲精品无播放器在线播放| 日韩国产一二三区| 国产精品一区毛片| 久久69成人| 久久视频精品| 视频一区二区中文字幕| 欧美日韩99| 精品一区av| 欧美亚洲国产一区| 在线看片日韩| 日韩avvvv在线播放| 麻豆精品视频在线| 激情欧美日韩一区| 日韩午夜视频在线| 国产一区二区三区日韩精品| 久久中文字幕av| 日韩一区二区三免费高清在线观看 | 亚洲免费影视| 国产免费av国片精品草莓男男|