收藏 分销(赏)

MySQL数据库基础及实例教程第6章.ppt

上传人:w****g 文档编号:14679896 上传时间:2026-10-28 格式:PPT 页数:142 大小:2.09MB 下载积分:10 金币
下载 相关
MySQL数据库基础及实例教程第6章.ppt_第1页
第1页 / 共142页
MySQL数据库基础及实例教程第6章.ppt_第2页
第2页 / 共142页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,肖红,MySQL,数据库基础与实例教程,之,MySQL,编程基础,为了便于,MySQL,代码维护,以及提高,MySQL,代码的重用性,,MySQL,开发人员经常将频繁使用的业务逻辑封装成存储程序,,MySQL,的存储程序分为四类:函数、触发器、存储过程以及事件。,内容一览,1,2,3,本章首先介绍了,MySQL,编程的基础知识,然后讲解了自定义函数的实现方法,接着介绍了,MySQL,常用的系统函数,最后结合“选课系统”,编写自定义函数模拟实现了中文全文检索。,4,自定义函数,MySQL,编程基础知识,系统函数,中文全文检索的模拟实现,内容一览,1,2,3,MySQL,程序设计结构是在,SQL,标准的基础上增加了一些程序设计语言的元素,其中包括常量、变量、运算符、表达式、流程控制以及函数等内容。,用户自定义变量,常量,运算符与表达式,4,5,begin-end,语句块,重置命令结束标记,6.1 MySQL,编程基础知识,按照,MySQL,的数据类型进行划分,可以将常量划分为字符串常量、数值常量、十六进制常量、日期时间常量、二进制常量以及,NULL,。,6.1.1,常量,1,字符串常量,字符串常量是指用单引号或双引号括起来的字符序列。,select Im a teacher as col1,youre a student as col2;,由于大多编程语言(例如,Java,、,C,等)使用双引号表示字符串,为了便于区分,在,MySQL,数据库中推荐使用单引号表示字符串。,6.1.1,常量,2,数值常量,数值常量可以分为整数常量(例如,2013,)和小数常量(例如,5.26,、,101.5E5,),这里不再赘述。,6.1.1,常量,3,日期时间常量,日期时间常量是一个符合特殊格式的字符串。例如,14:30:24,是一个时间常量,,2008-05-12 14:28:24,是一个日期时间常量。日期时间常量的值必须符合日期、时间标准,例如,1996-02-31,是错误的日期常量。,6.1.1,常量,3,日期时间常量,日期时间常量是一个符合特殊格式的字符串。例如,14:30:24,是一个时间常量,,2008-05-12 14:28:24,是一个日期时间常量。日期时间常量的值必须符合日期、时间标准,例如,1996-02-31,是错误的日期常量。,6.1.1,常量,4.,布尔值,布尔值只包含两个可能的值:,true,和,false,。,说明:使用,select,语句显示布尔值,true,或者,false,时,会将其转换为字符串“,0”,或者字符串“,1”,。,6.1.1,常量,5,二进制常量,二进制常量由数字“,0”,和“,1”,组成。二进制常量的表示方法:前缀为“,b”,,后面紧跟一个“二进制”字符串。例如下面的,select,语句输出三个字符。其中,b111101,表示“等号”,,b1,表示“笑脸”,,b11,表示“心”。,select b111101,b1,b11;,6.1.1,常量,6,十六进制常量,十六进制常量由数字“,0”,到“,9”,及字母“,a”,到“,f”,或“,A”,到“,F”,组成(字母不区分大小写)。十六进制常量有两种表示方法。,6.1.1,常量,6,十六进制常量,第一种表示方法:前缀为大写字母“,X”,或小写字母“,x”,,后面紧跟一个“十六进制”字符串。,例如,select X41,x4D7953514C;,其中,X41,表示大写字母,A,。,x4D7953514C,表示字符串,MySQL,。,6.1.1,常量,6,十六进制常量,第二种表示方法:前缀为“,0 x”,,后面紧跟一个“十六进制数”(不用引号)。,例如,select 0 x41,0 x4D7953514C;,其中,0 x41,表示大写字母,A,。,0 x4D7953514C,表示字符串,MySQL,。,6.1.1,常量,小结:可以看到,使用,select,语句显示十六进制数时,会将十六进制数自动转换为“字符串”再进行显示。,如果需要将一个字符串或数字转换为十六进制格式的字符串,可以用,hex(),函数实现。,例如,select hex(MySQL);,hex(),函数将“,MySQL”,字符串转换为十六进制数,4D7953514C,。,6.1.1,常量,小结:十六进制数与字符之间存在一一对应关系,利用这个特点,可以模拟实现中文全文检索。,7.NULL,值,NULL,值可适用于各种字段类型,它通常用来表示“值不确定”、“没有值”等意义,,NULL,值参与算术运算、比较运算以及逻辑运算时,结果依然为,NULL,。,6.1.1,常量,变量分为系统变量(以,开头)以及用户自定义变量。,用户自定义变量分为用户会话变量(以,开头)以及局部变量(不以,开头)。,6.1.2,用户自定义变量,1,用户会话变量,MySQL,客户机,1,定义了会话变量,会话期间,该会话变量一直有效;,MySQL,客户机,2,不能访问,MySQL,客户机,1,定义的会话变量;,MySQL,客户机,1,关闭或者,MySQL,客户机,1,与服务器断开连接后,,MySQL,客户机,1,定义的所有会话变量将自动释放,以便节省,MySQL,服务器的内存空间。,6.1.2,用户自定义变量,用户会话变量,6.1.2,用户自定义变量,1,用户会话变量,系统会话变量与用户会话变量的共同之处在于:变量名大小写不敏感。系统会话变量与用户会话变量的区别在于:,1,用户会话变量一般以一个“,”,开头;系统会话变量以两个“,”,开头。,2,系统会话变量无需定义可以直接使用。,6.1.2,用户自定义变量,(,1,)用户会话变量的定义与赋值,一般情况下,用户会话变量的定义与赋值会同时进行。用户会话变量的定义与赋值有两种方法:使用,set,命令或者使用,select,语句。,方法一:使用,set,命令定义用户会话变量,并为其赋值,语法格式如下:,set user_variable1,expression1,user_variable2=expression2,6.1.2,用户自定义变量,说明:用户会话变量的数据类型是根据赋值运算符“,=”,右边表达式的计算结果自动分配的。也就是说,等号右边的值(包括字符集和字符序)决定了用户会话变量的数据类型(包括字符集和字符序)。,6.1.2,用户自定义变量,方法二:使用,select,语句定义用户会话变量,并为其赋值,语法格式有两种。,第一种语法格式:,select user_variable1:,expression1,user_variable2:=expression2,第二种语法格式:,select expression1 into user_variable1,expression2 into user_variable2,6.1.2,用户自定义变量,方法二:使用,select,语句定义用户会话变量,说明:,第一种语法格式中需要使用“,:,”赋值语句,原因在于“,=”,是为“比较”保留的。,第一种与第二种语法格式的区别在于:第一种语法格式中的,select,语句会产生结果集,第二种语法格式中的,select,语句,仅仅用于会话变量的定义及赋值(但不会产生结果集)。,6.1.2,用户自定义变量,2,用户会话变量与,SQL,语句,任务布置,1,:上机操作,完成本书场景描述,1,:用户会话变量与,SQL,语句的任务要求。,注意:哪些方法的,select,语句产生结果集,?,哪些方法的,select,语句不产生结果集,?,6.1.2,用户自定义变量,3,局部变量,declare,命令专门用于定义局部变量及对应的数据类型。局部变量必须定义在存储程序中(例如函数、触发器、存储过程以及事件中),并且局部变量的作用范围仅仅局限于存储程序中,脱离存储程序,局部变量没有丝毫意义。局部变量主要用于下面三种场合。,6.1.2,用户自定义变量,3,局部变量,场合一:局部变量定义在存储程序的,begin-end,语句块(稍后介绍)之间。此时局部变量首先必须使用,declare,命令定义,并且必须指定局部变量的数据类型。只有定义局部变量后,才可以使用,set,命令或者,select,语句为其赋值。,6.1.2,用户自定义变量,3,局部变量,场合二:局部变量作为存储过程或者函数的参数使用,此时虽然不需要使用,declare,命令定义,但需要指定参数的数据类型。,6.1.2,用户自定义变量,3,局部变量,场合三:局部变量也可以用在,SQL,语句中。数据检索时,如果,select,语句的结果集是单个值,可以将,select,语句的返回结果赋予局部变量,局部变量也可以直接嵌入到,select,、,insert,、,update,以及,delete,语句的条件表达式中。,6.1.2,用户自定义变量,4,局部变量与用户会话变量的区别,(,1,)用户会话变量名以“,”,开头,而局部变量名前面没有“,”,符号。,6.1.2,用户自定义变量,(,2,)局部变量使用,declare,命令定义(存储过程参数、函数参数除外),定义时必须指定局部变量的数据类型;局部变量定义后,才可以使用,set,命令或者,select,语句为其赋值。,用户会话变量使用,set,命令或,select,语句定义并进行赋值,定义用户会话变量时无需指定数据类型。诸如“,declare student_no int;”,的语句是错误语句,用户会话变量不能使用,declare,命令定义。,6.1.2,用户自定义变量,4,局部变量与用户会话变量的区别,(,3,)用户会话变量的作用范围与生存周期大于局部变量。局部变量如果作为存储过程或者函数的参数,此时在整个存储过程或函数内中有效;如果定义在存储程序的,begin-end,语句块中,此时仅在当前的,begin-end,语句块中有效。用户会话变量在本次会话期间一直有效,直至关闭服务器连接。,6.1.2,用户自定义变量,4,局部变量与用户会话变量的区别,(,4,)如果局部变量嵌入到,SQL,语句中,由于局部变量名前没有“,”,符号,这就要求局部变量名不能与表字段名同名,否则将出现无法预期的结果。,6.1.2,用户自定义变量,关于局部变量的其他说明:,在,MySQL,数据库中,由于局部变量涉及,begin-end,语句块、函数、存储过程等知识,局部变量的具体使用方法将结合这些知识稍后一块儿进行讲解。,declare,命令尽量写在,begin-end,语句块的开头,尽量写在任何其他语句的前面。,6.1.2,用户自定义变量,根据运算符功能的不同,可将,MySQL,的运算符分为算术运算符、比较运算符、逻辑运算符以及位操作运算符。,1,算术运算符,算术运算符用于两个操作数之间执行算术运算。常用的算术运算符有:,+,(加)、,-,(减)、*(乘)、,/,(除)、,%,(求余)以及,div,(求商)等,6,种运算符。,6.1.3,运算符与表达式,2,比较运算符,比较运算符(又称关系运算符)用于比较操作数之间的大小关系,其运算结果要么为,true,、要么为,false,、要么为,NULL,(不确定)。,6.1.3,运算符与表达式,select ab=ab,ab=ab,ba,NULL=NULL,NULLNULL,NULL is NULL;,结论:字符串进行比较时,会截掉字符串尾部的空格字符,然后进行比较。,6.1.3,运算符与表达式,3,逻辑运算符,逻辑运算符(又称布尔运算符)对布尔值进行操作,其运算结果要么为,true,、要么为,false,、要么为,NULL,(不确定)。,6.1.3,运算符与表达式,4,位运算符,位运算符对二进制数据进行操作(如果不是二进制类型的数,将进行类型自动转换),其运算结果为二进制数。使用,select,语句显示二进制数时,会将其自动转换为十进制数显示。,6.1.3,运算符与表达式,4,位运算符,6.1.3,运算符与表达式,开始标签,:begin,局部,变量的声明,;,错误触发条件的声明,;,游标的声明,;,错误处理程序的声明,;,业务逻辑代码,;,end,结束标签,;,6.1.5,重置命令结束标记,delimiter$,select*from student where student_name like,张,_$,delimiter;,select*from student where student_name like,张,_;,6.1.4 begin-end,语句块,1,2,3,函数可以看作是一个“加工作坊”,这个“加工作坊”接收“调用者”传递过来的“原料”(实际上是函数的参数),然后将这些“原料”“加工处理”成“产品”(实际上是函数的返回值),再把“产品”返回给“调用者”。,函数的创建与调用,创建自定义函数的语法格式,函数的维护,4,5,条件控制语句,循环语句,6.2,定义函数,create function,函数名(参数,1,,参数,2,,,),returns,返回值的数据类型,函数选项,begin,函数体,;,return,语句,;,end;,6.2.1,创建自定义函数的语法格式,函数选项由以下一种或几种选项组合而成。,language sql,|not deterministic,|contains sql|no sql|reads sql data|modifies sql data,|sql security definer|invoker,|comment,注释,6.2.1,创建自定义函数的语法格式,函数选项说明:,language sql,:默认选项,用于说明函数体使用,SQL,语言编写。,6.2.1,创建自定义函数的语法格式,deterministic,(确定性):当函数返回不确定值时,该选项是为了防止“复制”时的不一致性。如果函数总是对同样的输入参数产生同样的结果,则被认为它是“确定的”,否则就是“不确定”的。例如函数返回系统当前的时间,返回值是不确定的。如果既没有给定,deterministic,也没有给定,not deterministic,,默认的就是,not deterministic,。,6.2.1,创建自定义函数的语法格式,contains sql,:表示函数体中不包含读或写数据的语句(例如,set,命令等)。,no sql,:表示函数体中不包含,SQL,语句。,reads sql data,:表示函数体中包含,select,查询语句,但不包含更新语句。,6.2.1,创建自定义函数的语法格式,modifies sql data,:表示函数体包含更新语句。如果上述选项没有明确指定,默认是,contains sql,。,sql security,:用于指定函数的执行许可。,definer,:表示该函数只能由创建者调用。,invoker,:表示该函数可以被其他数据库用户调用。默认值是,definer,。,comment,:为函数添加功能说明等注释信息。,6.2.1,创建自定义函数的语法格式,任务布置,2,:上机操作,完成本书场景描述,2,:简单的自定义函数(空参数)的任务要求。,任务布置,3,:上机操作,完成场景描述,3,:自定义函数可以操作数据库中的数据的任务要求。,任务布置,4,:上机操作,完成场景描述,4,:将查询结果赋予变量的任务要求。,6.2.2,函数的创建与调用,函数的维护包括查看函数的定义、修改函数的定义以及删除函数的定义等内容。,6.2.3,函数的维护,1,查看函数的定义,(,1,)查看当前数据库中所有的自定义函数信息,可以使用,MySQL,命令“,show function status;”,。如果自定义函数较多,使用,MySQL,命令“,show function status like,模式,;”,可以进行模糊查询。,6.2.3,函数的维护,1,查看函数的定义,(,2,)查看指定数据库(例如,choose,数据库)中的所有自定义函数名,可以使用下面的,SQL,语句,如图,6-28,所示。,select name from mysql.proc where db=choose and type=function;,6.2.3,函数的维护,1,查看函数的定义,(,3,)使用,MySQL,命令,“,show create function,函数名,;,”,可以查看指定函数名的详细信息。例如查看,get_name_fn(),函数的详细信息,可以使用,“,show create function get_name_fnG,”,6.2.3,函数的维护,1,查看函数的定义,(,4,)函数的信息都保存在,information_schema,数据库中的,routines,表中,可以使用,select,语句检索,routines,表,查询函数的相关信息。,select*from information_schema.routines where routine_name=get_name_fnG,6.2.3,函数的维护,2,函数定义的修改,由于函数保存的仅仅是函数体,而函数体实际上是一些,MySQL,表达式,因此函数自身不保存任何用户数据。当函数的函数体需要更改时,可以使用,drop function,语句暂时将函数的定义删除,然后使用,create function,语句重新创建相同名字的函数即可。这种方法对于存储过程、视图、触发器的修改同样适用。,6.2.3,函数的维护,3,函数定义的删除,使用,MySQL,命令,“,drop function,函数名,”,删除自定义函数。例如删除,get_name_fn(),函数可以使用,“,drop function get_name_fn;,”,。,6.2.3,函数的维护,条件控制语句分为两种,一种是,if,语句,另一种是,case,语句。,6.2.4,条件控制语句,1,if,语句,if,语句根据条件表达式的值确定执行不同的语句块,,if,语句的用法格式如下。,if,条件表达式,1 then,语句块,1;,elseif,条件表达式,2 then,语句块,2.,else,语句块,n,end if;,说明:,end if,后必须以,“,;,”,结束。,6.2.4,条件控制语句,6.2.4,条件控制语句,2,case,语句,case,语句用于实现比,if,语句分支更为复杂的条件判断,,case,语句的语法格式如下。,说明:,MySQL,中的,case,语句与,C,语言、,Java,语言等高级程序设计语言不同,在高级程序设计语言中,每个,case,的分支需使用,“,break,”,跳出,而,MySQL,无需使用,“,break,”,语句。,6.2.4,条件控制语句,2,case,语句,case,表达式,when value1 then,语句块,1;,when value2 then,语句块,2;,else,语句块,n;,end case;,6.2.4,条件控制语句,6.2.4,条件控制语句,MySQL,提供了三种循环语句,分别是,while,、,repeat,以及,loop,。除此以外,,MySQL,还提供了,iterate,语句以及,leave,语句用于循环的内部控制。,6.2.5,循环语句,1,while,语句,当条件表达式的值为,true,时,反复执行循环体,直到条件表达式的值为,false,,,while,语句的语法格式如下。,循环标签,:while,条件表达式,do,循环体,;,end while,循环标签,;,说明:,end while,后必须以,“,;,”,结束。,6.2.5,循环语句,6.2.5,循环语句,2,leave,语句,leave,语句用于跳出当前的循环语句(例如,while,语句),语法格式如下。,leave,循环标签,;,说明:,leave,循环标签后必须以,“,;,”,结束。,6.2.5,循环语句,3,iterate,语句,iterate,语句用于跳出本次循环,继而进行下次循环。,iterate,语句的语法格式如下。,iterate,循环标签,;,说明:,iterate,循环标签后必须以,“,;,”,结束。,6.2.5,循环语句,4,repeat,语句,当条件表达式的值为,false,时,反复执行循环,直到条件表达式的值为,true,,,repeat,语句的语法格式如下。,6.2.5,循环语句,4,repeat,语句,循环标签,:repeat,循环体,;,until,条件表达式,end repeat,循环标签,;,说明:,end repeat,后必须以,“,;,”,结束。,6.2.5,循环语句,5,loop,语句的语法格式,由于,loop,循环语句本身没有停止循环的语句,因此,loop,通常使用,leave,语句跳出,loop,循环,,loop,的语法格式如下。,6.2.5,循环语句,5,loop,语句的语法格式,循环标签,:loop,循环体,;,if,条件表达式,then,leave,循环标签,;,end if;,end loop;,说明:,end loop,后必须以,“,;,”,结束。,6.2.5,循环语句,1,2,3,MySQL,功能强大的一个重要原因是,MySQL,内置了许多功能丰富的函数。,字符串函数,数学函数,数据类型转换函数,4,5,条件控制函数,系统信息函数,6.3,系统函数,6,7,本章讲解的所有函数,f(x),对数据,x,进行操作时,都会产生返回结果,并且数据,x,的值以及,x,的数据类型都不会发生丝毫变化。,日期和时间函数,其他常用的,MySQL,函数,6.3,系统函数,为了便于读者学习,本书将数学函数归纳为三角函数,指数函数及对数函数,求近似值函数,随机函数,二进制、十六进制函数等。,6.3.1,数学函数,1,三角函数,MySQL,提供了,pi(),函数计算圆周率;,radians(x),函数负责将角度,x,转换为弧度;,degrees(x),函数负责将弧度,x,转换为角度。,MySQL,还提供了三角函数,正弦函数,sin(x),、余弦函数,cos(x),、,tan(x),正切函数、余切函数,cot(x),、反正弦函数,asin(x),、反余弦函数,acos(x),以及反正切函数,atan(x),。,6.3.1,数学函数,2,指数函数及对数函数,MySQL,中常用的指数函数有,sqrt(),平方根函数、,pow(x,y),幂运算函数(计算,x,的,y,次方)以及,exp(x),函数(计算,e,的,x,次方)。,说明:,pow(x,y),幂运算函数还有一个别名函数:,power(x,y),,实现相同的功能。,6.3.1,数学函数,2,指数函数及对数函数,MySQL,中常用的对数函数有,log(x),函数(计算,x,的自然对数)以及,log10(x),函数(计算以,10,为底的对数)。,6.3.1,数学函数,3,求近似值函数,MySQL,提供的,round(x),函数负责计算离,x,最近的整数,,round(x,y),函数负责计算离,x,最近的小数(小数点后保留,y,位);,truncate(x,y),函数负责返回小数点后保留,y,位的,x,(舍弃多余小数位,不进行四舍五入);,6.3.1,数学函数,3,求近似值函数,format(x,y),函数负责返回小数点后保留,y,位的,x,(进行四舍五入);,ceil(x),函数负责返回大于等于,x,的最小整数;,floor(x),函数负责返回小于等于,x,的最大整数。,6.3.1,数学函数,4,随机函数,MySQL,提供了,rand(),函数负责返回随机数。,6.3.1,数学函数,5,二进制、十六进制函数,bin(x),函数、,oct(x),函数和,hex(x),函数分别返回,x,的二进制、八进制和十六进制数;,ascii(c),函数返回字符,c,的,ASCII,码(,ASCII,码介于,0,255,);,char(c1,c2,c3,),函数将,c1,、,c2,的,ASCII,码转换为字符,然后返回这些字符组成的字符串;,conv(x,code1,code2),函数将,code1,进制的,x,变为,code2,进制数。,6.3.1,数学函数,为便于学习,可以将字符串函数归纳为字符串基本信息函数、加密函数、字符串连接函数、修剪函数、子字符串操作函数、字符串复制函数、字符串比较函数以及字符串逆序函数等。,6.3.2,字符串函数,注意:字符串函数在对字符串操作时,字符集、字符序的设置至关重要。同一个字符串函数,对同一个字符串进行操作,如果字符集或者字符序设置不同,操作结果可能不同。,6.3.2,字符串函数,1,字符串基本信息函数,字符串基本信息函数包括获取字符串字符集的函数、获取字符串长度以及获取字符串占用字节数的函数等。,(,1,)关于字符串字符集的函数,charset(x),函数返回,x,的字符集;,collation(x),函数返回,x,的字符序。,6.3.2,字符串函数,1,字符串基本信息函数,(,1,)关于字符串字符集的函数,convert(x using charset),函数返回,x,的,charset,字符集数据(注意,x,的字符集没有变化)。,6.3.2,字符串函数,1,字符串基本信息函数,(,2,)获取字符串长度以及获取字符串占用字节数函数,char_length(x),函数用于获取字符串,x,的长度;,length(x),函数用于获取字符串,x,的占用的字节数。,6.3.2,字符串函数,2,加密函数,加密函数包括不可逆加密函数以及加密,-,解密函数。,(,1,)不可逆加密函数,password(x),函数用于对,x,进行加密,默认返回,41,位的加密字符串;,md5(x),函数用于对,x,进行加密,默认返回,32,位的加密字符串。,6.3.2,字符串函数,2,加密函数,(,2,)加密,-,解密函数,MySQL,提供了两对加密,-,解密函数分别是:,encode(x,key),函数与,decode(password,key),函数以及,aes_encrypt(x,key),函数与,aes_decrypt(password,key),函数。其中,key,为加密密钥(注意读作,m,yu,),需要牢记加密时的密钥才能实现密码的解密。,6.3.2,字符串函数,2,加密函数,(,2,)加密,-,解密函数,encode(x,key),函数使用密钥,key,对,x,进行加密,默认返回值是一个二进制数(二进制的位数由,x,的字节长度决定);,decode(password,key),函数使用密钥,key,对密码,password,进行解密。,6.3.2,字符串函数,2,加密函数,(,2,)加密,-,解密函数,aes_encrypt(x,key),函数使用密钥,key,对,x,进行加密,默认返回值是一个,128,位的二进制数;,aes_decrypt(password,key),函数使用密钥,key,对密码,password,进行解密。,6.3.2,字符串函数,3,字符串连接函数,concat(x1,x2,.),函数用于将,x1,、,x2,等若干个字符串连接成一个新字符串;,concat_ws(x,x1,x2,.),函数使用,x,将,x1,、,x2,等若干个字符串连接成一个新字符串。,6.3.2,字符串函数,4,修剪函数,修剪函数包括字符串裁剪函数、字符串大小写转换函数、填充字符串函数等函数。,(,1,)字符串裁剪函数,ltrim(x),函数用于去掉字符串,x,开头的所有空格字符;,rtrim(x),函数用于去掉字符串,x,结尾的所有空格字符;,trim(x),函数用于去掉字符串,x,开头以及结尾的所有空格字符。,6.3.2,字符串函数,4,修剪函数,(,1,)字符串裁剪函数,trim(leading|both|trailing x1 from x2),函数用于从,x2,字符串的前缀或者(以及)后缀中去掉字符串,x1,。,6.3.2,字符串函数,4,修剪函数,(,1,)字符串裁剪函数,left(x,n),函数以及,righ(x,n),函数也用于截取字符串。其中,left(x,n),函数返回字符串,x,的前,n,个字符;,right(x,n),函数返回字符串,x,的后,n,个字符。,6.3.2,字符串函数,4,修剪函数,(,2,)字符串大小写转换函数,upper(x),函数以及,ucase(x),函数将字符串,x,中的所有字母变成大写字母,字符串,x,并没有发生变化;,lower(x),函数以及,lcase(x),函数将字符串,x,中的所有字母变成小写字母,字符串,x,并没有发生变化。,6.3.2,字符串函数,4,修剪函数,(,3,)填充字符串函数,lpad(x1,len,x2),函数将字符串,x2,填充到,x1,的开始处,使字符串,x1,的长度达到,len,;,rpad(x1,len,x2),函数将字符串,x2,填充到,x1,的结尾处,使字符串,x1,的长度达到,len,。,6.3.2,字符串函数,5,子字符串操作函数,子字符串操作函数包括取出指定位置的子字符串函数、在字符串中查找指定子字符串的位置函数、子字符串替换函数等。,(1),取出指定位置的子字符串函数,substring(x,start,length),函数与,mid(x,start,length),函数都是从字符串,x,的第,n,个位置开始获取,length,长度的字符串。,6.3.2,字符串函数,5,子字符串操作函数,(,2,)在字符串中查找指定子字符串的位置函数,locate(x1,x2),函数、,position(x1 in x2),函数以及,instr(x2,x1),函数都是用于从字符串,x2,中获取,x1,的开始位置。,find_in_set(x1,x2),函数也可以获取字符串,x2,中,x1,的开始位置(第几个逗号处的位置),不过该函数要求,s2,是一个用英文的逗号分隔的字符串。,6.3.2,字符串函数,5,子字符串操作函数,(,3,)子字符串替换函数,MySQL,提供了两个子字符串替换函数,insert(x1,start,length,x2),和,replace(x1,x2,x3),。,insert(x1,start,length,x2),函数将字符串,x1,中从,start,位置开始、长度为,length,的子字符串替换为,x2,。,replace(x1,x2,x3),函数用字符串,x3,替换,x1,中所有出现的字符串,x2,,最后返回替换后的字符串。,6.3.2,字符串函数,6,字符串复制函数,字符串复制函数包括,repeat(x,n),函数以及,space(n),函数。其中,repeat(x,n),函数产生一个新字符串,该字符串的内容是字符串,x,的,n,次复制;,space(n),函数产生一个新字符串,该字符串的内容是空格字符的,n,次复制。,6.3.2,字符串函数,7,字符串比较函数,strcmp(x1,x2),函数用于比较两个字符串,x1,和,x2,,如果,x1x2,函数返回值为,1,;如果,x1=x2,函数返回值为,0,;如果,x1x2,函数返回值为,-1,。,6.3.2,字符串函数,8,字符串逆序函数,reverse(x),函数返回一个新字符串,该字符串为字符串,x,的逆序。,6.3.2,字符串函数,最为常用的数据类型转换函数是,convert(x,type),与,cast(x as type),函数,另外,MySQL,还提供了,“,十六进制字符串,”,转换为,“,十六进制数,”,的函数,unhex(x),。,(,1,),convert(),函数,convert(),函数有两种用法格式:,convert(x using charset),函数返回,x,的,charset,字符集数据(刚刚讲过,这里不再赘述)。,6.3.3,数据类型转换函数,convert(),函数还有另外一种语法格式:,convert(x,type),,可以实现数据类型的转换。,convert(x,type),函数以,type,数据类型返回,x,数据(注意,x,的数据类型没有变化)。除此以外,cast(x as type),函数也实现了,convert(x,type),函数相同的功能。,6.3.3,数据类型转换函数,(,2,),unhex(x),函数负责将十六进制字符串,x,转换为十六进制的数值。,6.3.3,数据类型转换函数,条件控制函数的功能是根据条件表达式的值返回不同的值,,MySQL,中常用的条件控制函数有,if(),、,ifnull(),以及,case,函数。与先前讲解的,if,语句以及,case,语句不同,这些函数可以在,MySQL,客户机中直接调用,可以像,max(),统计函数一样直接融入到,SQL,语句中。,6.3.4,条件控制函数,(,1,),if(),函数,if(condition,v1,v2),函数中,condition,为条件表达式,当,condition,的值为,true,时,函数返回,v1,的值,否则返回,v2,的值。,6.3.4,条件控制函数,(,2,),ifnull(),函数,ifnull(v1,v2),函数中,如果,v1,的值为,NULL,,则该函数返回,v2,的值;如果,v1,的值不为,NULL,,则该函数返回,v1,的值。,6.3.4,条件控制函数,(,3,),case,函数,case,函数的语法格式如下。如果表达式的值等于,when,语句中某个“值,n”,,则,case,函数返回值为“结果,n”,;如果与所有的“值,n”,都不相等,,case,函数返回值为“其他值”。,case,表达式,when,值,1 then,结果,1 when,值,2 then,结果,2 else,其他值,end,6.3.4,条件控制函数,1,关于,MySQL,服务实例的函数,version(),函数用于获取当前,MySQL,服务实例使用的,MySQL,版本号,该函数的返回值与,version,静态变量的值相同。,6.3.5,系统信息函数,2,关于,MySQL,服务器连接的函数,(,1,)有关,MySQL,服务器连接的函数,connection_id(),函数用于获取当前,MySQL,服务器的连接,ID,,该函数的返回值与,pseudo_thread_id,系统变量的值相同;,database(),函数与,schema(),函数用于获取当前操作的数据库。,6.3.5,系统信息函数,2,关于,MySQL,服务器连接的函数,(,2,)获取数据库用户信息的函数,user(),函数用于获取通过哪一台登录主机、使用什么账户名成功连接,MySQL,服务器,,system_user(),函数与,session_user(),函数是,user(),函数的别名。,current_user(),函数用于获取该账户名允许通过哪些登录主机连接,MySQL,服务器。,6.3.5,系统信息函数,1,获取,MySQL,服务器当前日期或时间函数,(,1,),curdate(),函数、,current_date(),函数用于获取,MySQL,服务器当前日期;,curtime(),函数、,current_time(),函数用于用于获取,MySQL,服务器当前时间;,6.3.6,日期和时间函数,now(),函数、,current_timestamp(),函数、,localtime(),函数以及,sysdate(),函数用于获取,MySQL,服务器当前日期和时间,这四个函数允许传递一个整数值(小于等于,6,)作为函数参数,从而获取更为精确的时间信息。,6.3.6,日期和时间函数,curdate(),函数、,current_date(),函数、,curtime(),函数、,current_time(),函数、,now(),函数、,curre
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

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

关于我们      便捷服务       自信AI       AI导航        关注我们

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服