mysql存储过程与函数
存储过程下载 demo
mysql> delimiter // -- 这里//为修改默认分隔符; mysql> CREATE PROCEDURE simpleproc (OUT param1 INT) -> BEGIN -> SELECT COUNT(*) INTO param1 FROM t; -> END// Query OK, 0 rows affected (0.00 sec) mysql> delimiter ; // -- 改回来这里的默认分隔符为;
这里调用试用call
mysql> CALL simpleproc(@a); mysql> select @a;
函数demo
参数没有输入输出参数
mysql> CREATE FUNCTION hello (s CHAR(20)) mysql> RETURNS CHAR(50) DETERMINISTIC -> RETURN CONCAT(‘Hello, ‘,s,‘!‘);
这里调用试用 select,和普通函数一样了
mysql> SELECT hello(‘world‘); +----------------+ | hello(‘world‘) | +----------------+ | Hello, world! | +----------------+
变量的使用
declare last_month_start DATE; DECLARE my_sql INT DEFAULT 10 ; set var_name = 2;
流程控制
CREATE DEFINER=`root`@`localhost` PROCEDURE `student_insert`() BEGIN set @x=0; ins :LOOP set @x = @x +1; if @x=100 then leave ins; end if; insert into student (stuname) values (CONCAT("name",@x)); END LOOP ins; END CREATE DEFINER=`root`@`localhost` PROCEDURE `student_insert2`() BEGIN set @x=100; ins :LOOP set @x = @x +1; if @x=120 then leave ins; elseif mod(@x,2) = 0 then iterate ins; end if; insert into student (stuname) values (CONCAT("name",@x)); END LOOP ins; END CREATE DEFINER=`root`@`localhost` PROCEDURE `loop_demo`() BEGIN set @x=1 ,@x1=1; repeat set @x = @x +1; until @x > 0 end repeat; while @x1 < 2 do set @x1=@x1+1; end while; END
游标的使用
CREATE DEFINER=`root`@`localhost` PROCEDURE `cursor_demo`() BEGIN declare i_stuid int; declare i_stuname varchar(20); declare cur_stu cursor for select stuid,stuname from student; declare exit handler for not found close cur_stu; set @x1 = 0; set @x2 = 0; open cur_stu; repeat fetch cur_stu into i_stuid,i_stuname; select i_stuid,i_stuname; until 0 end repeat; close cur_stu; END CREATE DEFINER=`root`@`localhost` PROCEDURE `cursor_demo3`() BEGIN DECLARE done INT DEFAULT 0; DECLARE a CHAR(16); DECLARE b,c INT; DECLARE cur1 CURSOR FOR SELECT stuname,stuid FROM `student`; DECLARE cur2 CURSOR FOR SELECT subid FROM `subject`; DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000‘ SET done = 1; OPEN cur1; OPEN cur2; REPEAT FETCH cur1 INTO a, b; FETCH cur2 INTO c; IF NOT done THEN SELECT a,b,c; END IF; UNTIL done END REPEAT; CLOSE cur1; CLOSE cur2; END
触发器
必须建立在真实表之上,适合一些初始化数据
CREATE TABLE test1(a1 INT); CREATE TABLE test2(a2 INT); CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY); CREATE TABLE test4( a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b4 INT DEFAULT 0 ); DELIMITER | CREATE TRIGGER testref BEFORE INSERT ON test1 FOR EACH ROW BEGIN INSERT INTO test2 SET a2 = NEW.a1; DELETE FROM test3 WHERE a3 = NEW.a1; UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; END | DELIMITER ; INSERT INTO test3 (a3) VALUES (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL); INSERT INTO test4 (a4) VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0);
查看索引
show index from table
相关推荐
MySQL数据库函数,触发器,存储过程的视频课程,通俗易懂
MySQL触发器、存储过程、自定义函数、视图简单示例
mysql函数、存储过程、触发器、游标
mysql高级部分--包含索引建立优化_函数_存储过程_触发器_及游标
MySQL实验报告5(存储过程与函数)(1)(1).pdf
个人原创,根据自己的工作总结的,对工作的人事来说帮助很大。。里面包含 mysql的基本知识 还有优化 部分 存储过程 等 里面的语句都完全正确,全部在数据库中验证过
mysql存储过程编程教程: MySQL 存储过程编程基础 -- 指南,基本语句,存储过程中的 SQL 和错误处理 创建 MySQL 存储过程程序 -- 事务处理,内建函数,存储过程函数和触发器 在应用程序中使用 MySQL 存储...
这些MySQL面试题涵盖了数据库设计、存储过程和触发器、数据库复制和集群等方面的知识点,测试了面试者的MySQL数据库基础知识、问题解决能力和实际应用能力。 通过回答这些问题,面试者可以展现自己熟练掌握MySQL...
MySQL存储过程的常用函数 一.字符串类 CHARSET(str) //返回字串字符集 CONCAT (string2 [,… ]) //连接字串 INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0 LCASE (string2 ) //...
Mysql存储过程、游标、函数调用、事务处理、触发器代码示例,可用作学习参考。
MySQL存储过程编程教程,存储程序包含存储过程,函数和触发器。正确使用存储程序也有助于加强数据库的安全性和完整性以及改善你的应用程序的性能和易维护性。
第09章 索引(共11页).pptMySQL从入门到精通 第10章 存储过程和函数(共19页).pptMySQL从入门到精通 第11章 视图(共20页).pptMySQL从入门到精通 第12章 触发器(共11页).pptMySQL从入门到精通 第13章 用户管理...
第二阶段---MySQL存储过程实例教程.doc 第二阶段---MYSQL存储过程技术ppt 第二阶段---MySQL导入导出数据库文件.doc 第二阶段---Mysgl数据类型(字段)介绍.doc 第二阶段---MySQL样例数据库、操作库操作表实例教程.doc ...
一、变量的定义 mysql中变量定义用declare来定义...二、mysql存储过程变量赋值 变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下 代码如下: set var_name= [,var_name expr]
什么是存储过程 简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法; ps:存储过程跟触发器有点类似,都是一组...MySQL存储过程的创建 语法 CREATE PROCEDURE sp_name (
MySQL存储过程与函数 MySQL3 MySQL安全机制 MySQL日志管理 MySQL数据备份 备份概述 mysqldump [逻辑] mydumper [逻辑] into outfile [逻辑] xtrabackup [物理] snapshot [物理] tar打包备份 [物理] ...
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,...通过学习函数,掌握在mysql中自定义函数,扩展mysql功能 学习存储过程,轻松封装代码块,提高开发效率; 掌握触发器,丰富功能,减少代码量。
mysql数据库触发器相关触发器(TRIGGER)是MySQL的数据库对象之一,是一种特殊类型的存储过程,从5.0版本开始支持。该对象与编程语言中的函数非常类似,都需要声明、执行等。但是触发器的执行不是由程序call调用,...
初学mysql时,可能不太明白delimiter的真正用途,delimiter在mysql很多地方出现,比如存储过程、触发器、函数等。 学过oracle的人,再来学mysql就会感到很奇怪,百思不得其解。 其实就是告诉mysql解释器,该段命令...