一、注释
单行注释
-- 这是一个单行注释
多行注释
/*
这
是
多
行
注
释
*/
二、删除
-- 定义存储过程语句的结束符号为$$,为了跟sql语句的结束符进行区分
DELIMITER $$
-- 切换数据库
USE test_demo$$
-- 如果存储过程存在就删除
DROP PROCEDURE IF EXISTS test_demo$$
-- 创建名称为test_demo的存储过程
CREATE PROCEDURE test_demo()
-- begin end语句块,相当于java里的{ }
BEGIN
-- 打印日志
SELECT CONCAT("hello word\nhello word") AS mylog;
END$$
三、新建
-- 定义存储过程语句的结束符号为$$,为了跟sql语句的结束符进行区分
DELIMITER $$
-- 切换数据库
USE `guoya_official_dev`$$
-- 如果存储过程存在就删除
DROP PROCEDURE IF EXISTS `prc_init_student_demo`$$
-- 创建名称为test_demo的存储过程
CREATE PROCEDURE test_demo()
-- begin end语句块,相当于java里的{ }
BEGIN
END$$
-- 还原结束符为;
DELIMITER ;
四、 打印日志
-- 定义存储过程语句的结束符号为$$,为了跟sql语句的结束符进行区分
DELIMITER $$
-- 切换数据库
USE test_demo$$
-- 如果存储过程存在就删除
DROP PROCEDURE IF EXISTS test_demo$$
-- 创建名称为test_demo的存储过程
CREATE PROCEDURE test_demo()
-- begin end语句块,相当于java里的{ }
BEGIN
-- 打印日志
SELECT CONCAT("hello word\nhello word") AS mylog;
END$$
五、调用存储过程
5.1调用
call test_demo();
5.2结果
设置显示结果为文本
六、定义临时变量
DECLARE 变量名 变量类型 DEFAULT 初始值;
DECLARE v_log VARCHAR(1000) DEFAULT '日志跟踪:\n';
七、update语句
update 表名 set 字段=值 where 条件;
例:
UPDATE t_user_student_enroll t SET t.status=3 WHERE t.status=0
八、创建游标
DECLARE 游标名称 CURSOR FOR 查询语句;
例:
-- 定义游标
DECLARE cur_1 CURSOR FOR
SELECT
t.enroll_id,
t.customer_id,
t.class_name,
t.course_instance_name
FROM
t_user_student_enroll t WHERE t.status=3;
九、遍历游标
9.1 打开游标
OPEN 游标名;
例:
OPEN cur_1;
9.2 循环控制器
-- 定义遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 定义条件处理函数,当找不到记录的时候,执行set done=true,set是变量赋值
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE ;
9.3 获取游标中的数据并存到临时变量中
-- 获取游标中的下一条数据并存到临时变量中
FETCH NEXT FROM cur_1 INTO v_enroll_id,v_customer_id,v_class_name,v_course_instance_name;
9.4 while循环
WHILE not done DO
循环体
END WHILE;
9.5 if 分支
IF 条件 THEN
分支语句
ELSE
分支语句
END IF;
IF v_count = 0 THEN
SET v_log=CONCAT(v_log,concat(v_customer_id,'新增客户信息;\n'));
ELSE
SET v_log=CONCAT(v_log,concat(v_customer_id,'客户已存在;\n'));
end if;
9.6 关闭游标
CLOSE cur_1;
十、插入语句
insert into 表名 () values()
insert into 表名() select语句