视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
八、mysql视图、存储过程、函数以及时间调度器_MySQL
2020-11-09 20:03:31 责编:小采
文档


1.create or replace view emp_view as select * from t4 ;给t4表创建一个名为emp_view的视图2.drop view emp_view 删除视图=======================================1.创建一个存储过程(查询所有数据) create procedure p1 () READS SQL DATA BEGIN select * from t4; END2.创建一个存储过程(查询传参数据) create procedure p2(IN tid INT) READS SQL DATA BEGIN select * from t4 where id = tid; END3.创建一个存储过程(查询传参数据并返回name) create procedure p3(IN tid INT,OUT tname CHAR(255)) READS SQL DATA BEGIN select name from t4 where id = tid into tname; END==========================================1.创建一个存储函数(函数必须有返回值) create function p4(IN tid INT) RETURNS CHAR(255) DETERMINISTIC READS SQL DATA BEGIN DECLARE t_name CHAR(255); SELECT tname from t4 where id = tid into t_name; RETURN t_name; END===========================================1.定义错误条件和处理 情景1:比如过程中要插入的数据唯一键值已存在 create procedure p5 () BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' set @x2 = 1; //23000在mysql中代表建已存在或重复的错误代码 set @x = 1; insert into ...... //假设这条不重复 set @x = 2; insert into ...... //假设这条不重复 set @x = 3; insert into ..... //重复 END 调用: call p5();select @x,@x2; 将
输出:3,1 原因:前面2条都顺利执行,@x = 3,最后一条重复,也就是将@x2设置成了1;=============================================1.光标概念(实际上就是fetch结果集用的) create procedure p6() READS SQL DATA //表示过程只包含读不包含写 BEGIN DECLARE tid int;//定义id DECLARE tname char;//定义name DECLARE tcur cursor for select id,name from t4;//定义光标 DECLARE exit handler for not found tcur;//如果光标为空则退出,不允许继续执行 set @error = '';//设置返回调用error open tcur; repeat fetch tcur into tid,tname; if tid = 1 then set @error = '我是1,但是我报错了'; else set @error = '我不是1啊,真的啊!'; end if; until 0 end repeat; close tcur;//关闭 END;===============================================1.流程控制 if: if 1=1 then 我是1; else 我不是1; end if case: case when 1=1 then 我是1; else 我不是1; end case loop: emp: LOOP #...code..... END LOOP emp; leave emp;//表示从标注的流程中退出(emp表示上面loop的标注) 相当于php中break,只不过leave要指定需要被跳出的结构体 iterate emp;//表示此次循环跳过余下的代码块 相当于php中的continue repeat: repeat //循环开始相当于php的do...while...(因为他是在循环结束的时候做判断,因此此循环体至少会被执行一次) #....code.... //相关内容 until 1=2 end repeat //如果条件为假则退出循环 while://跟php中的while一个概念,只是语法区别 while 1=1 do //很明显,这是个死循环 #...code..... end while; ================================================1.时间触发器(时间调度器) 1.默认时间触发器是关闭状态 set GLOBAL event_scheduler = 1 开启 2.show variables like 'scheduler' 查看时间调度器开启/关闭状态 3.show events;//查看所有调度器 4.alter event emp disable; //禁用名为emp的调度器 5.drop event emp; //删除名为emp的调度器 6.创建一个调度器 create event emp //调度器名次 on schedule every 5 second //时间5秒 do //开始 insert into haha values (NULL); //执行体 =================================================PS::2014-07-08 继续学习ing.....

下载本文
显示全文
专题