1.数学函数
- ABS(x) :求绝对值
- SQRT(x) : 求二次方根
- MOD(x,y) : 求余数,返回x被y除后的余数
- CEIL(x) 和CEILING(x) : 向上取整,返回不小于x的最小整数
- FLOOR(x) : 向下取整,返回值转化为一个BIGINT
- RAND(x) : 生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列
- ROUND : ROUND(x) 返回最接近于 x 的整数;ROUND(x,y) 对x进行四舍五入的操作,返回值保留小数点后面指定的y位。
- SIGN (X): 返回参数的符号,x 的值为负、零和正时返回结果依次为 -1、0 和 1
- POW和POWER :所传参数的次方的结果值,计算 x 的 y 次方
- SIN (X): 求正弦值,x 为弧度值
- ASIN(X) : 求反正弦值,与SIN互为反函数,若 x 不在 -1 到 1 的范围之内,则返回 NULL
- COS : 求余弦值,x 为弧度值
- ACOS : 求反余弦值,与COS互为反函数,若 x 不在 -1 到 1 的范围之内,则返回 NULL
- TAN : 求正切值
- ATAN : 求反正切值,与TAN互为反函数
- COT :求余切值
ASCII(str):返回字符串str 的最左字符的数值。假如str为空字符串,① 则返回值为 0 。假如str 为NULL,则返回值为 NULL。 ASCII()用于带有从 0到255的数值的字符。
3、聚集函数
(1)如果在没有返回匹配行 SELECT 语句中使用 SUM 函数,则 SUM 函数返回 NULL,而不是 0。
(2)DISTINCT 运算符允许计算集合中的不同值。
(3)SUM 函数忽略计算中的 NULL 值。
(4)提示:SUM() 函数在计算时,忽略列值为 NULL 的行。
4、日期和时间函数
CURDATE() 和 CURRENT_DATE():返回当前系统的日期值。“CURDATE()+0”将当前日期值转换为数值型的
CURTIME() 和 CURRENT_TIME():返回当前系统的时间值
NOW() 和 SYSDATE() :返回当前日期和时间值。 NOW() 取的是语句开始执行的时间,而 SYSDATE() 取的是语句执行过程中动态的实时时间。
时间选取函数:
选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒
YEAR(date):返回date的年份
MONTH(date) :返回date的月份,范围1到12。
MONTHNAME(date) :返回date的英文月份名字。
DAYNAME(date) :返回date的英文星期名字。
WEEKDAY(date) :返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
WEEK():计算日期 date 是一年中的第几周。WEEK(date,mode) 函数允许指定星期是否起始于周日或周一,以及返回值的范围是否为 0~52 或 1~53。WEEK函数接受两个参数:date是要获取周数的日期。mode是一个可选参数,用于确定周数计算的逻辑
DAYOFWEEK(date) :返回 date对应的一周中的索引(位置)。1到7表示周日到周六。
DAYOFMONTH(date) :返回date的月份中日期,在1到31范围内。
DAYOFYEAR(date) :返回date在一年中的日数, 在1到366范围内。
QUARTER(date) :返回date一年中的季度,范围1到4。
TIME_TO_SEC(time) :将时间值转换为秒值 SEC_TO_TIME(seconds) :将秒值转换为时间格式
UNIX_TIMESTAMP(date) 若无参数调用,返回一个无符号整数类型的 UNIX 时间戳('1970-01-01 00:00:00'GMT之后的秒数)。
FROM_UNIXTIME(date) 函数把 UNIX 时间戳转换为普通格式的日期时间值,与UNIX_TIMESTAMP(date) 函数互为反函数。
DATE_ADD(date,INTERVAL expr type) 和 ADDDATE(date,INTERVAL expr type) 两个函数的作用相同,都是用于执行日期的加运算。date 是 DATE 或 DATETIME 的起始值。INTERVAL expr type是要添加到起始日期值的间隔值。
DATE_SUB(date,INTERVAL expr type) 和 SUBDATE(date,INTERVAL expr type) 两个函数作用相同,都是执行日期的减法运算。
ADDTIME(time,expr) 函数用于执行时间的加法运算(time 是一个时间或日期时间表达式,expr 是一个时间表达式)。
SUBTIME(time,expr) 函数用于执行时间的减法运算
DATEDIFF(date1,date2) 返回起始时间 date1 和结束时间 date2 之间的天数。date1 和 date2 为日期或 date-and-time 表达式。计算时只用到这些值的日期部分。
DATE_FORMAT(date,format) 函数是根据 format 指定的格式显示 date 值。DATE_FORMAT() 函数接受两个参数:date:是要格式化的有效日期值,format:是由预定义的说明符组成的格式字符串,每个说明符前面都有一个百分比字符(%)。
%a 工作日的缩写名称 (Sun..Sat) %b 月份的缩写名称 (Jan..Dec) %c 月份,数字形式(0..12) %D 带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, …) %d 该月日期, 数字形式 (00..31) %e 该月日期, 数字形式(0..31) %f 微秒 (000000..999999) %H 小时(00..23) %h 小时(01..12) %I 小时 (01..12) %i 分钟,数字形式 (00..59) %j 一年中的天数 (001..366) %k 小时 (0..23) %l 小时 (1..12) %M 月份名称 (January..December) %m 月份, 数字形式 (00..12) %p 上午(AM)或下午( PM) %r 时间 , 12小时制 (小时hh:分钟mm:秒数ss 后加 AM或PM) %S 秒 (00..59) %s 秒 (00..59) %T 时间 , 24小时制 (小时hh:分钟mm:秒数ss) %U 周 (00..53), 其中周日为每周的第一天 %u 周 (00..53), 其中周一为每周的第一天 %V 周 (01..53), 其中周日为每周的第一天 ; 和 %X同时使用 %v 周 (01..53), 其中周一为每周的第一天 ; 和 %x同时使用 %W 工作日名称 (周日..周六) %w 一周中的每日 (0=周日..6=周六) %X 该周的年份,其中周日为每周的第一天, 数字形式,4位数;和%V同时使用 %x 该周的年份,其中周一为每周的第一天, 数字形式,4位数;和%v同时使用 %Y 年份, 数字形式,4位数 %y 年份, 数字形式 (2位数) %% ‘%’文字字符
5.其他函数
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值
格式:CAST(xxx AS 类型) ,CONVERT(xxx,类型)
类型可以是以下值其中的一个:
二进制 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
FNULL(v1,v2)是 MySQL 控制流函数之一,如果不是 NULL,则返回第一个参数, 否则,IFNULL 函数返回第二个参数。两个参数可以是文字值或表达式。
IF(expr,v1,v2)语句允许您根据表达式的某个条件或值结果来执行一组 SQL 语句。要在 MySQL 中形成一个表达式,可以结合文字,变量,运算符,甚至函数来组合。表达式可以返回 TRUE,FALSE 或 NULL,这三个值之一。表达式 expr 得到不同的结果,当 expr 为真是返回 v1 的值,否则返回 v2.
CASE语句分为简单的和可搜索 CASE 语句。
简单的 CASE 语句就是指使用简单 CASE 语句来检查表达式的值与一组唯一值的匹配:
CASE <表达式> WHEN <值1> THEN <操作> WHEN <值2> THEN <操作> ... ELSE <操作> END CASE;
<表达式> 可以是任何有效的表达式。我们将 <表达式> 的值与每个 WHEN 子句中的值进行比较,例如 <值1>,<值2> 等。如果 <表达式> 和 <值n> 的值相等,则执行相应的 WHEN 分支中的命令 <操作>。如果 WHEN 子句中的 <值n> 没有与 <表达式> 的值匹配,则 ELSE 子句中的命令将被执行。ELSE 子句是可选的。 如果省略 ELSE 子句,并且找不到匹配项,MySQL 将引发错误。
可搜索CASE语句:
CASE WHEN <条件1> THEN <命令> WHEN <条件2> THEN <命令> ... ELSE commands END CASE;
MySQL 分别计算 WHEN 子句中的每个条件,直到找到一个值为 TRUE 的条件,然后执行 THEN 子句中的相应 <命令>。如果没有一个条件为 TRUE,则执行 ELSE 子句中的 <命令>。如果不指定 ELSE 子句,并且没有一个条件为 TRUE,MySQL 将发出错误消息。MySQL 不允许在 THEN 或 ELSE 子句中使用空的命令。 如果您不想处理 ELSE 子句中的逻辑,同时又要防止 MySQL 引发错误,则可以在 ELSE 子句中放置一个空的 BEGIN END 块。