版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MySQL编程基础学习目标了解常量和变量相关知识掌握如何使用常量和变量掌握运算符和表达式的使用掌握并能熟练使用MySQL函数掌握MySQL各种结构控制语句的使用素养目标培养学生严谨的编程态度、良好的职业道德和社会责任感培养学生理论联系实际的工作作风,增强实践创新能力培养学生的主动沟通意识、合作意识和科技强国意识章节内容9.1常量和变量 9.2运算符和表达式9.3函数9.4流程控制语句
9.1常量和变量
9.1.1常量 9.1.2变量 9.1.1常量常量是指在程序运行过程中保持不变的量。在MySQL程序设计中,常量的格式取决于它所表示的值的数据类型。在MySQL中常用常量如表9-1所示。
表9-1MySQL常见常量9.1.1常量1.字符串常量字符串是指用单引号或双引号括起来的字符序列,分为ASCII字符串常量和Unicode字符串常量。
ASCII字符串常量是用单引号或双引号括起来的,由ASCII字符构成的符号串。举例:‘hello’,‘Howareyou!’Unicode字符串常量与ASCII字符串常量相似,但它前面有一个N标志符(N代表SQL-92标准中的国际语言(NationalLanguage))。N前缀必须为大写。只能用单引号括起字符串。如:N‘hello’,N‘Howareyou!’在字符串中不仅可以使用普通的字符,也可使用几个转义序列,它们用来表示特殊的字符。【例9-1】执行如下语句:
SELECT'This\nIs\nFour\nLines';其中,“\n”表示换行。9.1.1常量2.数值常量数值常量可以分为整型常量和实型常量。整数常量是指不带小数点、是整数的十进制数或十六进制,例如:10,+723,-20190723和0x41。实型常量是指在数据库中表示实数或浮点数的常量值。3.日期时间常量日期时间常量:用单引号将表示日期时间的字符串括起来构成。日期型常量包括年、月、日,数据类型为DATE,表示为“1999-06-17”这样的值。时间型常量包括小时数、分钟数、秒数及微秒数,数据类型为TIME,如“12:30:43.00013”。日期/时间的组合,数据类型为DATETIME或TIMESTAMP,如“1999-06-1712:30:43”。9.1.1常量4.布尔值布尔值只包含两个可能的值:TRUE和FALSE,其中FALSE的数字值为“0”,TRUE的数字值为“1”。5.NULL值NULL值是一个特殊值,可适用于各种列类型,用于指示字段的缺失或未设置状态,通常用来表示“没有值”和“无数据”等意义。并且不同于数字类型的“0”或字符串类型的空字符串。9.1.1常量【例9-2】在SQL查询中,经常会用到常量。(1)用于在算术表达式中的数据值selectcj+10fromxsxkb;(2)作为查询条件使用select*fromxsjbxxbwherexh='202420809101';(3)作为数值赋值给变量updatexsxkbsetcj=75wherexh='202220505101'andkcdm='00202117';(4)在插入记录的语句中使用insertintoxsjbxxbvalues('202220409104','王准','男','2005-7-25','2022204091','团员','汉族','四川','04','水利水电工程','2022',null);9.1.2变量变量是指在程序执行过程中,其值可以改变的量。变量用于存储程序执行过程中的输入值、中间结果和最后的计算结果,这与数学中的变量概念基本一样,变量在命名时要满足对象标识符的命名规则。在MySQL中,有4种类型的变量:全局变量、会话变量、用户变量和局部变量。1.全局变量全局变量影响服务器整体操作,是由系统定义的,在MySQL启动时由服务器自动初始化为默认值,用户不能定义全局变量,全局变量的值可以通过更改my.ini文件来修改,需要注意是,要想更改全局变量,必须具有SUPER权限。要想查看一个全局变量,有以下几种方式。(1)查看所有全局变量的值mysql>showglobalvariables;(2)指定显示某个全局变量的值mysql>select@@global.var_name;9.1.2变量(3)使用“LIKE”结合通配符“%”查看全局变量的值【例9-3】查看包含有字符“block”的全局变量。SQL语句:showglobalvariableslike'%block%’;要设置一个全局变量,有如下两种方式。setglobalvar_name=value;或set@@global.var_name=value;【例9-4】将全局变量range_alloc_block_size的值设为4000。mysql>setglobalrange_alloc_block_size=4000;(注意:这里的global不能省略,否则默认是会话变量session。)9.1.2变量在SQL语句中调用全局变量时,需要在其名称前加上“@@”符号,如查看当前MySQL的版本信息的SQL语句:select@@version;注意:在调用某些特定的全局变量时需要省略“@@”符号。如系统日期、系统时间、用户名等。2.会话变量会话变量在是在每次建立一个新连接时,由MySQL服务器将当前所有全局变量值复制一份给会话变量完成初始化,它与全局变量的区别是会话变量只影响当前的数据连接参数,而全局变量是用于整个MySQL服务器的调节参数,它影响的是整个服务器;另外,设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量,而不能更改其它客户端的会话变量会话变量的作用域与用户变量一样,仅限于当前连接,当前连接断开后,其设置的所有会话变量均失效。9.1.2变量与全局变量一样,设置会话变量也有如下三种方式。setsessionvar_name=value;set@@session.var_name=value;setvar_name=value;与全局变量一样,查看一个会话变量也有如下三种方式。select@@var_name;select@@session.var_name;showsessionvariableslike"th%";(查看以字符“th”开头的会话变量)9.1.2变量3.用户变量用户可以在表达式中使用自己定义的变量,这样的变量叫做用户变量。在使用用户变量前必须定义和初始化。如果使用没有初始化的变量,它的值为NULL。定义和初始化一个变量可以使用SET语句语法格式为:SET@user_variable1=expression1[,user_variable2=expression2,…]其中,user_variable1、user_variable2为用户变量名,变量名可以由当前字符集的字母、数字字符、“.”、“_”和“$”组成。【例9-5】创建用户变量name并赋值为“王林”。SET@name='王林';9.1.2变量还可以同时定义多个变量,中间用逗号隔开。【例9-6】创建用户变量user1并赋值为1,user2赋值为2,user3赋值为3。
SET@user1=1,@user2=2,@user3=3;定义用户变量时变量值可以是一个表达式。【例9-7】创建用户变量user4,它的值为user3的值加1。SET@user4=@user3+1;在一个用户变量被创建后,它可以以一种特殊形式的表达式用于其他SQL语句中。变量名前面也必须加上符号@。【例9-8】创建并查询用户变量name的值。SET@name='王林’;SELECT@name;9.1.2变量【例9-9】使用变量查询学号为“202220409101”的学生信息。(1)选择数据库后执行以下语句完成变量赋值。mysql>SET@num='202220409101';(2)执行以下语句完成查询。mysql>SELECT*FROMxsjbxxbWHERExh=@num;4.局部变量局部变量一般用在SQL语句块中,比如存储过程的begin/end中。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。declare语句专门用于定义局部变量,可以使用default来说明默认值。定义局部变量的语法形式为:DECLAREvar_name[,var_name]...data_type[DEFAULTvalue];其中,var_name表示变量名,data_type表示数据类型,value表示默认值。9.1.2变量例如,定义局部变量name,数据类型为char(6),默认值为“张三”,代码如下。declarenamechar(6)default‘张三’;可以通过set语句或select语句给局部变量赋值。(1)使用set语句给局部变量name赋值为“李四”,代码如下。setname=’李四’;(2)使用select语句给局部变量赋值,将学号为“202220409101”的学生姓名赋值给局部变量name,代码如下。selectxmintonamefromxsjbxxbwherexh=202220409101;注意:局部变量必须定义在函数、触发器、存储过程等存储程序中,不能单独使用。局部变量的作用范围仅仅局限于存储程序中。9.2运算符和表达式
9.2.1算术运算符 9.2.2比较运算符 9.2.3逻辑运算符 9.2.4位运算符 9.2.5运算符与优先级 9.2.6表达式 9.2.1算术运算符算术运算符包括加、减、乘和除等。它们是SQL中最基本的运算符,MySQL中的算术运算符如表9-2所示。1./或DIV:/:表示除法,返回商。DIV:表示除法,返回商,但是只返回整数部分。2.%或MOD%和MOD表示取余,返回余数。在除法运算和模运算中,如果除数为0,将是非法除数,返回结果为NULL。表9-2算术运算符算术运算符说
明+加法运算-减法运算*乘法运算/或DIV除法运算,返回商%或MOD求余运算,返回余数9.2.2比较运算符比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0。比较运算符常用来作为SELECT查询语句的条件来使用,返回符合条件的记录。比较运算符包括大于、小于、等于、不等于、LIKE、IN、BETWEENAND和ISNULL等。MySQL支持的比较运算符如表9-3所示。比较运算符说
明=等于<
小于<=小于或等于>
大于>=大于或等于<=>安全等于,严格比较两个NULL值是否相等<>
或!=不等于ISNULL
或
ISNULL()判断一个值是否为NULLISNOTNULL判断一个值是否不为NULLLEAST当有两个或多个参数时,返回最小值GREATEST当有两个或多个参数时,返回最大值BETWEENAND判断一个值是否落在两个值之间(>=min&&<=max)IN判断一个值是IN列表中的任意一个值NOTIN判断一个值不是IN列表中的任意一个值LIKE通配符匹配REGEXP正则表达式匹配9.2.3逻辑运算符 逻辑运算符用来判断表达式的真假,其返回值为布尔型。如果表达式值为真,结果返回1或true,表达式值为假,结果返回0或false。逻辑运算符包括与、或、非和异或,逻辑运算符如表9-4所示。表9-4逻辑运算符逻辑运算符说
明NOT或者!逻辑非AND或者&&逻辑与OR或者||逻辑或XOR逻辑异或9.2.4位运算符位运算符包括位与、位或、位取反、位异或、位左移和位右移等位运算符。位运算必须先将数据转换为二进制,然后在二进制格式下进行操作,运算完成后,再将二进制的值转换为原来的类型,返回给用户。MySQL中提供的位运算符如表9-5所示。表9-5位运算符位运算符说
明|位或&位与^位异或<<
位左移>>
位右移~位取反9.2.5运算符与优先级当一个复杂的表达式有多个运算符时,运算符优先级决定执行运算的先后次序。执行的顺序会影响所得到的运算结果,表9-6列出了MySQL中的各类运算符及其优先级。优先级由低到高排列运算符1=(赋值运算)、:=2||、OR3XOR4&&、AND5NOT6BETWEEN、CASE、WHEN、THEN、ELSE7=(比较运算)、<=>、>=、>、<=、<、<>、!=、
IS、LIKE、REGEXP、IN8|9&10<<、>>11-(减号)、+12*、/、%13^14-(负号)、〜(位反转)15!9.2.6表达式表达式就是常量、变量、列名、复杂计算、运算符和函数的组合。一个表达式通常可以得到一个值。与常量和变量一样,表达式的值也具有某种数据类型,可能的数据类型有字符类型、数值类型、日期时间类型。这样,根据表达式的值的类型,表达式可分为字符型表达式、数值型表达式和日期表达式。表达式按照形式还可分为单一表达式和复合表达式。单一表达式就是一个单一的值,如一个常量或列名。复合表达式是由运算符将多个单一表达式连接而成的表达式例如:1+2+3,a=b+3,'2008-01-20'+INTERVAL2MONTH。表达式一般用在SELECT及SELECT语句的WHERE子句中。9.3函数
9.3.1系统内置函数 9.3.2自定义函数 9.3.1系统内置函数 1.聚合函数聚合函数是平时比较常用的一类函数,常用于求和,求平均值,最大值、最小值等操作。
函数名称作
用MAX(expression)返回字段expression中的最大值MIN(expression)返回字段expression中的最小值COUNT(expression)返回查询的记录总数,expression参数是一个字段或者*号SUM(expression)返回指定字段的总和AVG(expression)返回一个表达式的平均值,expression是一个字段9.3.1系统内置函数 2.数值型函数数值型函数主要是对数值型数据进行处理。
函数名称作
用ABS(x)求x的绝对值SQRT(x)求x的二次方根MOD(x,y)求x除以y以后的余数CEIL(x)和
CEILING(x)两个函数功能相同,都是返回不小于参数的最小整数,即向上取整FLOOR(x)返回小于或等于x的最大整数,向下取整,返回值转化为一个BIGINTRAND()生成一个0~1的随机数,传入整数参数是用来产生重复序列的ROUND(x[,y])返回离x最近的整数,可选参数y表示要四舍五入的小数位数,如果省略,则返回整数。SIGN(x)返回x的符号,x是负数、0、正数分别返回-1、0和1
POW(x,y)和
POWER(x,y)两个函数的功能相同,返回x的y次方SIN(x)求正弦值ASIN(x)求反正弦值,与函数SIN互为反函数COS(x)求余弦值ACOS(x)求反余弦值,与函数COS互为反函数TAN(x)求正切值ATAN(x)求反正切值,与函数TAN互为反函数COT(x)求余切值9.3.1系统内置函数 3.字符串函数字符串函数可以对字符串类型数据进行处理。函数名称作
用CHAR_LENGTH(s)计算字符串s的字符数LENGTH(s)计算字符串长度函数,可返回字符串的字节长度CONCAT(s1,s2...sn)合并字符串函数,返回结果为连接参数产生的字符串,其参数可以是一个或多个INSERT(s1,x,len,s2)字符串s2替换s1的x位置开始长度为len的字符串LOWER(s)将字符串s中的字母转换为小写UPPER(s)将字符串s中的字母转换为大写LEFT(s,n)从左侧字截取符串,返回字符串s的前n个字符RIGHT(s,n)从右侧字截取符串,返回字符串s的后n个字符TRIM(s)删除字符串左右两侧的空格REPLACE(s,s1,s2)将字符串s2替代字符串s中的字符串s1,返回替换后的新字符串SUBSTRING(s,start,length)从字符串s的start位置截取长度为length的子字符串,返回从指定位置开始指定长度的字符串REVERSE(s)字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串9.3.1系统内置函数 4.日期和时间函数日期和时间函数主要用于对日期和时间型数据进行处理。函数名称作
用CURDATE()和CURRENT_DATE()两个函数作用相同,返回当前系统的日期值CURTIME()和CURRENT_TIME()两个函数作用相同,返回当前系统的时间值NOW()和SYSDATE()两个函数作用相同,返回当前系统的日期和时间值UNIX_TIMESTAMP(date)获取UNIX时间戳函数,返回一个以UNIX时间戳为基础的无符号整数FROM_UNIXTIME(unix_timestamp,format)将UNIX时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数MONTH(d)获取指定日期中的月份MONTHNAME(d)获取指定日期中的月份的英文名称DAYNAME(d)获取指定日期中对应星期几的英文名称DAYOFWEEK(d)获取指定日期中对应一周的索引位置值WEEK(d)获取指定日期是一年中的第几周,返回值的范围为0~52或1~53DAYOFYEAR(d)获取指定日期是一年中的第几天,返回值的范围是1~366DAYOFMONTH(d)获取指定日期是一个月中的第几天,返回值的范围是1~31YEAR(d)获取年份,返回值的范围是1970~2069TIME_TO_SEC(t)将时间参数t转换为秒数SEC_TO_TIME(s)将以秒为单位的时间s转换为时分秒的格式DATE_ADD(d,INTERVALexprtype)和ADDDATE(d,INTERVALexprtype)两个函数功能相同,都是向日期添加指定的时间间隔DATE_SUB(d,INTERVALexprtype)和SUBDATE(d,INTERVALexprtype)两个函数功能相同,都是向日期减去指定的时间间隔ADDTIME(t,n)时间加法运算,在原始时间上添加指定的时间SUBTIME(t,n)时间减法运算,在原始时间上减去指定的时间DATEDIFF(d1,d2)获取两个日期的间隔,返回参数1减去参数2的值DATE_FORMAT(d,f)格式化指定的日期,根据表达式f的要求显示日期dWEEKDAY(d)获取指定日期在一周内对应的工作日索引9.3.1系统内置函数 5.流程控制函数流程控制类函数可以进行条件操作,用来实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台。函数名称作
用IF(expr,v1,v2)如果表达式expr成立,返回结果v1;否则,返回结果v2。IFNULL(v1,v2)如果v1的值不为NULL,则返回v1,否则返回v2。NULLIF(expr1,expr2)比较两个字符串,如果字符串expr1与expr2相等返回NULL,否则返回expr1CASEWHEN搜索语句9.3.1系统内置函数 6.加密函数加密函数主要用于对字符串进行加密。函数名称作用MD5()计算字符串str的MD5校验和SHA()计算字符串str的安全散列算法(SHA)校验和SHA2(str,hash_length)hash_length支持的值224,256,384,512,或0。0等同于2569.3.2自定义函数 MySQL中使用CREATEfunction来创建自定义函数,其语法形式如下:CREATEFUNCTIONfunction_name([parameter_list])RETURNSreturn_type[characteristic]BEGIN--函数体--可以包含声明变量、执行SQL语句、控制流语句等RETURNvalue;END;参数说明:function_name表示函数名:合法的标识符,并且不应该与已有的关键字冲突。一个函数应该属于某数据库,可以使用db_name.funciton_name的形式执行当前函数所属的数据库,否则默认为当前数据库。9.3.2自定义函数 parameter_list(可选参数)表示参数列表:可以有一个或者多个函数参数,甚至没有参数也可以。对于每个参数,由参数名和参数类型组成。characteristic(可选):用于指定函数的特性,常见的特性有: DETERMINISTIC:表示函数在输入相同的情况下,总是返回相同的结果。 NOSQL:表示函数不包含SQL语句。 READSSQLDATA:表示函数只读取SQL数据,不进行写操作。 MODIFIESSQLDATA:表示函数会修改SQL数据。returns:返回值,指明返回值类的类型,例如
INT、VARCHAR、DATE
等。。函数体:自定义函数的函数体由多条可用的MySQL语句、流程控制、变量声明
等语句构成。需要指明的是函数体中一定要含有return返回语句。
begin…end:函数体的起始和结束符。9.3.2自定义函数 2.调用函数调用函数的语法格式为:Select函数名();Select函数名([参数列表]);【例9-10】创建一个无参数的自定义函数print(),实现打印输出“Hello_Mysql!”的功能,并调用该函数。mysql>DROPFUNCTIONIFEXISTSprint;mysql>DELIMITER##mysql>CREATEFUNCTIONprint()->RETURNSVARCHAR(255)->NOSQL->BEGIN->RETURN"Hello_Mysql";->END##mysql>DELIMITER;调用hello函数,输入SQL语句:mysql>SELECTprint();9.3.2自定义函数 【例9-11】创建带一个参数的自定义函数getAvgByKcdm(course_idchar(10)),实现根据传入的课程代码查询该门课程的平均分(保留一位小数),并调用该函数。mysql>DROPFUNCTIONIFEXISTSgetAvgByKcdm;mysql>DELIMITER##mysql>CREATEFUNCTIONgetAvgByKcdm(course_idchar(10))->RETURNSFLOAT->READSSQLDATA->BEGIN->DECLAREAvgScoreFLOATdefault0;->SELECTround(Avg(cj),1)INTOAvgScore->FROMxsxkb->WHEREkcdm=course_id;->RETURNAvgScore;->END##mysql>DELIMITER;调用getAvgByKcdm函数,输入SQL语句:selectgetAvgByKcdm('00202117');9.3.2自定义函数 【例9-12】创建带两个参数的自定义函数AddNumbers(num1INT,num2INT),该函数接受两个整数参数并返回它们的和,并调用该函数。mysql>DROPFUNCTIONIFEXISTSAddNumbers;mysql>DELIMITER##mysql>CREATEFUNCTIONAddNumbers(num1INT,num2INT)->RETURNSINT
->DETERMINISTIC->BEGIN->DECLAREsumINTDEFAULT0;->SETsum=num1+num2;->RETURNsum;->END##mysql>DELIMITER;调用AddNumbers函数,输入SQL语句:selectAddNumbers(10,20);9.3.2自定义函数 3.查看函数查看当前数据库中自定义函数的信息。showcreatefunction函数名;
--查询单个函数showfunctionstatus[like'pattern'];---查询所有函数4.修改函数MySQL本身并不直接支持修改已存在的函数的语法,因此不能对函数的内部SQL语句和函数的参数列表进行修改。一般要修改函数体时,可以采用先使用DROPFUNCTION语句删除函数,然后再使用CREATEFUNCTION语句重新定义的方法。5.删除函数删除自定义函数可以使用DROPFUNCTION语句,语法格式为:DROPFUNCTION[IFEXISTS]function_name;9.4流程控制语句
9.4.1IF语句 9.4.2CASE语句 9.4.3LOOP语句和LEAVE语句 9.4.4REPEAT语句 9.4.5WHLE语句 9.4.6ITERATE语句 9.4.1IF语句 IF语句用来进行条件判断,根据不同的条件执行不同的操作。该语句在执行时首先判断IF后的条件是否为真,为真则执行THEN后的语句,如果为假则继续判断下一个IF语句直到条件为真为止,当以上都不满足时则执行ELSE语句后的内容。IF语句表示形式如下:IFsearch_conditionTHENstatement_list[ELSEIFsearch_conditionTHENstatement_list]…[ELSEstatement_list]ENDIF参数说明:search_condition为判断条件,statement_list为相应操作,如果所有判断条件均不为TRUE,则执行ELSE子句中的操作。9.4.1IF语句 【例9-13】创建一个自定义函数getGrade(stu_noVARCHAR(20),cour_nochar(10)),该函数可通过学生学号(stu_no)和课程编号(cour_no)查询其成绩(grade)、返回成绩和成绩的等级,其中,成绩大于或等于90分为A级,小于90分大于或等于80分为B级,小于80分大于或等于70分为C级,依次到E级。代码如下:mysql>DELIMITER##mysql>CREATEFUNCTIONgetGrade(stu_noVARCHAR(20),cour_noCHAR(10))->RETURNSVARCHAR(50)->READSSQLDATA->BEGIN->DECLAREgradeINTDEFAULT0;->DECLAREgrade_levelARECHAR(1);->DECLAREresultVARCHAR(50);9.4.1IF语句 ->selectcjintogradefromxsxkbwherexh=stu_noandkcdm=cour_no;->IFgrade>=90THEN->SETgrade_level='A';->ELSEIFgrade>=80THEN->SETgrade_level='B';->ELSEIFgrade>=70THEN->SETgrade_level='C';->ELSEIFgrade>=60THEN->SETgrade_level='D';->ELSE->SETgrade_level='E';->ENDIF;->SETresult=CONCAT('Grade:',grade,',Level:',grade_level);->RETURNresult;->END##mysql>DELIMITER;9.4.2CASE语句 CASE语句有两种使用形式。第1种语法形式如下:CASEcase_exprWHENwhen_valueTHENstatement_list[WHENwhen_valueTHENstatement_list]…[ELSEstatement_list]ENDCASE参数说明:case_expr表示判断条件的表达式,将此表达式与每个WHEN子句中when_value值进行比较,直到与其中一个相等,此时,执行相应THEN子句中的statement_list。如果表达式与所有when_value值都不相等,则执行ELSE子句中的statement_list。9.4.2CASE语句 CASE语句的第2种语法形式如下:CASEWHENsearch_conditionTHENstatement_list[WHENSearch_conditionTHENstatement_list]….[ELSEStatement_list]ENDCASE上述语句中,系统会对每个WHEN子句中的search_condition表达式进行判断,直到某个search_condition表达式为TRUE,此时将执行其对应的THEN子句中的statement_list。如果所有search_condition表达式的值都不为TRUE,则执行ELSE子句中的statement_list。9.4.2CASE语句 【例9-14】用CASE语句改写例9-13。代码如下:mysql>DELIMITER##mysql>CREATEFUNCTIONgetGradeCase(stu_noVARCHAR(20),cour_noCHAR(10))->RETURNSVARCHAR(50)->READSSQLDATA->BEGIN->DECLAREgradeINTDEFAULT0;->DECLAREgrade_levelCHAR(1);->DECLAREresultVARCHAR(50);->selectcjintogradefromxsxkbwherexh=stu_noandkcdm=cour_no;->CASE->WHENgrade>=90THEN->SETgrade_level='A';9.4.2CASE语句 ->WHENgrade>=80&&grade<90THEN->SETgrade_level='B';->WHENgrade>=70&&grade<80THEN->SETgrade_level='C';->WHENgrade>=60&&grade<70THEN->SETgrade_level='D';->ELSE->SETgrade_level='E';->ENDCASE;->SETresult=CONCAT('Grade:',grade,',Level:',grade_level);->RETURNresult;->END##mysql>DELIMITER;9.4.3LOOP语句和LEAVE语句 LOOP语句可以实现简单的循环,使得系统能够重复执行循环结构内的语句列表。该语句列表由一条或多条语句组成,每条语句使用分号(;)隔开。语法形式如下:[loop_label:]LOOPStatement_listENDLOOP[endlabel]参数说明:loop_label表示LOOP语句的标注名称(可以省略),statement_list表示需要循环执行的SQL语句。如果不在statement_list中增加退出循环的语句,LOOP语句可以实现简单的死循环。使用LEAVE语句可以退出循环。语法形式如下:LEAVElabel;其中,label参数表示循环的标注名。9.4.3LOOP语句和LEAVE语句 【例9-15】创建一个自定义函数addition(aINT),实现1到任意数的累加。代码如下:mysql>DELIMITER##mysql>CREATEFUNCTIONaddition(aINT)->RETURNSINT->DETERMINISTIC->BEGIN->DECLAREsumINTDEFAULT0;->DECLAREcountINTDEFAULT1;->my_loop:LOOP->SETsum=sum+count;->SETcount=count+1;->IFcount>aTHEN->LEAVEmy_loop;->ENDIF;->ENDLOOPmy_loop;->RETURNsum;->END##mysql>DELIMITER;9.4.4REPEAT语句 REPEAT语句可以实现一个带条件判断的循环结构。语法形式如下:[repeat_label:]REPEATStatement_listUNTILSearch_conditionENDREPEAT[repeat_label]其中,repeat_label表示REPEAT语句的标注名称(可以省略),每次SQL语句statement_list执行完毕后,会对条件search_condition进行判断,如果结果为TRUE,循环终止,否则继续执行循环中的语句。9.4.4REPEAT语句 【例9-16】用REPEAT语句改写例9-15。代码如下:mysql>DELI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文书工作岗位责任制度
- 职业卫生健康责任制度
- 艺术创建工作责任制度
- 政府消防管理责任制度
- 安全生产责任制亖项制度
- 安全生产行政责任制度
- 幼儿园汛期三防责任制度
- 小学生安全岗位责任制度
- 电厂输煤安全责任制度
- 门前五包责任制管理制度
- 2024年业主门窗合同协议书模板
- 药品法律法规知识竞赛考试题库(含答案)
- 盐城中南大有境、宝龙广场调研报告
- 医院健康教育与健康促进培训课件
- 近三年内未发生重大事故的安全生产承诺范本
- 岳阳职业技术学院单招职业技能测试参考试题库(含答案)
- 量子密码学与后量子密码学
- 部编版四年级下册语文写字表生字加拼音组词
- 威斯特年产10000吨纳米铜盐系列产品、6000吨叔丁基过氧化氢精馏及3000吨糊状过氧化二苯甲酰项目环境影响报告
- 广西-黄邵华-向量的数量积
- 1.2 国内外网络空间安全发展战略
评论
0/150
提交评论