范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

变量存储过程和函数流程控制结构

  变量系统变量:全局变量会话变量 自定义变量:用户变量局部变量 说明:变量由系统定义,不是用户定义,属于服务器层面 注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别 查看所有系统变量 show global|【session】variables;   查看满足条件的部分系统变量 show global|【session】 variables like "%char%";  查看指定的系统变量的值 select @@global|【session】系统变量名;  为某个系统变量赋值 方式一: set global|【session】系统变量名=值; 方式二: set @@global|【session】系统变量名=值;全局变量演示 作用域:针对于所有会话(连接)有效,但不能跨重启 #①查看所有全局变量 SHOW GLOBAL VARIABLES; #②查看满足条件的部分系统变量 SHOW GLOBAL VARIABLES LIKE "%char%"; #③查看指定的系统变量的值 SELECT @@global.autocommit; #④为某个系统变量赋值 SET @@global.autocommit=0; SET GLOBAL autocommit=0;会话变量的演示 作用域:针对于当前会话(连接)有效 #①查看所有会话变量 SHOW SESSION VARIABLES; #②查看满足条件的部分会话变量 SHOW SESSION VARIABLES LIKE "%char%"; #③查看指定的会话变量的值 SELECT @@autocommit; SELECT @@session.tx_isolation; #④为某个会话变量赋值 SET @@session.tx_isolation="read-uncommitted"; SET SESSION tx_isolation="read-committed"; 自定义变量-用户变量 说明:变量由用户自定义,而不是系统提供的 使用步骤: 1、声明 2、赋值 3、使用(查看、比较、运算等)  作用域:针对于当前会话(连接)有效,作用域同于会话变量  #赋值操作符:=或:= #①声明并初始化 SET @变量名=值; SET @变量名:=值; SELECT @变量名:=值;  #②赋值(更新变量的值) #方式一: 	SET @变量名=值; 	SET @变量名:=值; 	SELECT @变量名:=值; #方式二: 	SELECT 字段 INTO @变量名 	FROM 表; #③使用(查看变量的值) SELECT @变量名; 自定义变量-局部变量 作用域:仅仅在定义它的begin end块中有效 应用在 begin end中的第一句话  #①声明 DECLARE 变量名 类型; DECLARE 变量名 类型 【DEFAULT 值】;   #②赋值(更新变量的值) #方式一: 	SET 局部变量名=值; 	SET 局部变量名:=值; 	SELECT 局部变量名:=值; #方式二: 	SELECT 字段 INTO 具备变量名 	FROM 表;  #③使用(查看变量的值) SELECT 局部变量名;  #案例:声明两个变量,求和并打印 #用户变量 SET @m=1; SET @n=1; SET @sum=@m+@n; SELECT @sum;  #局部变量 DECLARE m INT DEFAULT 1; DECLARE n INT DEFAULT 1; DECLARE SUM INT; SET SUM=m+n; SELECT SUM; 		作用域			     定义位置	          	语法 用户变量	当前会话		        会话的任何地方		    加@符号,不用指定类型 局部变量	定义它的BEGIN END中 	BEGIN END的第一句话	一般不用加@,需要指定类型 存储过程和函数说明:都类似于java中的方法,将一组完成特定功能的逻辑语句包装起来,对外暴露名字 好处 提高代码的重用性 简化操作 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 存储过程含义:一组预先编译好的SQL语句的集合,理解成批处理语句 创建语法 CREATE PROCEDURE 存储过程名(参数列表) BEGIN 	存储过程体(一组合法的SQL语句) END  注意: 1、参数列表包含三部分 参数模式  参数名  参数类型 举例: in stuname varchar(20)  参数模式: in:该参数可以作为输入,也就是该参数需要调用方传入值 out:该参数可以作为输出,也就是该参数可以作为返回值 inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值  2、如果存储过程体仅仅只有一句话,begin end可以省略 存储过程体中的每条sql语句的结尾要求必须加分号。 存储过程的结尾可以使用 delimiter 重新设置 语法: delimiter 结束标记 案例: delimiter $调用语句 CALL 存储过程名(实参列表);  举例: 调用in模式的参数:call sp1(‘值’); 调用out模式的参数:set @name; call sp1(@name);select @name; 调用inout模式的参数:set @name=值; call sp1(@name); select @name;#1.空参列表 #案例:插入到admin表中五条记录 DELIMITER $ CREATE PROCEDURE myp1() BEGIN 	INSERT INTO admin(username,`password`)  	VALUES("john1","0000"),("lily","0000"),("rose","0000"),("jack","0000"),("tom","0000"); END $ #调用 CALL myp1()$  #2.创建带in模式参数的存储过程 #案例1:创建存储过程实现 根据女神名,查询对应的男神信息 CREATE PROCEDURE myp2(IN beautyName VARCHAR(20)) BEGIN 	SELECT bo.* 	FROM boys bo 	RIGHT JOIN beauty b ON bo.id = b.boyfriend_id 	WHERE b.name=beautyName; END $ #调用 CALL myp2("柳岩")$ #案例2 :创建存储过程实现,用户是否登录成功 CREATE PROCEDURE myp3(IN username VARCHAR(20),IN PASSWORD VARCHAR(20)) BEGIN 	DECLARE result VARBINARY(20) DEFAULT "";#声明并初始化 	SELECT COUNT(*) INTO result#赋值 	FROM admin 	WHERE admin.username = username 	AND admin.password = PASSWORD; 	SELECT result;#使用 END $ CALL myp3("张飞","8888")$  CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWORD VARCHAR(20)) BEGIN 	DECLARE result INT DEFAULT 0;#声明并初始化 	SELECT COUNT(*) INTO result#赋值 	FROM admin 	WHERE admin.username = username 	AND admin.password = PASSWORD; 	SELECT IF(result>0,"成功","失败");#使用 END $ #调用 CALL myp4("张飞","8888")$  #3.创建out 模式参数的存储过程 #案例1:根据输入的女神名,返回对应的男神名 CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20)) BEGIN 	SELECT bo.boyname INTO boyname 	FROM boys bo 	RIGHT JOIN 	beauty b ON b.boyfriend_id = bo.id 	WHERE b.name=beautyName ; END $  #案例2:根据输入的女神名,返回对应的男神名和魅力值 CREATE PROCEDURE myp7(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT usercp INT)  BEGIN 	SELECT boys.boyname ,boys.usercp INTO boyname,usercp 	FROM boys  	RIGHT JOIN 	beauty b ON b.boyfriend_id = boys.id 	WHERE b.name=beautyName ; END $ #调用 CALL myp7("小昭",@name,@cp)$ SELECT @name,@cp$  #4.创建带inout模式参数的存储过程 #案例1:传入a和b两个值,最终a和b都翻倍并返回 CREATE PROCEDURE myp8(INOUT a INT ,INOUT b INT) BEGIN 	SET a=a*2; 	SET b=b*2; END $ #调用 SET @m=10$ SET @n=20$ CALL myp8(@m,@n)$ SELECT @m,@n$ 查看语法 show create procedure 存储过程名;  案例 DESC myp2;  SHOW CREATE PROCEDURE  myp2;删除语法 drop procedure 存储过程名;  案例: DROP PROCEDURE p1; DROP PROCEDURE p2,p3;#  函数含义:一组预先编译好的SQL语句的集合,理解成批处理语句 区别: 存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新;函数:有且仅有1 个返回,适合做处理数据后返回一个结果。创建语法CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型 BEGIN 	函数体 END  注意: 1.参数列表 包含两部分: 参数名 参数类型 2.函数体:肯定会有return语句,如果没有会报错 如果return语句没有放在函数体的最后也不报错,但不建议  return 值; 3.函数体中仅有一句话,则可以省略begin end 4.使用 delimiter语句设置结束标记  DELIMITER $ 调用语法
  SELECT 函数名(参数列表); use employees $ #1.无参有返回 #案例:返回公司的员工个数 CREATE FUNCTION myf1() RETURNS INT BEGIN	 	DECLARE c INT DEFAULT 0; 	SELECT COUNT(*) INTO c 	FROM employees; 	RETURN c; END $  SELECT myf1()$   #2.有参有返回 #案例1:根据员工名,返回它的工资 CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE BEGIN 	SET @sal=0;#定义用户变量  	SELECT salary INTO @sal   #赋值 	FROM employees 	WHERE last_name = empName; 	RETURN @sal; END $  SELECT myf2("kochhor") $  #案例2:根据部门名,返回该部门的平均工资 CREATE FUNCTION myf3(deptName VARCHAR(20)) RETURNS DOUBLE BEGIN 	DECLARE sal DOUBLE ; 	SELECT AVG(salary) INTO sal 	FROM employees e 	JOIN departments d ON e.department_id = d.department_id 	WHERE d.department_name=deptName; 	RETURN sal; END $  SELECT myf3("IT")$ 查看函数 show create function 函数名;  SHOW CREATE FUNCTION myf3 $删除函数 drop function 函数名;  DROP FUNCTION myf3 $ 流程控制结构顺序结构:程序从上往下依次执行 分支结构:程序按条件进行选择执行,从两条或多条路径中选择一条执行 循环结构:程序满足一定条件下,重复执行一组语句 分支结构case结构 情况1:类似于switch,一般用于实现等值判断。 语法: case 变量或表达式 when 值1 then 语句1; when 值2 then 语句2; ... else 语句n; end   情况2:类似于多重if语句,一般用于实现区间判断。 语法: case  when 条件1 then 语句1; when 条件2 then 语句2; ... else 语句n; end  特点 可以作为表达式,嵌套在其他语句中使用。可以放在任何地方,BEGIN END 中或BEGIN END 的外面可以作为独立的语句去使用,只能放在BEGIN END中如果WHEN中的值满足或条件成立,则执行对应的WHEN后面的语句,并且结束CASE如果都不满足,则执行E1SE中的语句或值。ELSE可以省略,如果ELSE省略了,并且所有WHEN条件都不满足,则返回NULL。位置 可以放在任何位置,如果放在begin end 外面,作为表达式结合着其他语句使用如果放在begin end 里面,一般作为独立的语句使用#案例  #创建存储过程,根据传入的成绩,来显示等级,比如传入的成绩:90-100, 显示A,80-90,显示B,60-80,显示c,否则,显示D  CREATE PROCEDURE test_case (IN score INT)  BEGIN  	CASE  	WHEN score>=90 AND score<=100 THEN SELECT "A";  	WHEN score>=80 THEN SELECT "B"; 	WHEN score>=60 THEN SELECT "C";  	ELSE SELECT "D"; 	END CASE;  END $ CALL test_case(95)$ if结构 语法:if(条件,值1,值2);功能:实现双分支;应用:可以作为表达式放在任何位置if 条件1 then 语句1; elseif 条件2 then 语句2; .... else 语句n; end if; 功能:类似于多重if;只能应用在begin end 中 循环结构位置:只能放在begin end中 特点:都能实现循环结构 1、while 语法: 【名称:】while 循环条件 do 		循环体 end while 【名称】; 2、loop 语法: 【名称:】loop 		循环体 end loop 【名称】;  3、repeat 语法: 【名称:】repeat 		循环体 until 结束条件  end repeat 【名称】; 对比
  这三种循环都可以省略名称,但如果循环中添加了循环控制语句(leave或iterate)则必须添加名称
  loop 一般用于实现简单的死循环
  while 先判断后执行
  repeat 先执行后判断,无条件至少执行一次 #1.没有添加循环控制语句 #案例:批量插入,根据次数插入到admin表中多条记录 CREATE PROCEDURE pro_while1(IN insertCount INT) BEGIN 	DECLARE i INT DEFAULT 1; 	WHILE i<=insertCount DO 		INSERT INTO admin(username,`password`) VALUES(CONCAT("Rose",i),"666"); 		SET i=i+1; 	END WHILE; 	 END $  CALL pro_while1(158)$  #2.添加leave语句 #案例:批量插入,根据次数插入到admin表中多条记录,如果次数>20则停止 CREATE PROCEDURE test_while1(IN insertCount INT) BEGIN 	DECLARE i INT DEFAULT 1; 	a:WHILE i<=insertCount DO 		INSERT INTO admin(username,`password`) VALUES(CONCAT("xiaohua",i),"0000"); 		IF i>=20 THEN LEAVE a; 		END IF; 		SET i=i+1; 	END WHILE a; END $  CALL test_while1(100)$  select * from admin $  #3.添加iterate语句 #案例:批量插入,根据次数插入到admin表中多条记录,只插入偶数次 TRUNCATE TABLE admin$ DROP PROCEDURE test_while1$ CREATE PROCEDURE test_while1(IN insertCount INT) BEGIN 	DECLARE i INT DEFAULT 0; 	a:WHILE i<=insertCount DO 		SET i=i+1; 		IF MOD(i,2)!=0 THEN ITERATE a; 		END IF; 		 		INSERT INTO admin(username,`password`) VALUES(CONCAT("xiaohua",i),"0000"); 		 	END WHILE a; END $  CALL test_while1(100)$  循环控制语句 leave:类似于break,用于跳出所在的循环 iterate:类似于continue,用于结束本次循环,继续下一次

3。9亿年前长着四肢的苏格兰古椎鱼可能是人类最早祖先之一日本和澳大利亚科学家的联合研究表明,苏格兰出土的3。9亿前长有四肢的古椎鱼可能是所有四肢动物(包括人类)的最早祖先之一。研究人员利用高分辨率微CT扫描古椎鱼化石。据报道,这种被称为杨鸣大胆启用3后卫?锁定309顶级外援补强阵容,获李洪庆支持近日中国男篮已经开始了集训,而在一些优秀的CBA队伍中,很多球队管理层和球队教练组正在吸引顶级球星的加盟,并且打造更加强悍的球队。目前来看,本赛季总冠军获得者辽宁男篮非常希望能够在腾讯优图人脸安全能力再获权威认可来源中国青年网5月26日,2022中国国际大数据产业博览会(以下简称数博会)在线上举办。其中,数博发布之领先科技成果奖将于数博会开幕当天正式揭晓,经过激烈角逐和层层选拔,最终共55没想到,变量成了增量科学技术是第一生产力。这句话大家都耳熟能详,也感受深切。与此同时,科技创新也被形象地称为栽树工程。一颗创新的种子从立项到研发再到产出成果,往往要经过科研人员多年的潜心研究,凝聚了大2。TypeScript编程实践(入门篇)变量常量TypeScript编程实践一语法TypeScript程序主要由以下几个部分组成模块命名空间类接口枚举函数块语句(可简单理解为一行代码,实际可多行,分号可省略)注释TypeScri工业互联网双跨平台中,用友有一个公认的唯一性近日,工信部发布2022年跨行业跨领域工业互联网平台名单,用友精智工业互联网平台排名再进一步,居28家双跨平台第7位。这是用友连续4年位列国家级双跨平台。国家级工业互联网双跨平台总男生想要变帅,听李佳琦的,用这4个护肤品绝对够了你理想中的帅哥是什么样子的呢?可能一千个人有一千个回答但总的来说,有个共同的特点,就是要干干净净有气质,不然五官长得再好看也不行那作为五官平平的普通男生如何变帅呢?听李佳琦的,用这不联网物理隔绝的系统就很安全?黑客你还有风扇呢,看伊朗案例从1988年第一个网络蠕虫病毒诞生以来,互联网危机四伏的观念就已经深入人心。如果只是这样,不给电脑联网禁止使用任何可移动储存介质,数据就安全了吗?但专门研究黑客攻击技术的研究者告诉好百邻家政帮你搞定居家过敏源,全方位清洁杀菌发现自家孩子有点不对劲?时不时地打喷嚏咳嗽,爱揉眼睛流鼻涕。。不要以为只是换季感冒!如果孩子流鼻涕打喷嚏咳嗽等症状迟迟不好,就要考虑是不是过敏所致。夏季是细菌病毒繁殖的活跃期。细菌女人过了40岁,皮肤保养也要跟上,每天做好这4步,赢人生后半场男人四十一枝花,女人四十豆腐渣!40岁对于女人来讲是一个分水岭,身体各项指标都开始下降,肤质也大不如前,如果不注重保养就很容易加速皮肤的衰老。因此日常保养就显得非常重要,只有肌肤状那么降尿酸最有效的方法是什么?据统计,我国约有1。2亿人患有高尿酸,痛风患者约有1200万人,这项数值甚至快要赶超三高的病发率了那么降尿酸最有效的方法是什么?饮食控制1)戒果糖戒高果糖水果蜂蜜高果糖浆(各种酱果
太平镇翟庄子村烂水塘变身水上公园家门口有了休闲好去处来源津滨海客户端津滨海讯(记者李婷婷通讯员王宏睿摄影报道)过去,太平镇翟庄子村的村民总是为家门口的一条烂水塘烦恼不堪,自从最近改造完工后,烂水塘摇身变成了全新的水上公园,村民们推窗被金主抛弃,渣男勒索,京圈公主变怨妇,景甜到底做错了什么?近期,张继科涉赌债纠纷,出卖景甜私密视频抵债的事情闹得沸沸扬扬。目前已经牵扯了多位女星,除了景甜之外,袁姗姗邓莎杨幂甚至退圈的郑爽都被拉进了这次事件中。事情爆出后,张继科所在公司发机甲!怪兽!游道易促成环太平洋x口袋奇兵联动新体验2023年3月30日,传奇影业(LegendaryPictures)著名IP环太平洋与江娱互动旗舰游戏口袋奇兵开启了一项激动人心的联动合作,在双方粉丝中掀起一阵热潮。本次合作的成功董卿老公变老赖?密春雷的百亿帝国坍塌,被执行超9亿元近日,有消息称著名主持人董卿的丈夫朱军涉嫌欠债,被列为失信被执行人。同时,密春雷所创办的泉州神都大佛项目也遭遇了巨大的财务危机。两位曾经的名人都深陷于债务危机之中,他们的百亿帝国瞬重庆发布41项地方标准鼓励方言顺口溜编入导游词4月4日,重庆市市场监管局通报了近日批准发布的重庆市地方标准公告(第七十八号),共计41项地方标准,涵盖农业农村经济信息生态文明市场监管社会事业等领域。其中,为诚邀四方游客来打卡,花海潍坊美如画,护花使者城管蓝大众网海报新闻记者张书凝通讯员郑高亮潍坊报道进入三月以来,潍坊市区各种花树竞相开放,整个市区已成花海,给广大市民和游客带来了视觉盛宴。花海美景来之不易,需要所有人共同关心和保护,但五一租车出游预订量同比增长超5倍,四川福建等省份最热门新京报贝壳财经讯(记者于梦儿)4月3日,租车平台租租车发布自驾游趋势报告近一个月春游出行订单大幅增长,清明期间平均租车时长为3。1天,较去年增加0。7天。从目的地来看,三亚成都广州昆山农村公路新添11个服务区,累计打造农村公路驿站22处停车加水如厕休憩,甚至还有文化休闲等多样化功能,真是太赞了!昨天(4月3日),彭女士到昆山淀山湖镇游玩,正好在附近的农村公路驿站淀湖驿站停车休整,功能齐全服务周到的驿站让她倍感舒适齐长城下的古村落双乳村2015年,长清区归德街道双乳村被命名为山东省第二批传统村落。2016年被列入第四批中国传统村落名录,2018年被列入山东省2018年中央财政支持范围的中国传统村落。双乳村有着独特上海4月6大赏花活动来袭,千万不要错过!春天的上海是彩色的,各色花花竞相绽放,各大花展花节活动相继展开。上海的周末不愁没处去,无忧君盘点了近期6大赏花活动,春天到了大家千万不要错过哦!上海鲜花港郁金香花展上海鲜花港郁金香英国游vlog探访文豪莎士比亚和好莱坞影后安妮海瑟薇的故乡(1)这次要去的地方是一个小镇,stratforduponavonriver,是著名的大文豪莎士比亚好莱坞明星安妮海瑟薇的故乡。搭乘的是东航下午的航班,幸运的旁边座位没人,给了我足够的空