本文部分内容抄自作者:小孩子4919
自定义变量
Mysql中支持自定义变量,但是为了区分使用@进行标识,例如:
// 将@a 赋值为1set @a = 1;// 查找@a的值select @a;// 在函数中定义变量要使用关键字declaredeclare name varchar(40);set name = '十一'//直接命名也可以declare name varchar(40) '十一';
delimiter 关键字
平常在Mysql命令行中我门执行一条这样的Sql:
select * from user where id = 1;
最后都会使用“;”来表示一条语句结束。Mysql提供了delimiter关键字,就是用来指定这个结束符号的。例如我们可以自定义一个结束符号:
// 这里我们定义了两个$$来表示结束符号delimiter $$// 这里用两个$$,这条Sql才会被执行select * from user where id = 1$$
存储函数
Mysql创建一个函数和其它语言创建类似,格式为:
CREATE FUNCTION 存储函数名称([参数列表])RETURNS 返回值类型BEGIN函数体内容END
案例:创建一个函数
// 统计某门学科的平均分mysql> delimiter $mysql> CREATE FUNCTION avg_score(s VARCHAR(100))-> RETURNS DOUBLE-> BEGIN-> RETURN (SELECT AVG(score) FROM student_score WHERE subject = s);-> END $// 恢复结束符mysql> delimiter ;
调用一个函数
SELECT avg_score('母猪的产后护理');
查询存储函数
// 使用like关键字模糊匹配SHOW FUNCTION STATUS [LIKE 需要匹配的函数名]// 或者知道某个名称直接查就行SHOW CREATE FUNCTION 函数名
删除存储函数
DROP FUNCTION 函数名
条件语句
判断语句
IF 布尔表达式 THEN处理语句[ELSEIF 布尔表达式 THEN处理语句][ELSE处理语句]END IF;
循环语句
WHILE 布尔表达式 DO循环语句END WHILE;
案例:循环插入
delimiter ;;create procedure idata() -- 创建存储过程,名称是idatabegindeclare i int;set i=1;while(i<=100000)doinsert into t values(i, i, i); -- 循环插入100000次set i=i+1;end while;end;;delimiter ;call idata(); -- 调用存储过程DROP PROCEDURE IF EXISTS `idata` -- 如果idata存储过程存在就删除
