1.count :返回行的总数。select count(*) 或者 count(列名) from 表名 count (*) 返回满足条件的记录的行数。count (列) 统计满足条件的某列有多少个,但是会排除 为null。
CREATE TABLE t16(
`name` VARCHAR(20));
INSERT INTO t16 VALUES('tom');
INSERT INTO t16 VALUES('jack');
INSERT INTO t16 VALUES('mary');
INSERT INTO t16 VALUES(NULL);
SELECT * FROM t16;
SELECT COUNT(*) FROM t16;
SELECT COUNT(`name`) FROM t16;
2.sum函数返回满足where条件的行的和,一般只用在数值列。select sum(列名) from 表名
SELECT SUM(math + english + chinese) FROM student;
3.avg函数返回满足where条件的一列的平均值。select avg(列名) from 表名
SELECT AVG(math + english + chinese) FROM student;
4.max/min函数返回满足where条件的一列最大值/最小值。select max(列名) from 表名
SELECT MAX(math + english + chinese),MIN(math + english + chinese)
FROM student;
5.使用group by子句对列进行分组。select 列名 from 表名 group by 列名 使用having子句对分组后的结果进行过滤。select 列名 from 表名 group by 列名 having...
SELECT AVG(sal),MIN(sal),deptno,job
FROM emp GROUP BY deptno,job;
SELECT AVG(sal),deptno
FROM emp GROUP BY deptno
HAVING AVG(sal) < 2000;
6. 字符串函数 dual 亚元表 可以作为测试表使用
CHAREST(str) 返回字串字符集
SELECT CHARSET(ename) FROM emp;
CONCAT() 连接字串,将多个列拼接成一列
SELECT CONCAT(ename,' 工作是 ',job) FROM emp;
INSTR(string,substring) 返回substring在string中出现的位置,没有返回0
SELECT INSTR('xiaoming','ming') FROM DUAL;
UCASE() 转换成大写
SELECT UCASE(ename) FROM emp;
LCASE() 转换成小写
SELECT LCASE(ename) FROM emp;
LEFT(string2,length) 从string2中的左边起取length个字符。RIGHT(string2,length) 从string2中的右边起取length个字符。
SELECT LEFT(ename,2) FROM emp;
SELECT RIGHT(ename,2) FROM emp;
LENGTH() 长度[按照字节]
SELECT LENGTH(ename) FROM emp;
REPLACE() 替换
SELECT ename,REPLACE(job,'MANAGER','经理') FROM emp;
STRCMP(string1,string2) 逐字符比较两字串大小。
SELECT STRCMP('hi','sjk') FROM DUAL;
SUBSTRING(str,position [,length]) 从str的position开始【从1开始计算】,去length个字符
SELECT SUBSTRING(ename,1,2) FROM emp;
LTRIM(string) RTRIM(string) TRIM(string) 去除前端空格或后端空格或两端空格
SELECT LTRIM(' hi') FROM DUAL;
SELECT RTRIM('hi ') FROM DUAL;BIN(decimal_number) 十进制转二进制
SELECT BIN(10) FROM DUAL;
SELECT TRIM(' hi ') FROM DUAL;
7.数字函数
ABS() 绝对值
SELECT ABS(-10) FROM DUAL;
BIN() 十进制转二进制
SELECT BIN(10) FROM DUAL;
HEX() 转十六进制
SELECT HEX(10) FROM DUAL;
CEILING(num) 向上取整,得到比num大的最小整数
SELECT CEILING(1.1) FROM DUAL;
FLOOR(num) 向下取整,得到比num小的最大整数
SELECT FLOOR(1.1) FROM DUAL;
CONV(num,from_base,to_base) 进制转换
SELECT CONV(8,10,2) FROM DUAL;
FORMAT() 保留小数位数(四舍五入)
SELECT FORMAT(12.3456789,3) FROM DUAL;
LEAST(num,numr2...) 求最小值
SELECT LEAST(1,2,3,-1,-5,-10) FROM DUAL;
MOD() 求余
SELECT MOD(10,3) FROM DUAL;
RAND() 每次返回不同的随机数,其范围为 0 ≤ v ≤ 1.0
RAND([种子数]) 返回随机数,范围 0 ≤ v ≤ 1.0 ,如果种子数不变,该随机数也不变。
SELECT RAND() FROM DUAL;
SELECT RAND(6) FROM DUAL;
8.日期函数
URRENT_DATE() 当前日期
SELECT CURRENT_DATE() FROM DUAL;
CURRENT_TIME() 当前时间
SELECT CURRENT_TIME() FROM DUAL;
CURRENT_TIMESTAMP() 当前时间戳
SELECT CURRENT_TIMESTAMP() FROM DUAL;
DATE(dateime) 返回datetime的日期部分
DATE_ADD() 加上日期或时间
DATE_SUB() 减去一个时间
DATEDIFF(date1,date2) 两个日期差(结果是天)
TIMEDIFF(date1,date2) 两个时间差(多少小时多少分钟多少秒)
NOW() 当前时间
SELECT id,content,DATE(send_time)
FROM mes;
SELECT *
FROM mes
WHERE DATE_ADD(send_time,INTERVAL 10 MINUTE) >= NOW()
SELECT *
FROM mes
WHERE send_time >= DATE_SUB(NOW(),INTERVAL 10 MINUTE)
SELECT DATEDIFF('2011-11-11','1999-01-01') FROM DUAL;
%Y-%m-%d %H:%i:%s表示年月日 时分秒
FROM_UNIXTIME() 可以把一个unix_timestamp 秒数[时间戳],转成指定格式的日期
unix_timestamp() 返回的是1970-1-1 到现在的秒数
SELECT FROM_UNIXTIME(1634389692,'%Y-%m-%d %H:%i:%s') FROM DUAL;
SELECT UNIX_TIMESTAMP() FROM DUAL;