MYSQL聚合函数
1:AVG
AVG ([DISTINCT] expr) 返回expr的平均值,DISTINCT选项可用于返回expr 的不同值的平均值,
查询teacher_tab表中教师的平均年龄:
select AVG (age) from teacher_tab ;
2:COUNT:
COUNT (expr)
返回SELECT 语句检索到行中非NULL值的数目。不论其否包含NULL值。
SELECT COUNT (*) FROM TEACHER_TAB ;返回检索行的数目。
SELECT COUNT (NAME) FROM TEACHER_TAB :返回SELECT语句检索到行中非NULL值。
3:MIN/MAX
返回最大最小值。
查询teacher_tab中年龄的最大值与最小值并用别名区别:
select min(age) as 最小值 ,max(age) as 最大值 from teacher_tab ;
4:SUM
求总数
求teacher_tab中,教师年龄的总和
select sum(age) from teacher_tab;
二:MSQ控制流程函数:
CASE
如果没有匹配的结果值,则返回结果为else后的结果,如果没有else部分,则返回值为null。
select case 1 when 1 then '男' when 2 then '女'else '小白' end as result;
判断case的值如果为1返回男,2返回女,其他返回小白。
IF
IF (expr1,expr2,expr3) 如果expr1是true ,则if ()的返回值为expr2,否则返回值为expr3;
select if (1>2, 'yes','no');
IFNULL
假如expre1 不为null ,则IFNULL()返回值为expr1 ;否则返回 0 。
select ifnull (course ,0) from teacher_tab;
查询所有教授的课,如果是空则用0代替。
NULLIF
NULLIF (expr1,expre2)
如果expre1=expre2 成立,那么返回null,否则返回expre1;
select nullif(1,1);
MYSQL字符串函数
1:CHAR_LENGTH
返回字符串的长度,长度单位是字符。
select char_length ("wang");
2:FORMAT
FORMAT(X,D)
将数字X的格式写为#.###.###.##,以四舍五入的方式保留小数点后D为,并将结果以字符串的形式返回,若D为0 ,则返回结果不带有小数点,或不含小数部分。
select format (1234.123456,0); (不保留小数点后面的数)
select format (1234.123456,3); (保留小数点后三位)
3:INSERT
替换插入
select insert ('xiaobai is a dog',14,3,'cat');
返回的结果为: xiaobai is a cat
4:INSTR
INSTR (str, substr) 返回字符串str中子字符串第一次出现的位置。
select instr ('xiaobai is a dog','is');
5:LEFT/RIGHT
LEFT:LEFT(str, len)
返回从字符串str开始的len最左字符串。
select left ('asdfghjkl',3);
RIGHT (str,len);
返回从字符串str开始的len最右字符串。
select right ('xiaobai',4);
6:LENGTH
LENGTH (str);返回值为字符串str的长度,单位为字节,一个多字节字符算作多字节。
select length ('世界');结果为6 在mysql中一个字符占三个字节
注意其与char_length ()的区别:
select char_length('世界'); 结果为2;
7:LTRIM/RTRIM/TRIM
LTRIM (str) :返回字符串str ,左边(引导)空格字符串被删除
select ltrim(' hello');
RTRIM (str) :返回字符串str ,右边(结尾)空格字符串被删除
select rtrim(' hello ');
TRIM : (可以设置参数默认去掉两边的空格,字符等)
select trim(' hello ');
去掉指定字符串前面的字符如下结果为barxxxx
select trim(leading'x' from 'xxxbarxxxx');
去掉指定字符串后面的字符如下结果为xxxxxbar
select trim(trailing 'x' from 'xxxxxbarxxxx');
8: STRCMP
若所有的字符串均相同,则返回0,若根据当前分类次序,第一个参数小于第二个,则返回-1,其它情况返回1.
9:CONCAT
返回结果为连接参数产生的字符串。如果任何一个为null则返回值为null
select concat ('My','S','Q','L');
10:SUBSTRING
字符串截取函数 :
select substring('xiaobai',4); (从第四个开始截取剩余的字符串也可以添加参数获取截取长度)。
也可以指定参数为负数,如下:
select substring('xiaobai',-3); 表示从后面开始截取长度为三的字符串。
时间日期函数的使用:
1:求指定某一天是周几 (周天是1)
select dayofweek('2015-12-20');
2:dayofyear (data):
返回data对应的一年中的天数,范围是1到366
3:select dayofyear('2015-12-20');
4:dayofmonth (data)
返回某一月的天数
5:weekday (date)
返回工作日对应的索引(从0到6开始(周一为0))
6:year & month
求年份:
select year(now());
求月份: select month(now());
quter (date)
返回date对应的一年中的季度值
select quarter(now());
7:Hour ,minute & second
select hour(now());
select minute(now());
select second(now());
8:curdtate & curtime,now()
Curdate()将当前日期按照yyy-mm-dd 或yyyymmdd格式的值返回,具体格式根据函数在字符串或数字语句中而定。
以yyy-mm-dd形式表示方式返回当前系统时间
select curdate();
以yyyymmdd的方式返回系统当前时间
select curdate()+0;
curtime () 返回当前系统的时分秒时间
select curtime();
now ()
返回完全的时间