合肥百度团购网站建设,律师用的网站模板,ngrok WordPress,做威尼斯网站代理算是违法吗Java知识点总结#xff1a;想看的可以从这里进入 目录3.3、MySQL的函数3.3.1、字符串函数3.3.2、数学函数3.3.3、聚合函数3.3.4、日期函数3.3.5、条件判断函数3.3.6、系統信息函数3.3.7、其他函数3.3、MySQL的函数
MySQL提供了丰富的内置函数#xff0c;这些函数使得数据的维… Java知识点总结想看的可以从这里进入 目录3.3、MySQL的函数3.3.1、字符串函数3.3.2、数学函数3.3.3、聚合函数3.3.4、日期函数3.3.5、条件判断函数3.3.6、系統信息函数3.3.7、其他函数3.3、MySQL的函数
MySQL提供了丰富的内置函数这些函数使得数据的维护与管理更加方便能够更好地提供数据的分析与统计功能在一定程度上提高了开发人员进行数据分析与统计的效率。MySQL提供的内置函数从 实现的功能角度 可以分为字符串函数、数值函数、日期和时间函数、流程控制函数、加密与解密函数、获取MySQL信息函数、聚合函数等。
3.3.1、字符串函数
需要注意的在MySQL中字符串的位置是从1开始的而不是0。
函数描述实例CHAR_LENGTH(s)返回字符串长度SELECT CHAR_LENGTH(长度) ; --2CHARACTER_LENGTH(s)返回字符串的字符数SELECT CHARACTER_LENGTH(长度) --2CONCAT(s1,s2…sn)字符串 s1,s2 等合并为一个字符串SELECT CONCAT(你 , 好 ) ; – 你好CONCAT_WS(x, s1,s2…sn)用指定的拼接符 “x”拼接字符串SELECT CONCAT_WS(-, 你, 好); – 你-好UPPER(s)将字符串转换为大写SELECT UPPER(a); --ALOWER(s)所有大写字母变成小写字母SELECT LOWER(SQL) – sqlTRIM(s)去掉字符串 s 开始和结尾处的空格SELECT TRIM( sql ) ; – sqlFORMAT(x,n)函数可以将数字 x 进行格式化 “#,###.##”, 将 x 保留到小数点后 n 位最后一位四舍五入。SELECT FORMAT(250500.5634, 2); – 结果 250,500.56FIELD(s,s1,s2…)返回第一个字符串 s 在字符串列表(s1,s2…)中的位置SELECT FIELD(c, a, b, c); – 3FIND_IN_SET(s1,s2)返回在字符串s2中与s1匹配的字符串的位置SELECT FIND_IN_SET(c,a,b,c); – 3SUBSTRING(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串SELECT SUBSTRING(RUNOOB, 2, 3) AS ExtractString; – UNOINSERT(s1,x,len,s2)字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串SELECT INSERT(google.com, 1, 6, runoob); – runoob.comLOCATE(s1,s)从字符串 s 中获取 s1 的开始位置SELECT LOCATE(a,abc; – 1LCASE(s)将字符串 s 的所有字母变成小写字母SELECT LCASE(RUNOOB) – runoobLEFT(s,n)返回字符串 s 的前 n 个字符SELECT LEFT(runoob,2) – ruLPAD(s1,len,s2)在字符串 s1 的开始处填充字符串 s2使字符串长度达到 lenSELECT LPAD(abc,6,x) – xxxabcLTRIM(s)去掉字符串 s 开始处的空格SELECT LTRIM( a); – aMID(s,n,len)从字符串 s 的 n 位置截取长度为 len 的子字符串SELECT MID(RUNOOB, 2, 3); – UNOPOSITION(s1 IN s)从字符串 s 中获取 s1 的开始位置SELECT POSITION(b in abc) – 2REPEAT(s,n)将字符串 s 重复 n 次SELECT REPEAT(a,3) – aaaREPLACE(s,s1,s2)将字符串 s2 替代字符串 s 中的字符串 s1SELECT REPLACE(abc,a,x) --xbcREVERSE(s)将字符串s的顺序反过来SELECT REVERSE(abc) – cbaRIGHT(s,n)返回字符串 s 的后 n 个字符SELECT RIGHT(runoob,2) – obRPAD(s1,len,s2)在字符串 s1 的结尾处添加字符串 s2使字符串的长度达到 lenSELECT RPAD(abc,5,x) – abcxxRTRIM(s)去掉字符串 s 结尾处的空格SELECT RTRIM(RUNOOB ) ; – RUNOOBUCASE(s)将字符串转换为大写SELECT UCASE(runoob); – RUNOOBSPACE(n)返回 n 个空格返回 10 个空格SELECT SPACE(10);STRCMP(s1,s2)比较字符串 s1 和 s2如果 s1 与 s2 相等返回 0 如果 s1s2 返回 1如果 s1s2 返回 -1比较字符串SELECT STRCMP(runoob, runoob); -- 0SUBSTR(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串SELECT SUBSTR(RUNOOB, 2, 3); – UNO
3.3.2、数学函数 基本数学函数 函数名描述实例ABS(x)返回 x 的绝对值SELECT ABS(-1) – 1SQRT(x)返回x的平方根SELECT SQRT(25) – 5MOD(x,y)返回 x 除以 y 以后的余数SELECT MOD(5,2) – 1RAND()返回 0 到 1 的随机数SELECT RAND() CEILING(x)CEIL(x)向上取整SELECT CEILING(1.5); – 返回2FLOOR(x)向下取整SELECT FLOOR(1.5) – 返回1SIGN(x)返回 x 的符号负数、0、正数分别返回 -1、0 和 1SELECT SIGN(-10) – (-1)EXP(x)返回 e 的 x 次方SELECT EXP(3) – 20.085536923188GREATEST(e1, e2, e3, …)返回列表中的最大值SELECT GREATEST(3, 12, 34, 8, 25); – 34 SELECT GREATEST(ab, bb, cb); --cbLEAST(e1,e2,e3…)返回列表中的最小值SELECT LEAST(3, 12, 34, 8, 25); – 3LN返回数字的自然对数以 e 为底。SELECT LN(2); – 0.6931471805599453LOG(x) LOG(base, x)返回自然对数(以 e 为底的对数)如果带有 base 参数则 base 为指定带底数。SELECT LOG(20.085536923188) – 3SELECT LOG(2, 4); – 2LOG10(x)返回以 10 为底的对数SELECT LOG10(100) – 2LOG2(x)返回以 2 为底的对数SELECT LOG2(6); – 2.584962500721156PI()返回圆周率(3.141593SELECT PI() --3.141593POW(x,y)返回 x 的 y 次方2 的 3 次方SELECT POW(2,3) – 8POWER(x,y)返回 x 的 y 次方2 的 3 次方SELECT POWER(2,3) – 8ROUND(x)返回离 x 最近的整数SELECT ROUND(1.23456) --1TRUNCATE(x,y)返回数值 x 保留到小数点后 y 位的值与 ROUND 最大的区别是不会进行四舍五入SELECT TRUNCATE(1.23456,3) -- 1.234 三角函数 函数名描述实例RADIANS(x)将角度转换为弧度SELECT RADIANS(180) – 3.1415926535898SIN(x)求正弦值(参数是弧度)SELECT SIN(RADIANS(30)) – 0.4999…COS(x)求余弦值(参数是弧度)SELECT COS(2);TAN(x)求正切值(参数是弧度)SELECT TAN(1.75); COT(x)求余切值(参数是弧度)SELECT COT(6);ACOS(x)求 x 的反余弦值(参f数是弧度)SELECT ACOS(0.25);ASIN(x)求反正弦值(参数是弧度)SELECT ASIN(0.25);ATAN(x)求反正切值(参数是弧度)SELECT ATAN(2.5);ATAN2(n, m)求反正切值(参数是弧度)SELECT ATAN2(-0.8, 2);DEGREES(x)将弧度转换为角度SELECT DEGREES(3.1415926535898) – 180
3.3.3、聚合函数
聚合函数是对一组数据进行汇总的函数输入的是一组数据的集合输出的是单个值。
函数名使用描述实例COUNT(expression)适用于任意数据类型返回查询的记录总数expression 参数是一个字段或者 * 号为字段时会忽略null*不会忽略nullcount(*)包含所有列相当于行数不会忽略列值为null count(1)忽略所有列用1代表行不会忽略值为null的count(列名)只包括列名所在的列会忽略为null的行MAX(expression)对任意数据类型的数据使用返回字段 expression 中的最大值返回数据表 Products 中字段 Price 的最大值SELECT MAX(Price) AS LargestPrice FROM Products;MIN(expression)对任意数据类型的数据使用返回字段 expression 中的最小值返回数据表 Products 中字段 Price 的最小值SELECT MIN(Price) AS MinPrice FROM Products;SUM(expression)对数值型数据使用返回指定字段的总和计算 OrderDetails 表中字段 Quantity 的总和SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;AVG(expression)对数值型数据使用返回一个表达式的平均值expression 是一个字段返回 Products 表中Price 字段的平均值SELECT AVG(Price) AS AveragePrice FROM Products;count(*)count(1)count(列名)这三者对于MyISAM引擎的表是没有区别的因为MyISAM内部有一计数器在维护着行数。但是对Innodb引擎的表用count(* ),count(1)直接读行数复杂度是O(n)因为innodb真的要去数一遍但好于具体的count(列名)。 在使用时不要使用 count(列名)来替代 count() 因为 count( * ) 是 SQL92 定义的标准统计行数的语法跟数据库无关跟 NULL 和非 NULL 无关。count()会统计值为 NULL 的行而 count(列名)不会统计此列为 NULL 值的行。 3.3.4、日期函数 获取时间和日期 函数名描述实例CURDATE()返回当前日期年月日SELECT CURDATE(); - 2018-09-19CURRENT_DATE()返回当前日期年月日SELECT CURRENT_DATE(); - 2018-09-19CURTIME()返回当前时间时分秒SELECT CURTIME(); - 19:59:02CURRENT_TIME返回当前时间时分秒SELECT CURRENT_TIME(); - 19:59:02CURRENT_TIMESTAMP()返回当前日期和时间SELECT CURRENT_TIMESTAMP() - 2018-09-19 20:57:43LOCALTIMESTAMP()返回当前日期和时间SELECT LOCALTIMESTAMP() - 2018-09-19 20:57:43LOCALTIME()返回当前日期和时间SELECT LOCALTIME() - 2018-09-19 20:57:43NOW()返回当前日期和时间SELECT NOW() - 2018-09-19 20:57:43SYSDATE()返回当前日期和时间SELECT SYSDATE() - 2018-09-19 20:57:43DATE()从日期或日期时间表达式中提取日期值SELECT DATE(2017-06-15); - 2017-06-15 时间戳与日期的转化 函数名描述实例UNIX_TIMESTAMP()以UNIX时间戳的形式返回当前时间SELECT UNIX_TIMESTAMP(); - -1665668884UNIX_TIMESTAMP(date)将时间date以UNIX时间戳的形式返回。SELECT UNIX_TIMESTAMP(CURDATE()); - - 1665668956FROM_UNIXTIME(timestamp)将UNIX时间戳的时间转换为普通格式的时间SELECT FROM_UNIXTIME(1165668884); - - 2006-12-09 20:54:44 获取月份、星期、星期数、天数等函数 函数名描述实例YEAR(d)返回d年份SELECT YEAR(2017-06-15); - -2017MONTH(d)返回日期d的月份值1 到 12SELECT MONTH(2011-11-11 11:11:11) - -11DAY(d)返回日期d的天数SELECT DAY(2011-11-11 11:11:11); - -11DAYOFYEAR(d)计算日期 d 是本年的第几天SELECT DAYOFYEAR(2011-11-11 11:11:11) -315DAYNAME(d)返回日期 d 是星期几如 Monday,TuesdaySELECT DAYNAME(2011-11-11 11:11:11) -FridayDAYOFMONTH(d)计算日期 d 是本月的第几天SELECT DAYOFMONTH(2011-11-11 11:11:11) -11DAYOFWEEK(d)日期 d 是星期几1 星期日2 星期一以此类推SELECT DAYOFWEEK(2011-11-11 11:11:11) -6YEARWEEK(date, mode)返回年份及第几周0到53mode 中 0 表示周天1表示周一以此类推SELECT YEARWEEK(2017-06-15); - 201724FROM_DAYS(n)计算从 0000 年 1 月 1 日开始 n 天后的日期SELECT FROM_DAYS(1111) - 0003-01-16LAST_DAY(d)返回给给定日期的那一月份的最后一天SELECT LAST_DAY(2017-06-20); - 2017-06-30MAKEDATE(year, day-of-year)基于给定参数年份 year 和所在年中的天数序号 day-of-year 返回一个日期SELECT MAKEDATE(2017, 3); - 2017-01-03MONTHNAME(d)返回日期当中的月份名称如 NovemberSELECT MONTHNAME(2011-11-11 11:11:11) - NovemberPERIOD_ADD(period, number)为 年-月 组合日期添加一个时段SELECT PERIOD_ADD(201703, 5); - 201708PERIOD_DIFF(period1, period2)返回两个时段之间的月份差值SELECT PERIOD_DIFF(201710, 201703); - 7QUARTER(d)返回日期d是第几季节返回 1 到 4SELECT QUARTER(2011-11-11 11:11:11) - 4SUBDATE(d,n)日期 d 减去 n 天后的日期SELECT SUBDATE(2011-11-11 11:11:11, 1) -2011-11-10 11:11:11 (默认是天)TO_DAYS(d)计算日期 d 距离 0000 年 1 月 1 日的天数SELECT TO_DAYS(0001-01-01 01:01:01) - 366WEEK(d)计算日期 d 是本年的第几个星期范围是 0 到 53SELECT WEEK(2011-11-11 11:11:11) - 45WEEKDAY(d)日期 d 是星期几0 表示星期一1 表示星期二SELECT WEEKDAY(2017-06-15); - 3WEEKOFYEAR(d)计算日期 d 是本年的第几个星期范围是 0 到 53SELECT WEEKOFYEAR(2011-11-11 11:11:11) - 45ADDDATE(d,n)计算起始日期 d 加上 n 天的日期SELECT ADDDATE(2017-06-15,INTERVAL 10 DAY); – 2017-06-25ADDTIME(t,n)n 是一个时间表达式时间 t 加上时间表达式 n加 5 秒SELECT ADDTIME(2011-11-11 11:11:11, 5); -2011-11-11 11:11:16 (秒)添加 2 小时, 10 分钟, 5 秒:SELECT ADDTIME(2020-06-15 09:34:21, 2:10:5); - 2020-06-15 11:44:26DATEDIFF(d1,d2)计算日期 d1-d2 之间相隔的天数SELECT DATEDIFF(2001-01-01,2001-02-02) - -32DATE_ADD(dINTERVAL expr type)计算起始日期 d 加上一个时间段后的日期SELECT ADDDATE(2011-11-11 11:11:11,1) - 2011-11-12 11:11:11 (默认是天) SELECT ADDDATE(2011-11-11 11:11:11, INTERVAL 5 MINUTE) - 2011-11-11 11:16:11 (TYPE的取值与上面那个列出来的函数类似)DATE_FORMAT(d,f)按表达式 f的要求显示日期 dSELECT DATE_FORMAT(2011-11-11 11:11:11,%Y-%m-%d %r) - 2011-11-11 11:11:11 AMDATE_SUB(date,INTERVAL expr type)函数从日期减去指定的时间间隔。Orders 表中 OrderDate 字段减去 2 天SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders 时分秒 函数名描述实例HOUR(t)返回 t 中的小时值SELECT HOUR(1:2:3) - 1MAKETIME(hour, minute, second)组合时间参数分别为小时、分钟、秒SELECT MAKETIME(11, 35, 4); - 11:35:04MICROSECOND(date)返回日期参数所对应的微秒数SELECT MICROSECOND(2017-06-20 09:34:00.000023); - 23MINUTE(t)返回 t 中的分钟值SELECT MINUTE(1:2:3) - 2SECOND(t)返回 t 中的秒钟值SELECT SECOND(1:2:3) - 3SEC_TO_TIME(s)将以秒为单位的时间 s 转换为时分秒的格式SELECT SEC_TO_TIME(4320) - 01:12:00SUBTIME(t,n)时间 t 减去 n 秒的时间SELECT SUBTIME(2011-11-11 11:11:11, 5) -2011-11-11 11:11:06 (秒)TIME(expression)提取传入表达式的时间部分SELECT TIME(19:30:10); - 19:30:10TIME_FORMAT(t,f)按表达式 f 的要求显示时间 tSELECT TIME_FORMAT(11:11:11,%r) 11:11:11 AMTIME_TO_SEC(t)将时间 t 转换为秒SELECT TIME_TO_SEC(1:12:00)- 4320TIMEDIFF(time1, time2)计算时间差值SELECT TIMEDIFF(13:10:11, 13:10:10); - 00:00:01
3.3.5、条件判断函数
可以根据不同的条件执行不同的处理流程可以在SQL语句中实现不同的条件选择。
函数名描述实例IF(expr, v1 ,v2)如果表达式 expr 成立返回结果 v1否则返回结果 v2。SELECT IF(1 0,正确,错误) -正确IFNULL(v1,v2)如果 v1 的值不为 NULL则返回 v1否则返回 v2。SELECT IFNULL(null,Hello Word) -Hello WordCASE expression WHEN condition1 THEN result1 WHEN condition2 THEN result2 … WHEN conditionN THEN resultN ELSE result ENDCASE 表示函数开始END 表示函数结束。如果 condition1 成立则返回 result1, 如果 condition2 成立则返回 result2当全部不成立则返回 result而当有一个成立之后后面的就不执行了。SELECT CASE br /WHEN 1 0 THEN ‘1 0’ WHEN 2 0 THEN ‘2 0’ ELSE ‘3 0’ br /END -1 0
3.3.6、系統信息函数
函数名描述实例VERSION()返回数据库的版本号SELECT VERSION() USER()返回当前用户SELECT USER();SYSTEM_USER()返回当前用户SELECT SYSTEM_USER();SESSION_USER()返回当前用户SELECT SESSION_USER()CURRENT_USER()返回当前用户SELECT CURRENT_USER(); DATABASE()。SCHEMA()返回当前数据库名SELECT DATABASE(); - runoobCONNECTION_ID()返回唯一的连接 IDSELECT CONNECTION_ID(); - 4292835
3.3.7、其他函数 进制的转化 函数名描述实例BIN(x)返回 x 的二进制编码SELECT BIN(15); -- 1111HEX(X)返回 x 的十六进制编码SELECT HEX(15); --FOCT(x)返回x的八进制编码SELECT OCT(15); --17CONV(x,f1,f2)将f1 进制的x变成f2进制数SELECT CONV(15,10,16); --FBINARY(s)将字符串 s 转换为二进制字符串SELECT BINARY RUNOOB; - RUNOOB 加密 函数名描述实例PASSWORD(str)返回字符串str的加密版本41位长的字符串。加密结果不可逆 用于用户的密码加密MD5(str)md5加密SHA(str)从原明文密码str计算并返回加密后的密码字符串。 SHA加密算法比MD5更加安全 。ENCODE(value,password_seed)返回使用password_seed作为加密密码加密valueDECODE(value,password_seed)返回使用password_seed作为加密密码解密value 其他 函数名描述实例CAST(x AS type)转换数据类型字符串日期转换为日期SELECT CAST(2017-08-29 AS DATE); - 2017-08-29COALESCE(expr1, expr2, …, expr_n)返回参数中的第一个非空表达式从左向右SELECT COALESCE(NULL, NULL, NULL, runoob.com, NULL, google.com); - runoob.comCONVERT(s USING cs)函数将字符串 s 的字符集变成 csSELECT CHARSET(ABC) -utf-8 SELECT CHARSET(CONVERT(ABC USING gbk)) -gbkLAST_INSERT_ID()返回最近生成的 AUTO_INCREMENT 值SELECT LAST_INSERT_ID(); -6 NULLIF(expr1, expr2)比较两个字符串如果字符串 expr1 与 expr2 相等 返回 NULL否则返回 expr1SELECT NULLIF(25, 25);