SQL一些关于存储过程和使用的总结
摘要:数据库编程工具集锦 存储过程是预存SQL程序,可重复调用,减少网络传输;变量分为系统变量、用户变量和局部变量,用于临时数据存储;SQL编程支持条件判断(IF/CASE)和循环(WHILE/REPEAT/LOOP)结构;游标用于逐行处理查询结果;存储函数可返回计算值。这些功能共同构成了数据库的编程能力,使数据处理更高效灵活。
存储过程:数据库里的 "定制工具箱"
存储过程就像一个装满工具的箱子,你需要什么功能,就调用对应的工具。它是用 SQL 语句写好的一段程序,存储在数据库里,随时可以调用。
创建存储过程 就像在工具箱里放新工具。比如,我们创建一个计算学生总分的存储过程:
delimiter //
create procedure p_calAvg()
BEGIN
select name, chinese + math + english as total from exam;
END //
delimiter ;
delimiter //
是在告诉数据库,我们暂时不用普通的分号;
结束语句,而是用//
,这样就能完整地创建存储过程啦!创建完成后别忘了用delimiter ;
把分号变回来哦。
调用存储过程 就像从工具箱里拿出工具用:
call p_calAvg();
存储过程能减少网络传输,提高性能,就像把常用工具放在手边,随用随取。
变量:数据库里的 "小纸条"
在 MySQL 里,变量就像小纸条,把数据暂时记在上面,之后再用。
系统变量:数据库自带的 "便签"
系统变量是数据库自己准备好的便签,分为全局(所有用户都能看)和会话(只给自己看)两种:
-
查看系统变量:
SHOW VARIABLES LIKE 'character_set_server';
-
设置系统变量:
SET GLOBAL character_set_server = 'utf8mb4';
用户自定义变量:你的专属 "记事本"
你可以自己创建变量来保存临时数据:
SET @var_name = 123; -- 赋值
SELECT @var_name; -- 使用
局部变量:存储过程里的 "便签条"
在存储过程里,变量只能在过程里用,像这样:
DECLARE var_name INT DEFAULT 0;
变量能帮你保存中间结果,方便后续操作,就像做数学题时先把步骤记下来,最后再算出答案。
SQL 编程:让数据库学会 "思考"
SQL 也能像编程一样,根据条件做不同操作,甚至循环执行,就像给数据库装上了 "聪明大脑"。
条件语句:数据库的 "选择题"
IF 语句 就像给数据库出选择题:
IF score >= 90 THEN
SET grade = 'A';
ELSEIF score >= 60 THEN
SET grade = 'B';
ELSE
SET grade = 'C';
END IF;
CASE 语句 像更灵活的选择题,有两种写法:
-
简单 CASE:
CASE var_name WHEN 1 THEN 'A' WHEN 2 THEN 'B' ELSE 'C' END
-
搜索结果 CASE:
CASE WHEN score >= 90 THEN 'A' WHEN score >= 60 THEN 'B' ELSE 'C' END
循环语句:数据库的 "重复播放"
WHILE 循环 像设置个条件,满足就一直执行:
WHILE i <= 10 DO
SET sum = sum + i;
SET i = i + 1;
END WHILE;
REPEAT 循环 则是先执行,再判断是否继续:
SET i = 0;
REPEAT
SET sum = sum + i;
SET i = i + 1;
UNTIL i > 10
END REPEAT;
LOOP 循环 像个简单的重复播放,配合 LEAVE(跳出循环)和 ITERATE(继续循环):
outer_loop: LOOP
INNER LOOP: LOOP
IF i > 5 THEN
LEAVE outer_loop;
END IF;
SET i = i + 1;
ITERATE INNER LOOP;
END LOOP;
END LOOP;
游标:数据的 "快递员"
游标能把查询结果一行行地送过来,方便你逐个处理:
-
声明游标:
DECLARE cursor_name CURSOR FOR select...
-
打开游标:
OPEN cursor_name;
-
获取数据:
FETCH cursor_name INTO var_name1, var_name2;
-
关闭游标:
CLOSE cursor_name;
条件处理程序:数据库的 "安全员"
条件处理程序能帮数据库应对各种异常情况,就像给它配了个安全员:
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
SET error_count = error_count + 1;
存储函数:数据库的 "小助手"
存储函数就像数据库的小助手,能返回计算结果:
CREATE FUNCTION Fun(n INT) RETURNS INT DETERMINISTIC
BEGIN
DECLARE total INT DEFAULT 0;
WHILE n > 0 DO
SET total = total + n;
SET n = n - 1;
END WHILE;
RETURN total;
END
调用时直接用 SELECT Fun(10);
就能拿到结果啦!
更多推荐
所有评论(0)