收藏 分销(赏)

MySQL开发与实践 第3章 MYSQL语言基础.pdf

上传人:曲**** 文档编号:225637 上传时间:2023-03-08 格式:PDF 页数:48 大小:2.21MB
下载 相关 举报
MySQL开发与实践 第3章 MYSQL语言基础.pdf_第1页
第1页 / 共48页
MySQL开发与实践 第3章 MYSQL语言基础.pdf_第2页
第2页 / 共48页
MySQL开发与实践 第3章 MYSQL语言基础.pdf_第3页
第3页 / 共48页
MySQL开发与实践 第3章 MYSQL语言基础.pdf_第4页
第4页 / 共48页
MySQL开发与实践 第3章 MYSQL语言基础.pdf_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、第3章 MYSQL语言基础本章要求:MySQL支持的数据类型 MySQL支持的算术运算符 MySQL支持的比较运算符 MySQL支持的逻辑运算符 MySQL支持的位运算符 MySQL中各种运算符的优先级 MySQL中支持的流程控制语句第3章MYSQL语言基础主要内容L数据类型2.运算符3.流程控制语句4.综合实例一一逻辑运算的使用一,二一二3.1数据类型3.1.1数字类型3.1.2字符串类型3.1.3日期和时间数据类型3.1.1数字类型.MySQL支持所有的ANSI/ISO SQL 92数字类型。这些类型包括准确数字的数据类型(NUMERIC、.DEC IMAL、INTEGER和SMALLIN

2、T),还包括近似数字的数据类型(F LOAT、REAL和DOUB LE PREC ISION).o其中的关键词INT是INTEGER的同义词,关键词DEC是DEC IMAL的同义词。.数字类型总体可以分成整型和浮点型两类,详细内容如表3-1和表3-2所示。表3-1 整数数据类型-二,.数据类型取值范围说 明单 位T INYINT符号值:-127127无符号值:0255最小的整数1字节BIT符号值:-127127无符号值:0255最小的整数1字节BOOL符号值:-127127无符号值:0255最小的整数1字节SMA LLINT符号值:-3276832767 无符号值:065535小型整数2字节M

3、EDIUMINT符号值:-83886088388607 无符号值:016777215中型整数3字节INT符号值:-21476836482147683647 无符号值:04294967295标准整数4字节BIGINT符号值:92233720368547758089223372036854775807 无符号值:018446744073709551615大整数8字节表3-2 浮点数据类型数据类型取值范围说 明单 位FLOA T+(-)3.402823466E+38单精度浮点数8或4字-pDOUBLE+(-)1.7976931348623157 E+308+(-)2.2250738585072014

4、 E-308双精度浮点数8字节DEC IMA L可变一般整数自定义 长度说明:在创建表时,使用哪种数字类型,应遵循以下原则。(1)选择最小的可用类型,如果值永远不超过127,则使用TINYINT比INT强。(2)对于完全都是数字的,可以选择整数类型。(3)浮点类型用于可能具有小数部分的数。例如货物单价、网上购物交付金额等3.1.2字符串类型字符串类型可以分为3类:普通的文本字符串类型(C HAR和VARC HAR)、可变类型(TEXT和B LOB)和特殊类型(SET和ENUM)。它们之间都有一定的区别,取值的范围不同,应用的地方也不同。(1)普通的文本字符串类型,即C HAR和VARC HAR

5、类型,C HAR列的长度被固定为创建表所声明的长度,取值在广255之间;VARC HAR列的值是变长的字符串,取值和C HAR一样。下面介绍普通的文本字符 串类型如表3-3所示。表3-3 常规字符串类型类 型取值 范围说 明national char(M)binary|A SC II unicode0255 个字符固定长度为M的字符串,其中M的取值范围为 0255。National关键字指定了应该使用的默认字符 集。Binary关键字指定了数据是否区分大小写(默 认是区分大小写的)。A SC H关键字指定了在改列中 使用latinl字符集。Unicode关键字指定了使用UC S 字符集char

6、0255 个字符C har(M)类似national varchar(M)binary0255 个字符长度可变,其他和char(M)类似(2)TEXT和B LOB类型。它们的大小可以改变,TEXT类型适合存储长文本,而B LOB类型适合存储二进.制数据,支持任何数据,例如文本、声音和图像等。下面介绍TEXT和B LOB类型,如表3-4所示。表3-4 TEXT和B LOB类型二一一 _.类型最大长度(字节数)说 明.T 1NYBLOB2-81(225)小BLOB字段T INYT EXT2-81(225)小T EXT字段,BLOB2161(65 535)常规BLOB字段T EXT2161(65 5

7、35)常规T EXT字段 MEDIUMBLOB2-241(16 777 215)中型BLOB字段MEDIUMT EXT2-241(16 777 215)中型T EXT字段 LONGBLOB2-321(4 294 967 295)长BLOB字段LONGT EXT2-321(4 294 967 295)长T EXT字段4HFL 二二(3)特殊类型SET和ENUM特殊类型SET和ENUM的介绍如表3-5所示。表3-5ENUM和SET类型类 型最值 大说 明Enum(“valuel”,65该类型的列只可以容纳所列值之一或“value2”,)535为 NULLSet“value2”(“valuel”,6

8、4该类型的列可以容纳一组值或为NULL说明:在创建表时,使用字符串类型时应遵循以下原则:(1)从速度方面考虑,要选择固定的列,可以使用C HAR类型。(2)要节省空间,使用动态的列,可以使用VARC HAR类型。(3)要将列中的内容限制在一种选择,可以使用ENUM类型。(4)允许在一个列中有多于一个的条目,可以使用SET类型。(5)如果要搜索的内容不区分大小写,可以使用TEXT类型。(6)如果要搜索的内容区分大小写,可以使用B LOB类型。4HFL 二一3.1.3日期和时间数据类型日期和时间类型包括:DATETIME、DATE、TIMESTAMP TIME和YEAR。其中的每种类型都有其取值

9、的范围,如赋予它一个不合法的值,将会被“0”代替。下面介绍日期和时间数据类型,如表3-6所示表3-6 日期和时间数据类型类 型取值范围说 明DA T E1000-01-01 9999-12-31日期,格式YYYY-MM-DDT IME-838:58:59 835:59:59时间,格式HH:MM:SSDA T ET IME1000-01-01 00:00:009999-12-31 23:59:59日期和时间,格式YYYY-MM-DDHH:MM:SST IMEST A MP1970-01-01 00:00:002037年的某个时间时间标签,在处理报告时使用显 示格式取决于M的值YEA R1901-

10、2155年份可指定两位数字和四位数字 的格式lmrm 二二二3.2运算符3.2.1算术运算符3.2.2比较运算符3.2.3逻辑运算符3.2.4位运算符3.2.5运算符的优先级3.2.1算术运算符算术运算符是MySQL中最常用的一类运算符。MySQL支持的算术运算符包括:力口、减、乘、除、求余。下面列出算术运算符的符号、作用、表达式的形式,如表3-7所示。表3-7 算术运算符二一 符号作用+加法运算-减法运算*乘法运算/除法运算%求余运算DIV除法运算,返回商。同“/”MOD求余运算,返回余数。同“”说明:加(+)、减(-)和乘(*)可以同时运算多个操作数。除号(/)和求余运算符(%)也可以 同

11、时计算多个操作数,但是这两个符号计算多个操作数不太好。DIV()和MOD()这两个运算符只有两 个参数。进行除法和求余的运算时,如果x2参数是0时,计算结果将是空值(NULL)o【例3-1】使用算术运算符对tb_bookl表中row字段值进行加、减、乘、除运算,计算结果如图3-1 所示。iys ql s elect ro wrovj+ro wrovj-fo wro v/*ro v iro w/ro w f ro m tb_Jo o kl;-!ro v j i ro w+ro v j(ro v i-ro w i ro v*io v i i ro w/ro w b ro v/s in s et,1

12、6 v/arnings 1224!0!144 S195190!0:9025!1NULL0:0;0:NULL12:0:1:1816;0:64!1NULL0:0:0!NULL图3-1使用算术运算符计算数据 结果输出了row字段的原值,以及执行算术运算符后得到的值。3.2.2比较运算符三二 M比较运算符是查询数据时最常用的一类运算符。SELEC T语句中的条件语句经常要使用比较运算 符。通过这些比较运算符,可以判断表中的哪些记录是符合条件的。比较运算符的符号、名称和应 用示例如表3-8所示。表3-8 比较运算符运 算符名称示 例运算 符名称示例=等于Id=5Is not nulln/aId is n

13、ot null大于Id5Betweenn/aId betweenl and 15小于Id大于等 于Id=5Not inn/aName not in(shi,li)=小于等于Id=5Like模式匹 配Name like(shi%)1二或不等于Id!=5Not like模式匹 配Name not like(shi%)Is nulln/aId is nullRegexp常规表 达式Name正则表达式下面对几种较常用的比较运算符进行详解。1.运算符“二”“二”用来判断数字、字符串和表达式等是否相等。如果相等,返回1,否则返回0。说明:在运用“二”运算符判断两个字符是否相同时,数据库系统都是根据字符的A

14、SC H码进行判断的 o如果ASC H码相等,则表示这两个字符相同。如果ASC H码不相等,则表示两个字符不同切。忌空 值(NULL)不能使用“二”来判断。【例3-2】运用“二”运算符查询出id等于27的记录,查询结果如图3-2所示。mys qls elect id,bo o ks,id=27f ro m tb_bo o k;!id!bo o ks!id=27!26 iJAU费戳:0::27:PHP威鹭觑!1:28:3项目整合i 0 iJ 29:aaaai 0!30!aa!0!25:JAun范例完全自学手册a0:6 ro w sin s et 图3-2 使用“二”查询记录从结果中可以看出,id

15、等于27的记录返回值为1,id不尊下27的记录,返回值则为0。2.运算符和,二”和“!二”用来判断数字、字符串、表达式等是否不相等。如果不相等,则返回1;否则,返回 Oo这两个符号也不能用来判断空值(NULL)o【例3-3】运用和,二”运算符判断tb_book表中row字段值是否等于1、41、24。运算 结果如图3-3所示。mysql s elect idbo o ks,ro w 1,ro v/?=41,ro w?=24 f ro m tb_bo o k w here id=27;4-4-4-4-4-4i id i bo o ks i 1*0w Ol i ro w?=41!ro w?=24:-

16、.-!27 i PHP典型模块:1!1!1!-1 ro w in s et 图3-3使用和,二”运算符判断数据 结果显示返回值都为1,这表示记录中的row字段值不等于1、41、24oTm二一3.运算符“”“”用来判断左边的操作数是否大于右边的操作数。如果大于,返回1;否则,返回0。同样空值(NULL)不能使用来判断。【例3-4 使用运算符来判断tb_book表中row字段值是否大于90,是则返回1,否则返回0,空值返回NULL。运算结果如图3-4所示。iysql s elect id,.bo o ks,ro w 90 f ro m tb_bo o k;i id i bo o ksi ro w

17、90:26!JAU哂型摸块:27:PHP典型模块;28:C*项目整合1 29 t aaaai 30 i aa!25!JAUA范例完全自学手册0;0!ro w s in s et iysql01 NULLNULL!图3-4使用“”运算符查询数据 说明:”运算符、“二”运算符都与“”运算符如出一辙,其使用方法基本相同,这里不再赘述。id i bo o ks!ro w IS NULL!1ro w s in s et mys ql0:0:0 01!26:JAUAW!27!PHP典4!28!C*项目i 29!aaaa!30 aa!25;JAUA范例完全自学手册4.运算符“IS NULL”“IS NULL

18、”用来判断操作数是否为空值(NULL)。操作数为NULL时,结果返回1;否则,返回0。IS NOT NULL刚好与IS NULL相反。【例3-5】运用IS NULL运算符来判断tb_book表中row字段值是否为空值,查询结果如图3-5所示。翳s elect id.bo o ks,i*o町 IS NULL f ro m tb_bo o k;图3-5使用IS NULL运算符来判断字段值是否为空结果显示,row字段值为空的返回值为1,不为空的返回值为0。说明;二”、“”、“!二”、“”、“二”、“、“s elect ro w,ro w BETWEEN 10 AND 50,ro w BETWEEN

19、25 AND 28 f ro m tb_Jto o k;ro w I1 ro w BETWEEN 10 AND 50:ro w BETWEEN 25 AND 28121:0950:0NULLNULL!NULL10;080:0NULLNULL:NULLro w s in s et iys ql)图3-6使用“B ETWEEN AND”运算符判断row字段值的范围 从查询结果中可以看出,在范围内则返回1,否则返回0,空值返回NULL。6.运算符“IN”“IN”用于判断数据是否存在于某个集合中。其表达式如下:xl IN(值1,值2,值n)如果xl等于值1到值n中的任何一个值,结果将返回1。如果不是,

20、结果将返回0。【例3-7】下面运用“IN”运算符判断tb_book表中row字段的值是否在指定的范围内,查询结果如图3-7所不。图3-7使用“IN”运算符判断row字段值的范围mys ql s elect ro w,ro w IN10-95,30 FROM TBJBOOK;-:ro w 1!ro w IN10,95,30):1 1-.!120!951!NULLNULL;10!80!NULLNULLH-+6 ro w s iLn s et.查询结果如图所示,在范围内则返回1,否则返回0,空值返回NULL。lmrm-.7.运算符“LIKE”“LIKE”用来匹配字符串。其表达式如下:xl LIKE

21、si如果xl与字符串sl匹配,结果将返回1。否则返回0。【例3-8】使用“LIKE”运算符,判断tb_book表中的user字段值是否与指定的字符串匹配,查询结 果如图3-8所示。nysql s elect us er,us er likemi*like*Xlx*FROM TBJBOOK;.-!us er i us er like*nr/i us er like,!+-nrnr lx lxnr1 11 00 10 00 11 0-6 ro w s in s et.图3-8使用“LIKE”运算符判断user字段是否匹配某字符查询结果如图显示,user字段值为mr字符的记录,结果则返回1,否则返回

22、0;user字段值中包含1字符的记录,匹配则返回1,否则返回0。8.运算符“REGEXP”“REGEXP”同样用于匹配字符串,但其使用的是正则表达式进行匹配。其表达式格式如下:xl REGEXP 匹配方式如果xl满足匹配方式,结果将返回1;否则将返回0。【例3-9】使用“REGEXP”运算符来匹配user字段的值是否以指定字符开头、结尾,同时是否包 含指定的字符串,执行结果如图3-9所示。inys ql s elect us er,us er REGEXPregexp/g$*user regexp*FROM TB_BOOK;-4!us er 卜-H1 us er REGEXP1卜-1 us e

23、r regexp*!us er i*egexp人!mi*!nr i mr!lx!lxi nr-41 11 001卜-w0:10 i 10:10:00:00:1卜-.-46 ro w s in s et Rysql图3-9使用REGEXP运算符匹配字符串本例使用“REGEXP”运算符判断tb_book表中user字段的值,是否以m字符开头;是否以g字符 结尾;在user字段值中是否包含m字符,如果满足条件则返回1,否则返回0。说明:使用REGEXP运算符匹配字符串,其使用方法非常简单。REGEXP运算符经常与、$”和”一起使用。用来匹配字符串的开始部分;“$用来匹配字符串的结尾部分;”用来 代表

24、字符串中的一个字符。/一,3.2.3逻辑运算符逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回1。如果表达式是假,结果返 回0。逻辑运算符又称为布尔运算符。MySQL中支持4种逻辑运算符,分别是与、或、非和异或。下 面是4种逻辑运算符的符号及作用,如表3-9所示。表3-9 逻辑运算符符号作用&或 A ND与1或OR或!或()T非XOR异或4HFL 二二1.与运算“&”或者“AND”是与运算的两种表达方式。如果所有数据不为0且不为空值(NULL)时,结果返 回1;如果存在任何一个数据为0时,结果返回0;如果存在一个数据为NULL且没有数据为0时,结果 返回NULL。与运算符支持多个数据同

25、时进行运算。【例3-10】运用“&”运算符判断row字段的值是否存在0或者NULL(row&l”(row字段值与1)和row&0(row字段值与0),如果存在则返回1,否则返回0,空值返回NULL。执行结果如图3T0所示。mys ql s elect ro w ro v/&!,ro w&60 f ro m tb_bo o k;|mysql!1%03!ro w&l 11 FOVI&0:12!10!95!10!NULL!NULL0:1!10:8!10!NULL!NULL06 fovjsin s et 图3-10使用“&”运算符判断数据OR 1”和“row图3-11使用0R运算符匹配数据结果显示,“

26、row OR 1”中包含NULL和1这个非0的数字,所以返回结果为1;row OR 0”中包 含非。的数字、NULL和0的数字,所以返回NULL和1。2.或运算或者OR”表示或运算。所有数据中存在任何一个数据不为非0的数字时,结果返回1;如果 数据中不包含非0的数字,但包含NULL时,结果返回NULL;如果操作数中只有0时,结果返回0。或运 算符也可以同时操作多个数据。【例3-11】运用OR运算符判断tb_book表中row是否包含NULL或者非0数字(row OR 0”)o执行结果如图3T1所示。mysql$s elect i*o ro w ORj OR 0 f ro m tb_bo o k

27、;-i ro w 11 ro w OR 1 1 ro w OR 0 1-:1211:9511!NULL1NULL!111!811:NULL1NULL-6 ro w s iLn s et mysal.nys ql3.非运算“!”或者NOT表示非运算。通过非运算,将返回与操作数据相反的结果。如果操作数据是非。的数 字,结果返回0;如果操作数据是0,结果返回1;如果操作数据是NULL,结果返回NULL。【例匕12】运用“!”运算符判断tb_book表中row字段的值是否为0或者NULL。执行结果如图3-12所示。_图3-12使用“!”运算符判断数据结果显示,row字段中值为NULL的记录,返回值为N

28、ULL,不为0的记录,返回值为0。nysql s elect ro w,?ro w f ro m tb_bo o k;-i ro w tro w i-6 ro w s in s et!12!95!NULL:1:8!NULL.-0:0!NULL:0:0:NULL!4.异或运算XOR表示异或运算。只要其中任何一个操作数据为NULL时,结果返回NULL;如果【例3-13 使用XOR运算符判断tb_book表中字段row的值是否为NULL(row XOR 1”和“row XOR 0”)o执行结果如图3-13所示。s electro w,ro w XOR1,1*03 XOR 0 f ro m tb_bo

29、 o k;:ro wi ro wXOR 1 i ro wXOR 0!-!12 0:1:!95 0:1!NULLNULL!NULL!1 0:1:!80:1:!NULLNULL!NULL!-6 ro w sin s etnysql_图3-13使用XOR运算符判断数据结果显示,“row XOR 1中row字段中的值为非0数字和NULL值,所以返回值为。和NULL;row XOR 0”中包含0,所以返回值为1,而row字段值为NULL的记录,返回值则为NULL。3.2.4位运算符位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算 o然后再将计算结果从二进制数变回十进制数

30、。MySQL中支持6种位运算符。分别是:按位与、按位 或、按位取反、按位异或、按位左移和按位右移。6种位运算符的符号及作用如表3-10所示。表3-10 位运算符符 号作用&按位与。进行该运算时,数据库系统会先将十进制的数转换为二进制的 数。然后对应操作数的每个二进制位上进行与运算。1和1相与得1,与0相 与得0。运算完成后再将二进制数变回十进制数按位或。将操作数化为二进制数后,每位都进行或运算。1和任何数进 行或运算的结果都是1,0与0或运算结果为0Z按位取反。将操作数化为二进制数后,每位都进行取反运算。1取反后 变成0,0取反后变成1一按位异或。将操作数化为二进制数后,每位都进行异或运算。相

31、同的数 异或之后结果是0,不同的数异或之后结果为1按位左移。“mn”表示m的二进制数向左移n位,右边补上n个0。例如,二进制数001左移1位后将变成0010按位右移。“mn”表示m的二进制数向右移n位,左边补上n个0。例如,二进制数011右移1位后变成001,最后一个1直接被移出Jmrm 二二一3.2.5运算符的优先级由于在实际应用中可能需要同时使用多个运算符。这就必须考虑运算符的运算顺序。正所谓:闻 道有先后,术业有专攻。本小节将具体阐述MySQL运算符使用的优先级,如表3-11所示。按照从高到低,从左到右的级别 进行运算操作。如果优先级相同,则表达式左边的运算符先运算。表3-11 MySQ

32、L运算符的优先级优先级运算符1!23-4*,/,DIV,%,MOD56,7&819=,=,!=,IN,IS,NULL,LIKE,REGEXP10BET W EEN A ND,C A SE,W HEN,T HEN,ELSE11NOT12&,A ND13,OR,XOR114HFL 二一3.3流程控制语句3.3.1 IF语句3.3.2 C A SE语句3.3.3 W HILE循环语句3.3.4 LOOP循环语句3.3.5 REPEA T循环语句lLm-一3.3.1 IF语句IF语句用来进行条件判断,根据不同的条件执行不同的操作。该语句在执行时首先判断IF后的 条件是否为真,则执行THEN后的语句,如

33、果为假则继续判断IF语句直到为真为止,当以上都不满足 时则执行ELSE语句后的内容。IF语句表示形式如下:IF condition THENELSE condition THENELSE ENDIF.【例3-5 下面通过iftherrelse结构首先判断传入参数的值是否为1,如果是则输出1,如果不是则再判断该传入参数的值是否为2,如果是则输出2,当以上条件都不满足时输出3。其代码如下:delimiter/create procedure example_if(in x int)beginif x=1 thenselect 1;elseif x=2 thenselect 2;elseselect

34、 3;以上代码的运行结果如图3-14所示。nysql nysqldelimiter/create pro cedure example_if begin if x=l then s elect 1;els eif x=2 thens elect 2;els e s elect 3;end if;endQuery OK,0 ro w s af f ected 图3-14应用IF语句的存储过程图3T5调用example if()存储过程iysql call exanple_if/ZQuery OK,0 ro v/s af f ected!2;-!2!ro v/in s et 通过MySQL调用该存

35、储过程。其运行结果如图3-15所示。3.3.2 C A SE语句case语句为多分支语句结构,该语句首先从when后的value中查找与case后的value相等的值,如果查找到则执行该分支的内容,否则执行else后的内容。case语句表示形式如下:CASE valueWHEN value THEN.WHEN valueTHEN.ELSE.END CASE其中,value参数表示条件判断的变量;WHEN.THEN中的value参数表示变量的取值。C ASE语句还有另一种语法表示结构:CASEWHEN value THEN.WHEN valueTHEN.ELSE.END CASE说明:一个C A

36、SE语句经常可以充当一个IF-THEN-ELSE语句。【例3-6 下面通过case语句首先判断传入参数的值是否为1,如果条件成立则输出1,如果条件不成立则再判断该传入参数的值是否为2,如果成立则输出2,当以上条件都不满足时输出3。代码 如下:delimiter/create procedure example_case(in x int)begin case x when 1 then select 1;when 2 then select 2;else select 3;end case;end/.运行该示例的结果如图3T6所示。二二mysql delimiter/mysql create

37、pro cedure example_case-begin-case x-w hen 1 then s elect 1;-w hen 2 then s elect 2;-els e s elect 3;-end cas e;-end /Query OK,0 ro w s af f ected 图3-16应用C ASE语句的存储过程调用该存储过程,其运行结果如图3-17所示。mysql call exanple_cas e/+-+!3:!3!-1 ro w in s et Query OK,0 ro w s af f ected 图3T7调用examplecase()存储过程3.3.3 W HI

38、LE循环语句while循环语句执行时首先判断condition条件是否为真,如果是则执行循环体,否则退出循环 O该语句表示形式:while condition doend w hile;【例3-7】下面应用while语句求前100项的和。首先定义变量i和s,分别用来控制循环的次数和 保存前100项和,当变量i的值小于或等于100时,使s的值加i,并同时使i的值增1。直到i大于100 时退出循环并输出结果。其代码如下所示:delimiter/create procedure example_while(out sum int)begindeclare i int default 1;declar

39、e s int default 0;while i delimiter/nysql create pro cedure exanple_v ihile-begin-declare i int def ault 1;-declare s int def ault 0;-w hile i set s=s+i;-set i=i+l;-end w hile;-s et sum=s;-end /Query OK,0 ro w s af f ected 图3-18应用WHILE语句的存储过程 调用该存储过程,调用语句如下所示:call example_while(s)mysqlselect sJm r r

40、 n 二二.调用该存储过程的结果如图3-19所示。n)ysql s elect(?s/Z-+(?s i+-+i 5050:+-+1 ro w in s et nysql.图3T9 调用3*3_叩13_必111.()存储过程3.3.4 LOOP循环语句该循环没有内置的循环条件,但可以通过:吟ue语句退出循环。loop语句表示形式:loop end loopLOOP允许某特定语句或语句群的重复执行,实现一个简单的循环构造,其中中间省略的部分是 需要重复执行的语句。在循环内的语句一直重复直至循环被退出,退出循环应用LEAVE语句。LEAVE语句经常和B EGINEND或循环一起使用,其结构如下:LE

41、AVE labellabel是语句中标注的名字,这个名字是自定义的。加上LEAVE关键字就可以用来退出被标注的 循环语句。【例3-8】下面应用loop语句求前100项的和。首先定义变量i和s,分别用来控制循环的次数和 保存前100项和,进入该循环体后首先使s的值加i,之后使i加1并进入下次循环,直到i大于100,通过leave语句退出循环并输出结果。其代码如下:delimiter/create procedure example_loop(out sum int)begindeclare i int default 1;declare s int default 0;loop_label:lo

42、opset s=s+i;set i=i+1;ifi100 thenleave loop_label;end if;end loop;set sum=s;end/lLm-一上述代码的运行结果如图3-20所示。nysql delimiter/nysql create pro cedure example_lo o p-begin-declare i int def ault 1;-declare s int def ault 0;-lo o p_label:lo o p-s et s=s+i;-s et i=i+l;-if i100 then-leaue lo o p_label;-end if;

43、-end lo o p;-s et sum=s;-end /Query OK,0 bows af f ected(J L m 二二二运行结果如图3-21所示。mysql call exanple_lo o p/Query OK,0 ro w s af f ected mysql s elect Ps/Z+-+!(?s!+-+!5050:-+1 ro w in s et 图3-21调用exampleoop()存储过程3.3.5 REPEA T循环语句该语句先执行二次循环体,之后判断condition条件是否为真,则退出循环,否则继续执行循环。repeat语句表示形式:REPEATUNTIL co

44、nditionEND REPEAT【例3-9】下面应用repeat语句求前100项和的例子。首先定义变量i和s,分别用来控制循环的次 数和保存前100项和,进入循环体后首先使s的值加i,之后使i的值加1,直到i大于100时退出循环并 输出结果。delimiter/create procedure example_repeat(out sum int)begindeclare i int default 1;declare s int default 0;repeatset s=s+i;set i=i+1;until i100end repeat;set sum=s;end/以上代码的运行结果如

45、图3-22所示。nysql delimiter/mysql create pro cedure exanple_repeat-begin-declare i int def ault 1;-declare s int def ault 0;-repeat-s et s=s+i;-s et i=i+l;-until i100-end repeat;-s et sun=s;-end /Query OK,0 ro w s af f ected 图3-22应用REPEAT创建存储过程 调用该存储过程,相关代码如下所示:call example_repeat(s)select s调用该存储过程的运行结果

46、如图3-23所示。nysql call exanple_repeat/Z Query OK,0 ro w s af f ected nysql s elect(?s/Z!5050 i 1 ro w in s et 图3-23调用example_repeat()存储过程循环语句中还有一个ITERATE语句,它可以出现在LOOP、REPEAT和WHILE语句内,其意为“再次 循环”。该语句格式如下:ITERATE label该语句的格式与LEAVE大同小异,区别在于:LEAVE语句是离开一个循环,而ITERATE语句是重新 开始一个循环。注意:与一般程序设计流程控制不同的是:存储过程并不支持F OR循环。知销点梃落(1)MySQL支持所有的ANSI/ISO SQL 92数字类型。.(2)字符串类型可以分为3类:普通的文本字符串类型(C HAR和VARC HAR)、可变类型(TEXT和B LOB.)和特殊类型(SET和ENUM)。.(3)日期和时间类型包括:DATETIME、DATE、TIMESTAMP、TIME和YEAR。(4)MySQL支持的算术运算符包括:力口、减、乘、除、求余。.(5)逻辑运算符用来判断表达式的真假。灯敢1.2.3.4.MySQL支持的数据类型主要分成哪3类。“16”属于什么类型。“ahc”属干什么类型MySQL提供了哪几种流呈控制语句。

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服