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

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

  变量系统变量:全局变量会话变量 自定义变量:用户变量局部变量 说明:变量由系统定义,不是用户定义,属于服务器层面 注意:全局变量需要添加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,用于结束本次循环,继续下一次

阜平县委网信办联合阜平县委党校开展网络安全宣传进农村活动为切实提高广大人民群众的网络安全意识和安全防护技能,帮助人民群众有效预防和应对网络安全事故的发生,打造稳定可靠的网络安全环境。9月23日,阜平县委网信办阜平县委党校开展网络安全宣传夯实云计算基础,加快数字化转型进程数字经济已经成为全球经济发展的新动能,产业数字化成为数字经济发展的重要内核,云计算则成为助力数字化转型的重要基石。在近日举行的2021年岭南科学论坛系列活动中,重点提出要强化数字经在云中确保安全的五个技巧在当今的混合工作环境中,云安全比以往任何时候都更加重要。无论企业是否做好准备,新冠疫情都开启了企业采用云服务的新时代。当然,一些企业在2020年初之前就已经踏上了云之旅,但有明确的分享几件提升家居幸福感的好物整个国庆期间我是哪也没去,就在家里待着了,除了看看电影,陪陪老婆孩子,就是清理下家里卫生啥的,也顺带着梳理了下近期入手的一些东西,有几件是我觉得确实能够提升家居幸福感的好物,这里和与其说是回音壁,不如说是扁平的2。0有源音箱,惠威M200Bar不论是工作还是写小说,又或者是开车的过程中,我都习惯了随时有音乐相伴。而自打同事用私房钱买的一对惠威M200音箱换工位时没敢搬回家,放到我那被我白嫖了半年以后,我就对惠威的M系列音适合短途旅行出差的EDC好物分享我买东西的时候,准确的说是价格超过一百块的东西时,都会按照从强需求到弱需求的顺序给自己列上一个表格,然后找预算内最能满足强需求,努力兼顾弱需求的东东,下面这些东西都是我经过这么一番筑牢数字安全屏障如今的网络安全,内涵和外延不断拓展,不仅关乎个人安全企业安全,也关乎国家安全,已经成为社会治理国家治理的重要议题网络安全威胁是全天候无间断的,只有坚持驰而不息久久为功,才能不断织密EPM业财一体风头渐起,FONE如何突破财务数字化的边界?传统的财务服务,早已不再是企业孜孜以求的目标。那个驼着背弯着腰端着水杯戴着老花镜的账房先生,绝不再是财务的形象代言。如今,财务已经融入企业的各项业务活动之中,成为企业管理者进行业务小身材蕴含大能量,让音质得到一耳朵提升的BlueminiR2R大家好,我是手撕鲈鱼,一个经常被误认为体育老师的小学网管。小说动作电影和音乐算是我的三大爱好,而音乐方面算是投入比较多的,先后经手过的耳机怎么也有几十款了,还不算蹭听的其他烧友的存榆林WEYVV7热销中,限时特惠1。5万元公司里忙不完的项目,每日地铁口的拥堵,没有个人空间怎么办?我要买WEYVV7,我要买WEYVV7,我要买WEYVV7。重要的事情说三遍!近日,榆林亿荣WEY店WEYVV7销售,颜色手机修图APPSnapseed全新的体验创意篇(四)创意功能篇四许多人都会使用Snapseed修图,但是对于那些想使用相框的就很失望了,就那么几个干巴巴的样式,根本不够用的。我就想了,能不能根据现有的工具开发出更多的相框,真是功夫不
全球汽车芯片短缺,美国允许华为采购了?北京时间8月25日,有国外媒体报道称,美国已经批准了供应商向华为提供价值数亿美元的汽车零部件芯片许可证,这些芯片将会被用于屏幕和传感器等汽车零部件。也有消息称,在供应商获得数千万美为啥现在快递送货上门变少了记者调查快递末端投递服务问题为啥现在快递送货上门变少了北京的李先生前不久又丢了一个快递。当天下午,他在购物软件后台看到自己购买的商品正在配送,半个小时后再刷新订单信息,发现商品已被华为nova9入网工信部非5G,搭载鸿蒙OS2。1系统在华为的手机家族中,除了P以及Mate这两代旗舰产品之外,华为旗下的nova系列手机同样获得年轻消费者的追捧,与Mate和P相比,nova手机更加年轻化与潮流化。在经过多次跳票之后拍照出色的三款旗舰手机!性能强颜值又高如果想要得到一款适合你的手机,那么最为关注的便是其体验感,现如今的手机市场只有那些旗舰手机才能够达到你的标准,不妨就一起来看一下这几款机型,说不定就有适合你的那一款。1一加9Pro华为nova9Pro来了,100W快充,高通6nm芯片加持最近关于华为新机的消息层出不穷,华为手机除了已经发布的P50系列,众所期待的华为年度旗舰mate50还没有确切的消息,但是华为nova9目前已经入网工信部,之前流传的华为nova910002000左右,性价比之王手机推荐现在大多数人,无论是在生活中还是在工作中使用手机的频率越来越高,可并不是所有的人都有经济能力买价格很高的手机,这时候价格相对较低,但性价比超高的手机就成为了大多数人的选择。接下来我电信运营商的头条快讯之5G最新消息三大运营商半年报之5G对比,决战刚刚开始近日,三大电信运营商陆续公布了2021年上半年财报,其中,5G是一大亮点,在三大电信运营商的半年财报推介材料中也占据了最多的篇幅。运营商半年马斯克被挖墙脚!Neuralink联合创始人再创业,团队都是前同事原标题马斯克被挖墙脚!Neuralink联合创始人再创业,团队都是前同事正在招聘,速来!神经科技的竞争市场最近又加入了一个参赛对手!这名选手还是马斯克在Neuralink的老伙伴,屏下摄像时代,中兴Axon30和小米MIX4,谁更胜一筹随着科技的发展,手机逐渐成为我们生活中不可缺少的电子产品,国产手机在这大环境中迸发出强大的创新能力,国产品牌的各种创新设计层出不穷,就目前市面上的屏幕设计来看,有全面屏刘海屏挖孔屏野小兽智能划船机R15居家健身的好伙伴感觉在YQ反扑的大环境下,选择家庭健身似乎更加妥当,既方便还又安全。这次我又提前收到了野小兽R15智能划船机,第一眼着实让我感到惊讶。因为相比较前几代划船机,它的体积整整缩小了特别北京SKP回应被投诉卖假货人类高质量男性任执行董事的公司经营异常今天的热点新闻你都知道了吗?社会类1阿里女员工被性侵案一名嫌犯被批捕8月25日,据中国检察网消息,近日,济南市公安局槐荫区分局分别以犯罪嫌疑人张某涉嫌强制猥亵罪王某文涉嫌强制猥亵罪