首页
/
每日頭條
/
生活
/
mysql的存儲過程和引擎
mysql的存儲過程和引擎
更新时间:2024-11-15 23:28:19
第一》怎麼是Mysql存儲過程?

存儲過程是一組為了完成特定功能的 SQL 語句集合。MySQL 5.0 終于開始已經支持存儲過程,它是數據庫中最重要的功能,

1.使用存儲過程的目的:将常用或複雜的工作預先用 SQL 語句寫好并用一個指定名稱存儲起來,這個過程經編譯和優化後存儲在數據庫服務器中,因此稱為存儲過程。

2.存儲過程通常有如下優點:

1) 封裝性

存儲過程被創建後,可以在程序中被多次調用,而不必重新編寫該存儲過程的 SQL 語句,并且數據庫專業人員可以随時對存儲過程進行修改,而不會影響到調用它的應用程序源代碼。

2) 可增強 SQL 語句的功能和靈活性

存儲過程可以用流程控制語句編寫,有很強的靈活性,可以完成複雜的判斷和較複雜的運算。

3) 可減少網絡流量

由于存儲過程是在服務器端運行的,且執行速度快,因此當客戶計算機上調用該存儲過程時,網絡中傳送的隻是該調用語句,從而可降低網絡負載。

4) 高性能

存儲過程執行一次後,産生的二進制代碼就駐留在緩沖區,在以後的調用中,隻需要從緩沖區中執行二進制代碼即可,從而提高了系統的效率和性能。

5) 提高數據庫的安全性和數據的完整性

使用存儲過程可以完成所有數據庫操作,并且可以通過編程的方式控制數據庫信息訪問的權限。

MySQL創建存儲過程

語法:

CREATE PROCEDURE 過程名稱([proc_parameter[,...]]) [characteristic ...] routine_body

說明

proc_parameter :表示 [ IN | OUT | INOUT ] param_name type

IN 輸入參數:表示調用者向過程傳入值

OUT 輸出參數:表示過程向調用者傳出值

INOUT 輸入輸出參數:既表示調用者向過程傳入值,又表示過程向調用者傳出值

type :表示任何有效的MySQL數據類型 characteristic :表示 LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string' routine_body 表示有效的SQL過程語句或語句 指:“過程體”

1》》NOT DETERMINISTIC :如果程序或線程總是對同樣的輸入參數産生同樣的結果,則被認為它是“确定的”,否則就是“非确定”的。如果既沒有給定DETERMINISTIC也沒有給定NOT DETERMINISTIC,默認的就是NOT DETERMINISTIC。

2》》CONTAINS SQL :表示子程序不包含讀或寫數據的語句

3》》NO SQL表示子程序不包含SQL語句

4》》READS SQL DATA表示子程序包含讀數據的語句,但不包含寫數據的語句

5》》MODIFIES SQL DATA表示子程序包含寫數據的語句

如果這些特征沒有明确給定,默認的是CONTAINS SQL

6》》SQL SECURITY特征可以用來指定 子程序該用創建子程序者的許可來執行,還是使用調用者的許可來執行。默認值是DEFINER。在SQL:2003中者是一個新特性。創建者或調用者必須由訪問 子程序關聯的數據庫的許可。在MySQL 5.1中,必須有EXECUTE權限才能執行子程序。必須擁有這個權限的用戶要麼是定義者,要麼是調用者,這取決于SQL SECURITY特征是如何設置的。

1,要在MySQL 5.1中創建存儲程序,必須具有CREATE ROUTINE權限,并且ALTER ROUTINE和EXECUTE權限被自動授予它的創建者。

2,默認地,子程序與當前數據庫關聯。要明确地把子程序與一個給定數據庫關聯起來,可以在創建子程序的時候指定其名字為db_name.sp_name

接下來 例子說明 in out inout 的使用

1.無參數存儲過程

/*創建一個無參數存儲過程 */ DELIMITER $$ CREATE PROCEDURE a() BEGIN SELECT * FROM a; END$$ DELIMITER $$

說明一下

  1. 聲明語句結束符

DELIMITER $$ 或 DELIMITER //

默認情況下,delimiter是分号;,遇到分号就執行。默認情況下,delimiter是分号;,遇到分号就執行。這是使用雙美元符号再執行

2.聲明存儲過程:

CREATE PROCEDURE a()

3. 存儲過程開始和結束符号:

BEGIN ...... END$$

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)1

2.IN參數存儲過程

/*in 輸入參數的存儲過程 輸入id查詢的行*/ DELIMITER $$ CREATE PROCEDURE b(IN pr_id INT) BEGIN SELECT * FROM a WHERE id=pr_id; END$$ DELIMITER $$

IN 表示這個存儲過程需要需要的參數

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)2

/*調用b的存儲過程*/ CALL b(2);

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)3

說明 調用存儲過程輸入2

/*删除存儲過程*/ DROP PROCEDURE b;

2.out參數存儲過程說明

/*out 的存儲過程的說法*/ DELIMITER $$ CREATE PROCEDURE c(OUT pr_name VARCHAR(20)) BEGIN SELECT NAME INTO pr_name FROM a WHERE id=2; END$$ DELIMITER $$

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)4

調用out的存儲過程

/*調用c的存儲過程 out是輸出,所以調用存儲過程時這是一個變量@name*/ CALL c(@name);

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)5

然後顯示值 SELECT @name

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)6

删除存儲過程

/*删除存儲過程*/ DROP PROCEDURE c;

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)7

3.inout參數存儲過程說明

/*inout的存儲過程的說明*/ DELIMITER$$ CREATE PROCEDURE d(INOUT pr_name VARCHAR(20)) BEGIN SELECT NAME INTO pr_name FROM a WHERE id=pr_name; END$$ DELIMITER $$

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)8

/*調用inout的存儲過程 inout是可以接受一個參數并輸出一個參數 */ /*設置一個參數,@id=5 說明輸入的參數為5*/ SET @id=5;

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)9

/*然後在調用返回輸出一個值*/ CALL d(@id);

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)10

/*顯示存儲過程*/ SELECT @id

mysql的存儲過程和引擎(Mysql存儲過程的詳細講解)11

總結:存儲過程主要有參數模型 in out inout

in 是輸入參數

out是輸出參數

inout是輸入并輸出

謝謝閱讀 可以關注

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
怎麼能和idol認識
怎麼能和idol認識
高中的時候,隻是喜歡看長得好看的,原來是美男可以說是韓劇的啟蒙,對裡面角色的沉迷,歌曲的沉迷,除了上課其他時間都是跟朋友讨論他們去了,但是那個時候并沒有真正意義上的追星,就是單純的愛好喜歡吧上大學的時候,jyp家族新出了一個男團,裡面有中國...
2024-11-15
武神趙子龍劇情介紹
武神趙子龍劇情介紹
武神趙子龍劇情介紹?劇情介紹:趙子龍生逢亂世,自小深感民怨深重,立下大志,要成就一番宏圖大業他秉承一身正氣,懲惡除強,又在機緣巧合之下練就了一套精妙槍法,披靡沙場,無往不利,這讓他在赢得衆多的仰慕與贊許的同時,也為他招來了諸多的嫉恨,我來為...
2024-11-15
rcep生效好處
rcep生效好處
rcep生效好處?今年1月1日,《區域全面經濟夥伴關系協定》(RCEP)正式生效,包括中國在内的10個國家正式開始履行義務,這标志着全球最大的自由貿易區啟動運行,也為中國經濟迎來了開門紅RCEP包括15個成員國,人口、經濟、貿易等方面都占全...
2024-11-15
半身變形金剛怎麼畫
半身變形金剛怎麼畫
新人:有什麼繪畫軟件推薦一下嗎?大佬:Excel。新人:???沒錯!Excel其實是一款隐藏的繪畫軟件!你和大神的差距在哪?那就是你用Excel做表格,大神卻用Excel來畫畫!!!小編今天就來教你如何用Excel畫畫,讓你也過把瘾!一、大...
2024-11-15
青島海陽遊玩攻略
青島海陽遊玩攻略
夏日的海陽,是歲月靜好的模樣。有海風追逐着浪花,有藍天追逐着白雲,更有讓無數内陸城市羨慕的“夏日溫度”。每日迎着微涼的海風,不經意間,就與夏天撞了個滿懷。海陽,是一座你來了就不想離開的城市……海陽的海海陽的海,海面波光淩淩,在陽光照耀下閃爍...
2024-11-15
Copyright 2023-2024 - www.tftnews.com All Rights Reserved