- 数据函数
| 名称 | 描述 |
|---|
| CEIL() | 进一取整 |
| FLOOR() | 舍一取整 |
| MOD() | 取余数(取模) |
| POWER() | 幂运算 |
| ROUND() | 四舍五入 |
| TRUNCATE() | 数学截取 |
| ABS() | 取绝对值 |
| PI() | 圆周率 |
| RAND()和RAND(x) | 返回0~1之间随机数,X相同时返回的随机数相同 |
| SIGN(x) | 返回X的符号,X为负数、0、正数时分别返回-1、0、1 |
| EXP(x) | 计算e的几次方 |
- 字符串函数
| 函数名称 | 描述 |
|---|
| CHAR_LENGTH(S) | 返回字符串的字符数 |
| LENGTH | 返回字符串的长度 |
| CONCAT(S1,S2… | 将字符串合并为一个字符串 |
| CONCAT_WS(X,S1,S2…) | 以指定分隔符连接字符串 |
| UPPER(S)/UCASE(S) | 将字符串转换为大写 |
| LOWER(S)/LCASE(S) | 将字符串转换为小写 |
| LEFT(S,N)/RIGHT(S,N) | 返回字符串的前/后n个字符 |
| LPAD(S1,LEN,S2)/RPAD(S1,LEN,S2) | 将字符串S1用S2填充到指定的LEN |
| LTRIM(S)/RTRIM(S)/TRIM(S) | 去掉字符串中的空格 |
| TRIM(S1 FROM S) | 去掉字符串s中开始处和结尾处的字符串s1 |
| REPEAT(S,N) | 重复字符串指定次数 |
| SPACE(N) | 返回N个空格 |
| REPLACE(S,S1,S2) | 将字符串S中搜索S1,替换成S2 |
| STRCMP(S1,S2) | 比较字符串,>=<分别返回1,0,-1 |
| SUBSTRING(S,N,LEN | 截取字符串 |
| REVERSE(S) | 反转字符串 |
| ELT(N,S1,S2…) | 返回指定位置的字符串 |
- 日期时间函数
| 名称 | 描述 |
|---|
| CURDATE(),CURRENT_DATE() | 返回当前日期 |
| CURTIME(),CURRENT_TIME() | 返回当前时间 |
| NOW() | 返回当前日期和时间 |
| MONTH(D) | 返回日期中月份的值 |
| MONTHNAME(D) | 返回日期中月份名称,如January |
| DAYNAME(D) | 返回日期是几,如Monday |
| DAYOFWEEK(D) | 返回一周内的第几天,1代表星期日 |
| WEEKDAY(D) | 返回日期是星期几,0代表星期一 |
| WEEK(D) | 一年中的第几个星期 |
| YEAR(D) | 返回年份值 |
| HOUR(T) | 返回小时值 |
| MINUTE(T) | 返回分钟值 |
| SECOND(T) | 返回秒数 |
| DATEDIFF(D1,D2) | 计算两个日期之间相隔的天数 |
- 条件判断函数
| 名称 | 描述 |
|---|
| IF(EXPR,V1,V2) | 如果表达式EXPR成立,返回结果V1;否则V2 |
| IFNULL(V1,V2) | 如果V1的不为空,就显示V1的值;否则V2 |
| CASE WHERE exp1 THEN v1 [WHERE exp2] THEN v2 [ELSE vn] END | CASE表示函数开始,END表示函数结束。如果表达式exp1成立时,返回v1;如果表达式exp2成立时,返回v2的值;以此类推,最后遇到ELSE时,返回vn的值 |
- 系统信息函数
| 名称 | 描述 |
|---|
| VERSION() | 返回数据库的版本号 |
| CONNECTION_ID() | 返回服务器的连接数 |
| DATABASE(),SCHEMA() | 返回当前数据库名 |
| USER(),SYSTEM_USER() | 返回当前用户 |
| CURRENT_USER(),CURENT)USER | 返回当前用户 |
| CHARSET(STR) | 返回字符串STR的字符集 |
| COLLATION(STR) | 返回字符串STR的校验字符集 |
| LAST_INSERT_ID() | 返回最近生成的AUTO_INCREMENT的值 |
- 加密函数
| 名称 | 描述 |
|---|
| MD5(str) | 信息摘要算法 |
| PASSWORD(str) | 密码算法 |
| ENCODE(str,pwd_str) | 加密结果是一二进制数,必须使用BLOB类型字段保存 |
| DECODE(crypt_str,pwd_str) | 对通过ENCODE加密之后的内容解密 |
- 其它常用函数
| 名称 | 描述 |
|---|
| FORMAT(x,n) | 将数字x进行格式化,将x保留到小数点后n位 |
| ASCII(s) | 返回字符串s的第一个字符的ASCII码 |
| BIN(x) | 返回x的二进制编码 |
| HEX(x) | 返回x的十六进制编码 |
| OCT(x) | 返回x的八进制编码 |
| CONV(x,f1,f2) | 将x从f1进制数变成f2进制数 |
| INET_ATON(IP) | 将IP地址转换成数字 |
| INET_NTOA(n) | 将数字转换成IP地址 |
| GET_LOCT(name,time) | 定义锁 |
| RELEASE_LOCK(name) | 解锁 |
- 算数运算符
| 符号 | 表达式 | 作用 |
|---|
| + | X1+X2… | 加法 |
| - | X1-X2 | 减法 |
| * | X1*X2 | 乘法 |
| / | X1/X2 | 除法 |
| DIV | X1 DIV X2 | 除法 |
| % | X1 % X2 | 取余 |
| MOD | X1 MOD X2 | 取余 |
SELECT 1+1;
SELECT 2*4,4/2,3/8;
SELECT 3/0;
- 比较运算符
结果是“真,假”两种形式
| 符号 | 表达式 | 作用 |
|---|
| = | X1=X2 | 判断是否相等 |
| <>,!= | X1<>X2,X1!=X2 | 判断是否不相等 |
| <=> | X1<=>X2 | 判断是否相等,可以判断是否等于NULL |
| >,>= | X1>X2,X1>=X2 | 判断是否大于等于 |
| <,<= | X1<X2,X1<=X2 | 判断是否小于等于 |
| IS NULL,IS NOT NULL | X1 IS NULL | 判断是否等于NULL |
| BETWEEN AND,NOT BETWEEN | x1 BETWEEN m AND n | 判断是否在范围内 |
| IN,NOT IN | X1 IN(值1,…) | 判断是否在某一个固定范围内 |
| LIKE,NOT LIKE | X1 LIKE 表达式 | 判断是否匹配 |
| REGEXP | X1 REGEXP | 判断是否正则匹配 |
- 逻辑运算符
| 符号 | 形式 | 作用 |
|---|
| &&或者AND | 与 | 并且 |
| ||或者OR | 或 | 或者 |
| !或者NOT | 非 | 取反 |
| XOR | 异或 | 不同为真 |
- 运算符的优先级
可以通过()改变优先级
| 优先级 | 运算符 | 优先级 | 运算符 |
|---|
| 1 | ! | 8 | | |
| 2 | ~ | 9 | =,<=>,<,<=,>,>=,!=,<>,IN,IS NULL,LIKE,REGEXP |
| 3 | ^ | 10 | BETWEEN AND,CASE,WHERE,THEN,ELSE |
| 4 | *,/,% | 11 | NOT |
| 5 | +,- | 12 | &&,AND |
| 6 | >>,<< | 13 | ||,OR,XOR |
| 7 | & | 14 | ;= |