函数表:
| 1.统计合计函数 | 作用 |
|---|---|
| COUNT(*) | 返回满足条件记录的行数 |
| COUNT(列) | 返回行数,但不统计NULL |
| SUM() | 求总和 |
| AVG() | 求平均数 |
| MAX() | 求最大值 |
| MIN() | 求最小值 |
| 2.字符串函数 | 作用 |
|---|---|
| CHARSET() | 返回字串字符集 |
| CONCAT () | 连接字串 |
| UCASE() | 变大写 |
| LCASE() | 变小写 |
| LENGTH() | 字串长度 |
| REPLACE(str,search_str,replace_str) | 代替字窜 |
| SUBSTRING(str,position,[,length]) | 截取字串 |
| 3.数学函数 | 作用 |
|---|---|
| ABS() | 返回绝对值 |
| CEILING() | 向上取整 |
| FLOOR() | 向下取整 |
| FORMAT(num.decimal_places) | 保留小数位 |
| RAND([seed]) | 保留小数位 |
| 字符串函数 | 作用 |
|---|---|
| CHARSET() | 返回字串字符集 |
| CONCAT () | 连接字串 |
| UCASE() | 变大写 |
| LCASE() | 变小写 |
| LENGTH() | 字串长度 |
| REPLACE(str,search_str,replace_str) | 代替字窜 |
| SUBSTRING(str,position,[,length]) | 截取字串 |
文章目录
1.统计函数-COUNT
模板:

简单示例:
SELECT COUNT(*) FROM student;
SELECT COUNT(*) FROM student WHERE math>=80;


细节说明:
count(*)与count(列)的区别:
1.count(*)用于返回满足条件记录的行数。
2.count(列)统计满足条件记录的列又多少个,但是会排除NULL。即如果列数据中又NULL,则不算进去统计数。
2.合计函数-SUM-AVG-MAX-MIN
简单示例:
SELECT SUM(`math`) FROM studen

SELECT AVG(`math`) FROM student

SELECT MAX(math) FROM student

细节说明:
1.SUM仅对数值起作用,对其他数值类型没有意义
2.对多列求和,“,”号不能少
3.分组统计-使用统计函数
模板:


简单示例:
首先创建一个雇员emp表,并且插入一些信息:
#创建表EMP雇员
CREATE TABLE emp
(empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*编号*/
ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/
job VARCHAR(9) NOT NULL DEFAULT "",/*工作*/
mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,/*上级编号*/
hiredate DATE NOT NULL,/*入职时间*/
sal DECIMAL(7,2) NOT NULL,/*薪水*/
comm DECIMAL(7,2),/*红利*/
deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部门编号*/
) ;
-- drop table emp
INSERT INTO emp VALUES
(7369, 'SMITH', 'CLERK', 7902, '1990-12-17', 800.00,NULL , 20),
(7499, 'ALLEN', 'SALESMAN', 7698, '1991-2-20', 1600.00, 300.00, 30),
(7521, 'WARD', 'SALESMAN', 7698, '1991-2-22', 1250.00, 500.00, 30),
(7566, 'JONES', 'MANAGER', 7839, '1991-4-2', 2975.00,NULL,20),
(7654, 'MARTIN', 'SALESMAN', 7698, '1991-9-28',1250.00,1400.00,30),
(7698, 'BLAKE','MANAGER', 7839,'1991-5-1', 2850.00,NULL,30),
(7782, 'CLARK','MANAGER', 7839, '1991-6-9',2450.00,NULL,10),
(7788, 'SCOTT','ANALYST',7566, '1997-4-19',3000.00,NULL,20),
(7844, 'TURNER', 'SALESMAN',7698, '1991-9-8', 1500.00, NULL,30),
(7900, 'JAMES','CLERK',7698, '1991-12-3',950.00,NULL,30),
(7902, 'FORD', 'ANALYST',7566,'1991-12-3',3000.00, NULL,20),
(7934,'MILLER','CLERK',7782,'1992-1-23', 1300.00, NULL,10);
SELECT *FROM emp

由两个问题引出分组:

SELECT SUM(`sal`),AVG(`sal`),deptno FROM emp GROUP BY deptno


在这里插入代码片SELECT AVG(`sal`) AS avg_sal,deptno FROM emp GROUP BY deptno
HAVING avg_sal<2000;

个人理解:

如果没有搭配统计函数,极可能报错:

4.字符串函数
简单例子:
SELECT CHARSET(sal) FROM emp

SELECT CONCAT(ename,' ',job) FROM emp;

SELECT UCASE(sal) FROM emp;


SELECT empno,CONCAT(LCASE(SUBSTRING(ename,1,1)),SUBSTRING(ename,2)) FROM emp

5.数学函数



SELECT CURRENT_DATE() FROM DUAL

SELECT CURRENT_TIME() FROM DUAL

SELECT CURRENT_TIMESTAMP() FROM DUAL

小细节:


LAST_DAY()可以得到这个月的最后一天的日期
6.加密函数和系统函数

SELECT USER() FROM DUAL(查看登入到mysql的用户有哪些,以及登入ip)

SELECT DATABASE() FROM DUAL

SELECT MD5('wangjie') FROM DUAL(进行密码加密)

7.控制流程函数
加粗样式
SELECT IF(TRUE,12,23) FROM DUAL

小细节:

小例子:
CREATE TABLE t10(
id INT,
`name` VARCHAR(12));
INSERT INTO t10 VALUES(11,'clerk');
INSERT INTO t10 VALUES(12,'manager');
INSERT INTO t10 VALUES(13,'saleman');
INSERT INTO t10 VALUES(14,'clerk');
INSERT INTO t10 VALUES(15,'manager');
INSERT INTO t10 VALUES(16,'saleman');
SELECT *FROM t10

如何把表中的英文换成中文?
实现代码:
SELECT id,(SELECT CASE
WHEN `name` = 'clerk' THEN '书记'
WHEN `name` = 'manager' THEN '经理'
WHEN `name` = 'saleman' THEN '售货员'
ELSE `name` END) AS 'new'
FROM t10;

以上部分截取韩顺平老师java课程的PPT!










