版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章SQL扩展语言和系统函数——SQL语言简介SQL语言简介在MySQL数据库中,SQL语言由以下几部分组成。(1)数据定义语言(DDL)。它用于定义数据库及其对象,包括表、约束、规则、视图、触发器和存储过程等。主要语句包括创建(CREATE)、修改(ALTER)和删除(DROP)。(2)数据操纵语言(DML)。它用于操作数据库数据记录。主要语句包括插入(INSERT)、修改(UPDATE)、删除(DELETE)和查询(SELECT)等。(3)数据控制语言(DCL)。它用于安全管理,对用户分配定义和操作数据库及其对象的权限。主要语句包括授予权限(GRANT)和收回权限(REVOKE)等。(4)MySQL语言元素。它是MySQL对SQL的扩展,包括常量、变量、运算符、函数、流程控制语句和注解等,用于SQL语言编程,每个SQL语句都以分号结束,并且忽略空格、制表符和回车符。第6章SQL扩展语言和系统函数——常量和变量01常
量数值常量字符串常量布尔值NULL值常
量1.数值常量数值常量可分为整数常量和实数常量。整数常量是不带小数点的十进制数,如1894、2、+145345234、–2147483648。实数常量是使用小数点的数值常量,可以是普通小数常量和浮点数常量。如5.26、
1.39、101.5E5、0.5E
2。2.字符串常量字符串是指用单引号或双引号括起来的字符序列,分为普通编码字符串常量、Unicode编码字符串常量、十六进制字符串常量、二进制字符串常量和日期时间常量。(1)普通编码字符串常量例如:"hello,大家好!"。ASCII字符按照ASCII编码,中文字符按照汉字编码,常用汉字编码为GB2312-80和GBK。在计算机中字符串取决于字符集,它们对应相应的编码。如果采用gbk字符集,一个ASCII字符占1个字节,一个汉字为2个字节。常
量在字符串中不仅可以使用普通的字符,也可以使用几个转义序列,它们用来表示特殊的字符,如表。序列含义\0一个ASCII0(NUL)字符\n一个换行符\r一个回车符(Windows中使用\r、\n作为新行标志)\t一个定位符\b一个退格符\Z一个ASCII26字符(Ctrl+Z)\'一个单引号\"一个双引号\\一个反斜杠(\)\%一个%字符。它用于在正文中搜索“%”的文字实例,否则将解释为多个字符通配符\_一个_字符。它用于在正文中搜索“_”的文字实例,否则将解释为一个字符通配符常
量每个转义序列都以一个反斜杠(“\”)开始。注意,NUL字节与NULL值不同,NUL为一个零值字节,而NULL代表没有值。有以下几种方式可以在字符串中包括引号。在字符串内用单引号可以写成两个单引号('')。在字符串内用双引号可以写成两个双引号("")。可以在引号前加转义字符(“\”)。在字符串内用双引号引用的单引号不需要特殊处理。同样,在字符串内用单引号引用的双引号也不需要特殊处理。例如,下面语句执行结果如图。SELECTNULL,"It'stime.",N'It\'stime.','It''stime.';常
量(2)Unicode编码字符串常量例如:N'你好,Howareyou!'。在普通字符串前面有一个N标识符(N代表SQL-92标准中的国际语言)。N这个前缀必须为大写,只能用单引号括起字符串。Unicode编码的字符集常用uft8,每个ASCII字符用1字节,作为字符用3个字节存储。(3)十六进制字符串常量例如:x'4D7953514C'。MySQL支持十六进制值。一个十六进制值通常指定为一个字符串常量,每对十六进制数字被转换为一个字符,其最前面有一个字母“X”或“x”。在引号中只可以使用数字“0”到“9”及字母“a”到“f”或“A”到“F”。例如:X'41'表示大写字母A,x'4D7953514C'表示字符串“MySQL”。十六进制数值以“0x”(只能小写)打头,即X'41'可以替换为0x41。但它的默认类型是字符串。如果想要确保该值作为数字处理,可以使用CAST(...ASunsigned)。将一个字符串转换为十六进制,可以用HEX()函数。用来存储图片(如JPG)和视频(如AVI)等格式的数据可以表示为十六进制。例如,下面语句执行结果如图。SELECT0x41,CAST(0x41ASunsigned);SELECTHEX('CAT');常
量(4)二进制字符串常量可以使用b'二进制'符号写位值,例如:b'01000011'还可以表达一系列特殊的符号,例如,b'0'显示为空白,b'1'显示为一个笑脸图标。使用BIN函数可以将位值转换为二进制格式。使用OCT函数可以将位字符串转换为数值型格式。例如,下面语句执行结果如图。SELECTb'01000011',BIN(b'01000011'+0),OCT(b'01000011'+0);(5)日期时间常量日期时间常量用单引号将表示日期时间的字符串括起来构成,例如:'2014-06-1712:30:43'。日期型常量包括年、月、日,数据类型为date,表示为“2014-06-17”这样的值。时间型常量包括小时数、分钟数、秒数及微秒数,数据类型为time,表示为“12:30:43.00013”这样的值。常
量3.布尔值布尔值只包含两个可能的值:TRUE和FALSE。其中,TRUE的数字值为“1”,FALSE的数字值为“0”。例如,下面语句执行结果如图。SELECTTRUE,FALSE,1<2,'a'<'A';4.NULL值NULL值可适用于各种列类型,通常用来表示“没有值”“无数据”等意义,并且不同于数字类型的“0”或字符串类型的空字符串。02变
量自定义变量系统变量变
量1.自定义变量自定义变量包括用户变量(以@符打头)),在当前会话中有效。局部变量仅在定义它的BEGIN…END语句体中有效。用户可以先在用户变量中保存值,然后在以后引用它,这样可以将值从一个数据库对象传递到另一个数据库对象,或者从一个语句体传递到另一个语句体。定义一个变量可以使用SET语句。SET@变量名=表达式,...]说明:(1)变量名可以由当前字符集的文字数字字符、“.”、“_”和“$”组成。当变量名中需要包含一些特殊符号(如空格、#等)时,可以使用双引号或单引号将整个变量括起来。(2)可以使用“=”或“:=”作为分配符,分配给每个变量的值可以为整数、实数、字符串或NULL值。可以同时定义多个变量,中间用逗号隔开。(3)表达式可以是常量、变量或它们通过运算符组成的式子,变量的数据类型是由赋值表达式自动分配的,重新赋不同类型的值,则数据类型也会跟着改变。变
量(4)如果使用没有赋值的变量,它的值为NULL例如:SET@name='王林';SET@user1=1,@user2=2,@user3=@user2+1;SELECT@name;SELECT@t2:=(@t2:=2)+5ASt2;第1句:创建用户变量name并赋值为“王林”;第2句:创建用户变量user1并赋值为1,user2赋值为2,user3赋值user2的值加1(为3);第3句:查询创建的用户变量name的值;第4句:查询结果t2的值。执行结果如图。变
量【例】根据姓名查询学生成绩信息。USExscj;SET@xm='林一帆';SET@xh=(SELECT学号FROMxsWHERE姓名=@xm);SELECT@xh,@xm,课程号,成绩 FROMcj WHERE学号=@xh;查询结果如图。变
量2.系统变量系统变量包括全局变量和会话变量。服务器每次启动都会为所有的全局变量赋初始值,跨会话(连接)有效。会话变量仅在本次会话有效。(1)@@符号大多数系统变量应用时必须在名称前加@@符号,例如,获得现在使用的MySQL版本:SELECT@@version;说明:为了与其他SQL产品保持一致,某些特定的系统变量是要省略这两个符号的,如CURRENT_DATE(系统日期)、CURRENT_TIME(系统时间)、CURRENT_TIMESTAMP(系统时间戳)和CURRENT_USER(当前SQL用户的名字)。例如,获得系统当前时间:SELECTCURRENT_TIME;变
量(2)系统变量的修改在MySQL中,有些系统变量的值是不可以改变的,如VERSION和系统日期。而有些系统变量是可以通过下列SET语句来修改的。SET系统变量名=表达式 |[GLOBAL|SESSION]系统变量名=表达式 |@@[GLOBAL.|SESSION.]系统变量名=表达式(3)指定了GLOBAL关键字的是全局系统变量;指定了SESSION关键字的则是会话系统变量,它的同义词为LOCAL。如果在使用系统变量时不指定关键字,则默认为会话系统变量。例如,将全局系统变量SORT_BUFFER_SIZE的值改为25000。SET@@GLOBAL.SORT_BUFFER_SIZE=25000;变
量(4)如果在使用SETGLOBAL同时又使用了一个只能在SESSION中使用的会话变量,或者如果在设置一个全局变量时未指定GLOBAL(或@@),则MySQL会产生错误。(5)大多数会话系统变量的名字和全局系统变量的名字相同。当启动会话的时候,每个会话系统变量都和同名的全局系统变量的值相同。一个会话系统变量的值是可以改变的,但是这个新的值仅适用于正在运行的会话,不适用于所有其他会话。例如,将当前会话的SQL_WARNINGS变量设置为TRUE:SET@@SQL_WARNINGS=ON;MySQL对于大多数系统变量都有默认值。当数据库服务器启动的时候,就使用这些值。修改后如果要将一个系统变量值重新设置为MySQL默认值,可以使用DEFAULT作为其值。例如,把当前会话系统变量SQL_SELECT_LIMIT的值设置为10。这个变量决定了SELECT语句结果集中的最大行数。SET@@SESSION.SQL_SELECT_LIMIT=10;SELECT@@LOCAL.SQL_SELECT_LIMIT;执行结果如图。变
量(6)使用SHOWVARIABLES语句可以返回所有全局系统变量,而SHOWSESSIONVARIABLES则返回所有会话系统变量。要获得与指定样式匹配的具体的变量名称或名称清单,需使用LIKE子句,通配符为“%”。例如,以下语句得到符合指定要求的系统变量清单:SHOWVARIABLESLIKE'max_join_size';SHOWGLOBALVARIABLESLIKE'max_join_size';SHOWVARIABLESLIKE'character%';第6章SQL扩展语言和系统函数——运算符与表达式01算术运算符算术运算符(1)“+”运算符。用于获得一个或多个值的和。例如,下面语句执行结果如图。SELECT1.2+3.09345,0.00000000001+0.00000000001;(2)“–”运算符。用于从一个值中减去另一个值。例如,下面语句执行结果如图。SELECT200-201,0.14-0.1,-2,-23.4;其中,“+”(加)和“-”(减)运算符还可用于对日期时间值(如datetime)进行算术运算。例如,下面语句执行结果如图。SELECT'2014-01-20'+INTERVAL22DAY;算术运算符(3)“*”运算符。用来获得两个或多个值的乘积。例如,下面语句执行结果如图。SELECT5*12,5*0,-11.2*8.2,-19530415*-19540319;(4)“/”运算符。用来获得一个值除以另一个值的商。例如,下面语句执行结果如图。SELECT12/2,1.6/-0.1,23/7,23.00/7.00000,1/0;算术运算符(5)“%”运算符。用来获得一个或多个除法运算的余数。例如,下面语句执行结果如图。SELECT12%5,-32%7,3%0;在运算过程中,字符串可以被自动地转换为数值。如果字符串前面是部分数字,那么它就会被转换为这个数字的值,否则,被转换为0。例如,下面语句执行结果如图。SELECT'80AA'+'1','AA80'+1,'10x'*2*'qwe';02比较运算符比较运算符比较运算符(又称关系运算符),用于比较两个表达式的值,其运算结果可以为3种之一:1(真)、0(假)及NULL(不确定)。表列出了在MySQL中可以使用的各种比较运算符。运算符含义运算符含义=等于<=小于等于>
大于<>、!=不等于<
小于<=>相等或都等于空>=大于等于
比较运算符(1)“=”运算符。用于比较表达式的两边是否相等,也可以对字符串进行比较。例如,下面语句执行结果如图。SELECT3.14=3.142,5.12=5.120,'a'='A','A'='B','apple'='banana';例如,下面语句执行结果如图。SELECT'Apple'='apple',BINARY'Apple'='apple';比较运算符(2)“<>”运算符。与“=”运算符相对立的是“<>”运算符,它用来检测表达式的两边是否不相等,如果不相等则返回真,相等则返回假。例如,下面语句执行结果如图。SELECT5<>5,5<>6,'a'<>'a','5a'<>'5b';例如,下面语句执行结果如图。SELECTNULL<>NULL,0<>NULL,0<>0;比较运算符(3)“<=”“>=”“<”和“>”运算符“<=”“>=”“<”和“>”运算符用来比较表达式的左边是小于或等于、大于或等于、小于还是大于它的右边。例如,下面语句执行结果如图。SELECT10>10,10>9,10<9,3.14>3.142;03逻辑运算符逻辑运算符MySQL提供的逻辑运算符如表。运算符含义运算符含义NOT或!逻辑非OR或||逻辑或AND或&&逻辑与XOR逻辑异或(1)NOT运算符。逻辑运算符中最简单的是NOT运算符,它对跟在它后面的逻辑测试判断取反,把真变假,把假变真。例如,下面语句执行结果如图。SELECTNOT1,NOT0,NOT(1=1),NOT(10>9);逻辑运算符(2)AND运算符。AND运算符用于测试两个或更多的值(或表达式求值)的有效性,如果它的所有项为真,并且不是NULL,就返回真值,否则返回假值。例如,下面语句执行结果如图。SELECT(1=1)AND(9>10),('a'='a')AND('c'<'d');(3)OR运算符。如果包含的值或表达式有一个为真,并且不是NULL(不需要所有项为真),就返回1,若全为假则返回0。例如,下面语句执行结果如图。SELECT(1=1)OR(9>10),('a'='b')OR(1>2);逻辑运算符(4)XOR运算符。如果包含的值或表达式有一个为真,而另一个为假并且不是NULL,那么返回是真,否则返回是假。例如,下面语句执行结果如图。SELECT(1=1)XOR(2=3),(1<2)XOR(9<10);04位
运
算
符位运算符位运算符在两个表达式之间执行二进制位操作,这两个表达式的类型可为整型或与整型兼容的数据类型(如字符型),但不能为image类型。位运算符如表。运算符含义运算符含义&位AND~位取反|位OR>>
位右移^位XOR<<
位左移(1)“|”运算符和“&”运算符。“|”运算符用于执行一个位的或操作,而“&”用于执行一个位的与操作。例如,下面语句执行结果如图。SELECT13|28,3|4,13&28,3&4;位运算符(2)“<<”和“>>”运算符。分别用于向左和向右移动位。例如,下面语句执行结果如图。SELECT1<<7,64>>1;(3)“^”运算符。执行位异或(XOR)操作。例如,下面语句执行结果如图。SELECT1^0,12^5,123^23;位运算符(4)“~”运算符。执行位取反操作,并返回64位整型结果。例如,下面语句执行结果如图。SELECT~18446744073709551614,~1;05运算符优先级运算符优先级当一个复杂的表达式有多个运算符时,运算符优先级决定执行运算的先后次序。执行的次序有时会影响所得到的运算结果。运算符优先级如表。运算符优先级运算符优先级+(正)、–(负)、~(按位NOT)1NOT6*(乘)、/(除)、%(模)2AND7+(加)、–(减)3ALL、ANY、BETWEEN、IN、LIKE、OR、SOME8=,>,<,>=,<=,<>,!=,!>,!<比较运算符4=(赋值)9^(位异或)、&(位与)、|(位或)5
06表
达
式表
达
式表达式还可以根据值的复杂性来分类。(1)当表达式的结果只是一个值就是单一表达式。例如:'221101'又例如:学号(2)由运算符将多个单一表达式连接而成的表达式是复合表达式。例如:专业='计算机'AND性别=0表
达
式(3)当表达式的结果是由不同类型数据组成的一行值时,这种表达式叫作行表达式。例如:'221101','王林','计算机',1,'2004-02-10',15(4)若表达式的结果为0个、1个或多个行表达式的集合,那么这个表达式就叫作表表达式。例如:'221101','王林','计算机',1,'2004-02-10',15'221102','程明','计算机',1,'2005-02-01',15第6章SQL扩展语言和系统函数——系统内置函数01数
学
函
数最大值和最小值函数最大整数和最小整数函数四舍五入函数生成随机数数值绝对值函数符号函数平方根函数指数函数三角函数反三角函数进制转换函数数学函数1.最大值和最小值函数GREATEST(表达式,...):求所有表达式最大值。LEAST(表达式,...):求所有表达式最小值。例如,下面语句执行结果如图。SELECTGREATEST(10,9,128,1),LEAST(1,2,3);数学函数还可以嵌套使用,例如,下面语句执行结果如图。SELECTGREATEST(-2,LEAST(0,3)),LEAST(1,GREATEST(1,2));数学函数2.最大整数和最小整数函数FLOOR(数值):获得小于一个数的最大整数值。CEILING(数值):获得大于一个数的最小整数值。例如,下面语句执行结果如图。SELECTFLOOR(-1.2),CEILING(-1.2),FLOOR(9.9),CEILING(9.9);数学函数3.四舍五入函数ROUND(数值,位数):获得一个数的指定位数四舍五入的数值。位数>0,为小数点后面;位数<0,为小数点前面。例如,下面语句执行结果如图。SELECTROUND(-234,-1),ROUND(25.416,2),ROUND(9.8);TRUNCATE(数值,位数):把一个数截取为一个指定位数的数值。位数>0,为小数点后面;位数<0,为小数点前面。例如,下面语句执行结果如图。SELECTTRUNCATE(1.54578,2),TRUNCATE(-76.12,5),TRUNCATE(-129,-1);数学函数4.生成随机数RAND():生成一个0~1之间的随机数。例如,下面语句执行结果如图。SELECTRAND(),RAND()*10,RAND()*100;5.数值绝对值函数ABS(数值):用来获得一个数的绝对值。例如,下面语句执行结果如图。SELECTABS(-878),ABS(-8.345);数学函数6.符号函数SIGN(数值):返回数字的符号,返回的结果是正数(1)、负数(
1)或者零(0)。例如,下面语句执行结果如图。SELECTSIGN(-2),SIGN(2),SIGN(0);7.平方根函数SQRT(正数):返回一个数的平方根。例如,下面语句执行结果如图。SELECTSQRT(25),SQRT(15),SQRT(1);数学函数8.指数函数POW(数值,指数):以一个数作为另外一个数的指数,并返回结果。例如,下面语句执行结果如图。SELECTPOW(2,2),POW(10,-2),POW(0,3);9.三角函数SIN(弧度)、COS(弧度)和TAN(弧度):返回一个弧度的正弦、余弦和正切值。例如,下面语句执行结果如图。SELECTSIN(RADIANS(30)),COS(0),TAN(RADIANS(45)),DEGREES(PI());数学函数10.反三角函数ASIN(弧度)、ACOS(弧度)和ATAN(弧度):返回一个弧度的反正弦、反余弦和反正切值。例如,下面语句执行结果如图。SELECTASIN(1),ACOS(1),ATAN(45);11.进制转换函数BIN(整数)、OCT(整数)和HEX(整数):分别返回一个数的二进制、八进制和十六进制值,这个值以字符串返回。例如,下面语句执行结果如图。SELECTBIN(2),OCT(12),HEX(80);02聚
合
函
数聚合函数聚合意味着是对一组值(而不是单个值)求和、平均值、频次等,聚合函数常用于对一组值进行聚合计算,然后返回单个值。一个GROUPBY子句的SELECT语句中包含聚合函数,数据就可以聚合。03字符串函数字符和对应的ASCII()相互转换函数获得字符串的长度函数字符串左边和右边截取字符函数删除字符串左右空格函数填补字符串函数字符串替换函数字符串连接函数求字符串子串函数字符串比较函数字符串函数1.字符和对应的ASCII()相互转换函数ASCII(字符):返回字符表达式最左端字符的ASCII码值。CHAR(整数,…):将整数x1、x2...的ASCII码转换为字符,结果组合成一个字符串。参数x1、x2、x3...为0~255范围内的整数,返回值为字符型。例如,下面语句执行结果如图。SELECTASCII('A'),CHAR(65,66,67);字符串函数2.获得字符串的长度函数LENGTH(字符串):获得指定字符串占用字节数。ASCII码字符,每个字符占用1个字节,如果是其他类型字符,则需要看目前系统客户端采用的字符集。下列语句显示当前所有字符集:SHOWVARIABLESLIKE'character%';显示结果如图。字符串函数可以看出,当前连接(character_set_connection)采用utf8mb4字符集,该字符集ASCII码字符,每个字符占用1个字节,1个汉字编码为3个字节。例如,下面语句执行结果如图。SELECTLENGTH('汉字abc');修改连接字符集为gb2312(标准汉字编码)和gbk(扩展汉字编码),该字符集ASCII码字符,每个字符占用1个字节,1个汉字编码为2个字节。例如:SETcharacter_set_connection=gbk;SELECTLENGTH('汉字abc');执行结果如图。字符串函数3.字符串左边和右边截取字符函数LEFT(字符串,字符个数)和RIGHT(字符串,字符个数):截取字符串左边或者右边指定个数字符。【例】显示学生表包含的班级,测试字符串长度。USExscj;SELECTDISTINCTLEFT(学号,4)AS班级 FROMxs; #(a)SETcharacter_set_connection=gbk;SET@str='汉字abc';SELECTLENGTH(@str),LEFT(@str,3); #(b)执行结果如图。
字符串函数4.删除字符串左右空格函数LTRIM(字符串)、RTRIM(字符串)和TRIM(字符串):分别删除字符串中左部空格、右部空格和两端空格,返回值为字符串。例如,下面语句执行结果如图。SET@str='MySQL';SELECTTRIM(@str),LENGTH(TRIM(@str))),LENGTH(RTRIM(@str));字符串函数5.填补字符串函数RPAD(字符串,长度,填补字符串)和LPAD(字符串,长度,填补字符串):分别对字符串右侧和左侧进行填补,直至字符数目达指定长度,最后返回填补后的字符串。若填补字符串的字符个数大于指定长度,则返回前面指定长度字符。例如,下面语句执行结果如图。SET@x='ABC';SELECTRPAD(@x,8,'='),LPAD(@x,8,'=');字符串函数6.字符串替换函数REPLACE(字符串1,字符串2,字符串3):用字符串3替换字符串1中所有出现的字符串2,最后返回替换后的字符串。例如,下面语句执行结果如图。SELECTREPLACE("It'stime.",'\'','i');7.字符串连接函数CONCAT(字符串,...):连接指定的函数参数字符串。例如,下面语句执行结果如图。SELECTCONCAT('江苏省','南京市','玄武区');字符串函数8.求字符串子串函数SUBSTRING(表达式,起始位置,长度):返回表达式中起始位置开始、长度个数(字节)的字串。表达式可为字符串、二进制串、text、image列或表达式。如果表达式是字符类型和二进制类型,则返回值类型与表达式的类型相同;如果为text类型,返回的是varchar类型。【例】分别显示xs表中所有女学生的姓和名。USExscj;SELECTSUBSTRING(姓名,1,1)as姓,SUBSTRING(姓名,2,LENGTH(姓名)-1)AS名 FROMxs WHERE性别=0 ORDERBY姓名;查询结果如图。字符串函数9.字符串比较函数STRCMP(字符串1,字符串2):用于比较两个字符串,s1与s2相等返回0,s1大于s2返回1,s1小于s2返回-1。例如,下面语句执行结果如图。SELECTSTRCMP('A','A'),STRCMP('ABC','OPQ'),STRCMP('T','B');04日期和时间函数当前日期时间函数当前时间和日期函数指定日期对应年函数指定日期对应月函数指定日期对应的年、星期和月函数指定日期对应的星期函数指定时间对应的时分秒函数日期时间增减间隔值函数日期和时间函数1.当前日期时间函数NOW():获得当前的日期和时间,它以YYYY-MM-DDHH:MM:SS的格式返回当前的日期和时间。2.当前时间和日期函数CURTIME()和CURDATE():比NOW()函数更为具体化,它们返回的分别是当前的时间和日期。例如,下面语句执行结果如图。SELECTNOW(),CURTIME(),CURDATE();日期和时间函数3.指定日期对应年函数YEAR(日期):获得一个日期中年的部分。例如,下面语句执行结果如图。SELECTYEAR(20180512142800),YEAR('2022-11-02');4.指定日期对应月函数MONTH(日期)和MONTHNAME(日期):分别以数值和字符串的格式返回月的部分。例如,下面语句执行结果如图。SELECTMONTH(20180512142800),MONTHNAME('2022-11-02');日期和时间函数5.指定日期对应的年、星期和月函数DAYOFYEAR(日期)、DAYOFWEEK(日期)和DAYOFMONTH(日期):分别返回指定一天在一年、一星期及一个月中的序数。例如,下面语句执行结果如图。SELECTDAYOFYEAR(20180512),DAYOFMONTH('2022-11-02'),DAYOFWEEK(20221102);日期和时间函数6.指定日期对应的星期函数DAYNAME(日期):以字符串形式返回星期几。WEEK(日期):返回指定的日期是这一年的第几个星期。YEARWEEK(日期):返回指定的日期是哪一年的第几个星期。例如,下面语句执行结果如图。SELECTDAYNAME('2018-06-26'),WEEK('2021-05-01'),YEARWEEK(20210501);日期和时间函数7.指定时间对应的时分秒函数HOUR(时间)、MINUTE(时间)和SECOND(时间):分别返回时间值的小时、分钟和秒的部分。例如,下面语句执行结果如图。SELECTHOUR(155300),MINUTE('15:53:00'),SECOND(143415);日期和时间函数8.日期时间增减间隔值函数DATE_ADD(日期,INTERVAL间隔值关键字)DATE_SUB(日期,INTERVAL间隔值关键字)DATE_ADD()函数用来对指定日期时间增加间隔值,DATE_SUB()减少间隔值。INTERVAL表示一个时间间隔,关键字和间隔值格式如表。关键字间隔值格式关键字间隔值格式DAY日期MINUTE分钟DAY_HOUR日期:小时MINUTE_SECOND分钟:秒DAY_MINUTE日期:小时:分钟MONTH月DAY_SECOND日期:小时:分钟:秒SECOND秒HOUR小时YEAR年HOUR_MINUTE小时:分钟YEAR_MONTH年-月HOUR_SECOND小时:分钟:秒
日期和时间函数DATE_ADD()函数计算指定日期加上时间间隔后的值,DATE_SUB()函数则计算指定日期减去时间间隔后的值。例如,下面语句执行结果如图。SELECTDATE_ADD('2014-08-08',INTERVAL17DAY);SELECTDATE_SUB('2014-08-2010:25:35',INTERVAL20MINUTE);日期和时间函数【例】求xs表中所有女学生的年龄。USExscj;SELECT学号,姓名,YEAR(NOW())-YEAR(出生日期)AS年龄 FROMxs WHERE性别=0;查询结果如图。05加
密
函
数高级加密和解密函数加密和解密函数固定加密函数加密函数1.高级加密和解密函数AES_ENCRYPT(字符串,密钥)和AES_DECRYPT(字符串,密钥):返回对字符串用高级加密标准(AES)算法和密钥加密后的结果,是一个二进制字符串,以blob类型存储。AES_DECRYPT()函数进行解密。2.加密和解密函数ENCODE(字符串,密钥)和DECODE(字符串,密钥):ENCODE()函数用来对一个字符串采用密钥加密,返回的结果是一个二进制字符串,以blob类型存储。DECODE函数使用正确的密钥对加密后的字符串进行解密。加密函数3.固定加密函数PASSWORD(字符串)和MD5(字符串):返回字符串加密后的密码字符串,适用于插入MySQL的安全系统,该加密过程不可逆。MySQL5.7版后,废除了PASSWORD。例如,下面语句执行结果如图。SET@x='ABC';SELECTAES_DECRYPT(AES_ENCRYPT(@x,'123'),'123')=@X; #(a)SELECTDECODE(ENCODE(@x,'123'),'123')=@X; #(b)SELECTPASSWORD(@x),MD5(@x); #(c)
06控制流函数判断是否为空函数判断是否相等函数判断函数控制流函数1.判断是否为空函数IFNULL(表达式1,表达式2):判断参数表达式1是否为NULL,为NULL时返回表达式2,不为NULL时返回表达式1。例如,下面语句执行结果如图。SELECTIFNULL(1,2),IFNULL(NULL,'MySQL'),IFNULL(1/0,10);控制流函数2.判断是否相等函数NULLIF(表达式1,表达式2):检验提供的两个参数是否相等,如果相等,则返回NULL,如果不相等就返回第一个参数。例如,下面语句执行结果如图。SELECTNULLIF(1,1),NULLIF('A','B'),NULLIF(2+3,3+4);控制流函数3.判断函数IF(表达式1,表达式2,表达式3):如果表达式1为真,返回第2个参数;如果表达式1为假,返回第3个参数。例如,下面语句执行结果如图。SELECTIF(2*4>9-5,'是','否');加密函数【例】查询xs表中名字为两个字的学生的姓名、性别和专业名。性别值如为0显示“女”,如为1则显示“男”。USExscj;SELECT姓名,IF(性别=0,'女','男')AS性别,专业 FROMxs WHERE姓名LIKE'__';查询结果如图。07格式化函数格式化函数MySQL还有一些函数是特意为格式化数据设计的。(1)数值格式化函数。FORMAT(数值,小数位数):把数值格式化为以逗号为间隔的数字序列。例如,下面语句执行结果如图。SELECTFORMAT(1625610.23654,2),FORMAT(-5468,4);格式化函数(2)日期和时间格式化函数。DATE_FORMAT(日期,格式化符)TIME_FORMAT(时间,格式化符)MySQL中的日期/时间格式化符号如表。符号值的格式符号值的格式%a缩写的星期名(Sun,Mon…)%pAM或PM%b缩写的月份名(Jan,Feb…)%r时间,12小时的格式%d月份中的天数%S秒(00,01…)%H小时(01,02…)%T时间,24小时的格式%I分钟(00,01…)%w一周中的天数(0,1…)%j一年中的天数(001,002…)%W长型星期的名字(Sunday,Monday…)%m月份,2位(00,01…)%Y年份,4位%M长型月份的名字(January,February)
例如,下面语句执行结果如图。SELECTDATE_FORMAT(NOW(),'%W,%d,%M,%Y%r');格式化函数(3)IP地址和数字相互转换函数。INET_NTOA()和INET_AT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险公司墙布施工合同协议
- 2025商户出租合同
- 家具制造割胶工招聘合同
- 商务局光缆施工合同
- 空调设备钢板租赁合同
- 船舶公司船务管理员招聘合同
- 东营科研实验室租赁合同模板
- 2025国内旅游组团合同
- 委托代理合同
- 2025烟道清洗合同
- 犯罪心理学之青少年犯罪分析专家讲座
- 金融法案例优质获奖课件
- F450装机教程优秀课件
- (完整word版)高分子材料工程专业英语第二版课文翻译基本全了
- 识别自动化思维重塑快乐自我
- 2023版思想道德与法治课件专题7第1讲社会主义法律的特征和运行PPT
- 毒品与艾滋病预防智慧树知到答案章节测试2023年湖南警察学院
- 2023-2024学年山东省临沂市小学数学五年级上册期末自测试卷
- GB/T 35506-2017三氟乙酸乙酯(ETFA)
- 品香的方法课件
- 幼儿教师如何做家访专题培训课件
评论
0/150
提交评论