搜尋
首頁資料庫mysql教程初识MySQL存储过程_MySQL

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 MySQL 存储过程是从 MySQL 5.0 开始增加的新功能。大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。
过程:封装起来的若干条语句,调用时这些封装体执行。把此过程存储到数据库中即存储过程.
函数:是一个有返回值的“过程”。
过程:没有返回值的函数。
存储过程的优点: 1、存储过程增强了SQL语言的功能和灵活性(可以SQL编程,能使用变量,表达式、控制结构体) 2、存储过程能实现较快的执行速度。(存储过程要比批处理的执行速度快很多,因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。) 3、存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。 4、存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。 5、存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 存储过程的创建:

DELIMITER $$  //定义分隔符
CREATE PROCEDURE p()   //p为过程名
BEGIN
  --sql语句 //封装语句体
END $$

查看已有的存储过程:show procedure status \G; 调用存储过程:call 存储过程名称(); 删除存储过程:drop procedure 存储过程名称;
变量声明:存储过程中用declare声明变量 格式:declare 变量名 变量类型 [default 默认值] 存储过程中,变量可以在SQL语句中合法的运算,如+ - * / 运算结果如何赋值 set 变量 := 表达式 存储过程传参:存储过程的括号里,可以声明参数。 语法是 create procedure p([in/out/inout] 参数名 参数类型 ..) in out inout详细分析见下一篇博文(链接下午放出)

实例一:创建 运算 赋值
CREATE PROCEDURE p1()
BEGIN
  DECLARE age INT DEFAULT 18;
  DECLARE height INT DEFAULT 180;
  SET age := age +20;
  SELECT CONCAT('年龄是', age, '身高是', height);
END$$
\

实例二 :if/else 控制结构
CREATE PROCEDURE p2()
BEGIN
  DECLARE age INT DEFAULT 18;
  DECLARE height INT DEFAULT 180;
  IF age >= 18 THEN
    SELECT "已成年";
  ELSE
    SELECT "未成年";
  END IF;
END$$
\

实例三:while/do 控制结构 求1-100的和
CREATE PROCEDURE p3()
BEGIN
  DECLARE total INT DEFAULT 0;
  DECLARE num INT DEFAULT 0;
  WHILE num<=100 DO
    SET total := num + total;
    SET num := num + 1;
   END WHILE;
   SELECT total;
END$$
\
实例四:case 控制结构
CREATE PROCEDURE p4()
BEGIN
  DECLARE num INT DEFAULT 0;
  SET num := FLOOR(4*RAND());
  CASE num
  WHEN 1 THEN SELECT "cat";
  WHEN 2 THEN SELECT "dog";
  WHEN 3 THEN SELECT "sheep";
  ELSE SELECT "pig";
  END CASE;
END$$
\

实例五:repeat循环
CREATE PROCEDURE p5()
BEGIN
  DECLARE num INT DEFAULT 0;
  DECLARE total INT DEFAULT 0;
  REPEAT
    SET total = num + total;
    SET num := num + 1;
  UNTIL num>100 END REPEAT;
  SELECT total;
END$$


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何使用Alter Table語句在MySQL中更改表?如何使用Alter Table語句在MySQL中更改表?Mar 19, 2025 pm 03:51 PM

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

如何為MySQL連接配置SSL/TLS加密?如何為MySQL連接配置SSL/TLS加密?Mar 18, 2025 pm 12:01 PM

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

您如何處理MySQL中的大型數據集?您如何處理MySQL中的大型數據集?Mar 21, 2025 pm 12:15 PM

文章討論了處理MySQL中大型數據集的策略,包括分區,碎片,索引和查詢優化。

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什麼?哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什麼?Mar 21, 2025 pm 06:28 PM

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

如何使用Drop Table語句將表放入MySQL中?如何使用Drop Table語句將表放入MySQL中?Mar 19, 2025 pm 03:52 PM

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

如何在JSON列上創建索引?如何在JSON列上創建索引?Mar 21, 2025 pm 12:13 PM

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

您如何用外國鑰匙代表關係?您如何用外國鑰匙代表關係?Mar 19, 2025 pm 03:48 PM

文章討論了使用外國密鑰來代表數據庫中的關係,重點是最佳實踐,數據完整性和避免的常見陷阱。

如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)?如何保護MySQL免受常見漏洞(SQL注入,蠻力攻擊)?Mar 18, 2025 pm 12:00 PM

文章討論了使用準備好的語句,輸入驗證和強密碼策略確保針對SQL注入和蠻力攻擊的MySQL。(159個字符)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具