MySQL总结

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值