-
单行函数(部分,具体可参考帮助文档)
1.1 数值函数
ABS(X) 取绝对值 , SIGN(X)取符号(正数返回一,负数返回-1,零返回0)
PI() 返回圆周率的值 , CEIL(X)/CEILING(X) 向上取整 , FLOOR(X)向下取整
LEAST(e1,e2,e3…)获取最小值 GREATEST(e1,e2,e3…)获取最大值
MOD(x,y)取余 ,相当于 x%y RAND() 取1以内的随机数, RAND(X),取固定的"随机数"
ROUND(X) 四舍五入 , ROUND(X,Y)四舍五入,保留Y位 ,如果Y为负,在整数里四舍五入如:ROUND(123 ,-1)=120 , ROUND(153,-2) =200
TRUNCATE(X,Y)截断 ,和上面的ROUND类似,只不过不会四舍五入.
SQRT(X),开根号 , RANDIANS(X)角度转化为弧度, DEGREES(X)弧度转化为角度
SIN(X) ,返回X的正弦值, ASIN(X)返回X的反正弦值
COS(X),返回X的余弦值,ACOS(X)返回X的反余弦值
TAN(X),返回X的正切值,ATAN(X)返回X的反正切值
ATAN2(m,n) 返回两个参数的反正切值
COT(X) 返回X的余切值
POW(X,Y)/POWER(X,Y) 取指数 即 X的Y次方 , EXP(X) 以e为底的指数 即 e的X次方
LN(X)/LOG(X) 以 e为底的对数函数 , LOG2(X) 以2为底的对数函数, LOG10(X)以10为底的对数函数.
BIN(X) 转化为2进制 , HEX(X)转化为16进制 , OCT(X) 转化为8进制
CONV(x,f1,f2) 将 f1 进制 的X 转化为 f2进制1.2 字符串函数
ASCII(X)获得其ASCII值 , CHAR_LENGTH(X)获取字符串长度 LENGTH(X)获取字符串所占字节
CONCAT(X,X2,X3…)连接所有字符串 CONCAT_WS(Y,X,X2,X3…)使用字符串Y连接所有字符串
INSERT(Str,X,Y,str2) 将Str中的第X到第Y个字符替换为str2(字符串的索引是从一开始的)
REPLACE(str,a,b)将str中的字符串替换为b字符串
UPPER(X)将字符串变为大写 , LOWER(X)将字符串变为小写
LEFT(X,n) 从左开始,取n个字符, RIGHT(X,n)从右开始,取N个字符
…略…1.3 日期和时间函数
CURDATE() 获取当前日期的 年月日
CURTIME() 获取当前日期的 时分秒
NOW() 获取当前系统日期和时间
UNIX_TIMESTAMP() 获取当前时间的时间戳
UNIX_TIMESTAMP(date)获取指定时间的时间戳
FROM_UNIXTIME(timestamp) 将时间戳转化为普通格式的时间
…略…
1.4 流程控制函数
IF(VALUE,VALUE1,VALUE2) VALUE成立返回VALUE1否则返回VALUE2
IFNULL(VALUE1,VALUE2) 如果VALUE1不为NULL返回VALUE1 否则返回VALUE2
CASE WHEN 条件 THEN …WHEN … THEN … ELSE … END 当WHEN成立执行后面的THEN,都不成立执行ELSE(相当于if -else)
CASE expr WHEN 常量 1THEN … WHEN 常量2 THEN… WHEN… THEN… ELSE … END (相当于switch case)
1.5 加密函数
MD5(X)对 X进行加密 , SHA(X) 对 X进行加密 -
聚合函数
SUM(X) 查询到所有的X的总和, AVG(X)查询到所有X的平均值
MAX(X)查询到所有X的最大值 , MIN(X) 查询到所有X的最小值
COUNT(*) 查询结果的行数, COUNT(1) 查询结果的行数
COUNT(字段名)查询结果中该字段的行数(不包括空值,即NULL)
以上几个函数,都会自动忽略空值
GROUP BY 字段名, 根据字段名分组,然后查询 (SELECT 中出现的字段(菲钻石),必须出现在GROUP BY中, 而GROPU 中出现的字段, 可以不出现在SELECT中)
HAVING …条件 类似于WHERE…条件 跟在GROUP BY 的后面
当条件中有聚合函数时,需要使用HAVING , 没有聚合函数两个都可以使用,建议用在WHERE中(HAVING适用范围更高,WHERE效率更高) -
SQL原理
总体SQL写法
SELECT (DISTINCT) ... , ...(可以有聚合函数)
FROM .... (RIGHT/LEFT) JOIN .... ON 多表连接条件
WHERE .... (AND/OR...)不包含聚合函数的过滤条件
GROUP BY ... , ...
HAVING 包含聚合函数的过滤条件
ORDER BY .. ,... (ASC/DESC) 排序
LIMIT ... ,...(LIKE)
SQL执行顺序
FROM -> ON->JOIN->WHERE->GROUP BY ->HAVING->SELECT->DISTINCT->ORDER BY ->LIMIT