1. MySQL 中的运算符
1.1 算术运算符
MySQL 支持的算术运算符
运算符 | 作用 |
---|---|
+ | 加法 |
- | 减法 |
/,DIV | 除法,返回商 |
%,MOD | 除法,返回余数 |
除法运算和模运算中,如果除数为0,将是非法除数,返回结果为NULL
对于模运算,还有另外一种表达方式,使用MOD(a,b)函数与a%b 效果一样。
1.2 比较运算符
MySQL 支持的比较运算符
运算符 | 作用 |
---|---|
= | 等于 |
<>或!= | 不等于 |
<=> | NULL安全的等于(NULL-safe) |
< | 小于 |
> | 大于 |
>= | 大于等于 |
BETWEEN | 存在与指定范围 |
IN | 存在于指定集合 |
IS NULL | 为NULL |
IS NOT NULL | 不为NULL |
LIKE | 通配符匹配 |
REGEXP或RLIKE | 正则表达式匹配 |
1.3 逻辑运算符
MySQL 中的逻辑运算符
运算符 | 作用 |
---|---|
NOT或! | 逻辑非 |
AND或&& | 逻辑与 |
OR或 || | 逻辑或 |
XOR | 逻辑异或 |
1.4 位运算符
运算符 | 作用 |
---|---|
& | 位与(位AND) |
| | 位或(位OR) |
^ | 位异或(位 XOR) |
~ | 位取反 |
>> | 位右移 |
<< | 位左移 |
1.5 运算符的优先级
优先级顺序 | 运算符 |
---|---|
1 | := |
2 | I,OR,XOR |
3 | &&,AND |
4 | NOT |
5 | BETWEEN,CASE,WHEN,THEN,ELSE |
6 | =,<>,>=,>,<=<心,l=IS,LIKE REGEXP,IN |
7 | \ |
8 | & |
9 | <<,>> |
10 | -,= |
11 | */,DIV,%,MOD |
12 | ^ |
13 | -(一元减号),~(一元比特反转) |
14 | ! |
2. 常用函数
2.1 字符串函数
MySQL 中的常用字符串函数
函数 | 功能 |
---|---|
CANCAT(S1,S2...Sn) | 连接S1,52..Sn为一个字符串 |
INSERT(str,x,y,instr) | 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr |
LOWER(str) | 将字符串str中所有字符变为小写 |
UPPER(Str) | 将字符串str中所有字符变为大写 |
LEFT(Str,x) | 返回字符串str最左边的x个字符 |
RIGHT(Str,x) | 返回字符串str最右边的x个字符 |
LPAD(str,n,pad) | 用字符串pad对str最左边进行填充,直到长度为n个字符长度 |
RPAD(Str,n,pad) | 用字符串pad对str最右边进行填充,直到长度为n个字符长度 |
LTRIM(Str) | 去掉字符串str左侧的空格RTRIM(Str) |
REPEAT(Str,x) | 返回str重复x次的结果 |
REPLACE(Str,a,b) | 用字符串b替换字符串str中所有出现的字符串a |
STRCMP(S1,52) | 比较字符串s1和52 |
TRIM(Str) | 去掉字符串行尾和行头的空格 |
SUBSTRING(Str,X,y) | 返回从字符串strx位置起y个字符长度的字串 |
2.2 数值函数
MySQL 中的常用数值函数
函数 | 功能 |
---|---|
ABS(x) | 返回x的绝对值 |
CEIL(x) | 返回大于x的最大整数值 |
FLOOR(x) | 返回小于x的最大整数值 |
MOD(x,y) | 返回x/y的模 |
RAND() | 返回0到1内的随机值 |
ROUND(x,y) | 返回参数x的四舍五入的有y位小数的值 |
TRUNCATE(x,y) | 返回数字x截断为y位小数的结果 |
2.3 日期和时间函数
MySQL中的常用日期时间函数
函数 | 功能 |
---|---|
CURDATE() | 返回当前日期CURTIME() |
NOW() | 返回当前的日期和时间 |
UNIX_TIMESTAMP(date) | 返回日期date的UNIX时间戳 |
FROM_UNIXTIME | 返回UNIX时间戳的日期值 |
WEEK(date) | 返回日期date为一年中的第几周 |
YEAR(date) | 返回日期date的年份 |
HOUR(time) | 返回time的小时值 |
MINUTE(time) | 返回time的分钟值 |
MONTHNAME(date) | 返回date的月份名 |
DATE_FORMAT(date,fmt) | 返回按字符串fmt格式化日期date值 |
DATE_ADD(date,INTERVAL expr type) | 返回一个日期或时间值加上一个时间间隔的时间值 |
DATEDIFF(expr,expr2) | 返回起始时间expr和结束时间expr2之间的天数 |
MySQL中的日期格式
格式符 | 格式说明 |
---|---|
%S,%s | 两位数字形式的秒(00,01..,59) |
%i | 两位数字形式的分(00,01..,59) |
%H | 两位数字形式的小时,24小时(00,01..,23) |
%h,%l | 两位数字形式的小时,12小时(01,02.…12) |
%k | 数字形式的小时,24小时(0,1..,23)%l |
%T | 24小时的时间形式(hh:mm:ss) |
%r | 12小时的时间形式(hh:mm:ssAM或hh:mm:ssPM) |
%p | AM或PM |
%w | 一周中每一天的名称(Sunday,Monday.…,Saturday) |
%a | 一周中每一天名称的缩写(Sun,Mon.……Sat) |
%d | 两位数字表示月中的天数(00,01.,31) |
%e | 数字形式表示月中的天数(1,2,…,31) |
%D | 英文后缀表示月中的天数(1st,2nd,3rd..…) |
%w | 以数字形式表示周中的天数(0=Sunday,1=Monday.…,6=Saturday) |
%j | 以3位数字表示年中的天数(001,002.,366) |
%U | 周(0,1,52),其中Sunday为周中的第一天%u |
%M | 月名(January,February.,December) |
%b | 缩写的月名(January,February.…,December) |
%m | 两位数字表示的月份(01,02.…,12) |
%c | 数字表示的月份(1,2.…12) |
9%Y | 4位数字表示的年份 |
%y | 两位数字表示的年份 |
%% | 直接值“%” |
MySQL 中的日期间隔类型
表达式类型 | 描述 | 格式 |
---|---|---|
HOUR | 小时 | hh |
MINUTE | 分 | |
SECOND | 秒 | 5s |
YEAR | 年 | YY |
MONTH | 月MM | |
DAY | 日 | DD |
YEAR_MONTH | 年和月 | YY-MM |
DAY_HOUR | 日和小时 | DDhh |
DAY_MINUTE | 日和分钟 | DDhh:mm |
DAY_SECOND | 日和秒 | DD hh:mm:ss |
HOUR_MINUTE | 小时和分 | hh:mm |
HOUR_SECOND | 小时和秒 | hh:ss |
MINUTE_SECOND | 分钟和秒 | mm:ss |
2.4 流程函数
MySQL 中的流程函数
函数 | 功能 |
---|---|
IF(value,t, f) | 如果value是真,返回t;否则返回f |
IFNULL(value1,value2) | 如果value1不为空返回 value1,否则返回 value2 |
CASE WHEN[value1] THEN[result1]..ELSE[defaultJEND | 如果value1是真,返回result1,否则返回default |
CASE[expr]WHEN[value1] default THEN[result1]..ELSE[default]END | 如果expr等于value1,返回 result1,否则返回 |
IF(value,t,f)函数:我们认为月薪在2000 元以上的职员属于高薪,用“high”表示;而
2000 元以下的职员属于低薪,用“low”表示。
select if(salary>2000,'high','low') from salary;
IFNULL(value1,value2)函数:这个函数一般用来替换NULL 值的,我们知道NULL 值是不
能参与数值运算的,下面这个语句就是把NULL 值用0 来替换。
select ifnull(salary,0) from salary;
CASE WHEN [value1] THEN[result1]…ELSE[default]END 函数:
select case when salary<=2000 then 'low' else 'high' end from salary;
CASE [expr] WHEN [value1] THEN[result1]…ELSE[default]END 函数:
select case salary when 1000 then 'low' when 2000 then 'mid' else 'high' end from
salary;
2.5 其他常用函数
MySQL 中的其他常用函数
函数 | 功能 |
---|---|
DATABASE() | 返回当前数据库名 |
VERSION() | 返回当前数据库版本 |
USER() | 返回当前登录用户名 |
INET_ATON(IP) | 返回lP地址的数字表示 |
INET_NTOA(num) | 返回数字代表的IP地址 |
PASSWORD(Str)返回字符串str的加密版本 MD5()|返回字符串str的MD5值
INET_ATON(IP)和INET_NTOA(num)函数主要的用途是将字符串的IP 地址转换为数字表示的网络字节序,这样可以更方便地进行IP 或者网段的比较。