目录
一、常用函数
???1. 合计/统计函数
???2. 字符串相关函数
???3. 数学相关函数
? ? ? ? 4. 加密和系统函数
???5. 流程控制函数
二、最后的话
1.1 COUNT
用于统计表中记录(行)的数量,有COUNT(*)和COUNT(列)两种用法。
COUNT(*)用于统计表中所有记录(含空记录)的数量(行数)。
COUNT(列)用于统计表中某一列的数量,不统计为空的情况。
代码演示如下:
-- count(*)返回满足条件的记录的行数
SELECT COUNT(*) FROM student
WHERE math>=90;
-- count(列)后者返回满足条件且该列不为空的记录的行数
SELECT COUNT(`id`) FROM student;
1.2SUM
用于计算指定列数据的总和,有SUM(列)和SUM(表达式)两种用法。
代码演示如下:
-- 返回满足条件的记录的指定列数据的和
-- 求表中满足条件的对象的数学总成绩
SELECT SUM(math) FROM student
WHERE math>=80;
-- 分别求表中所有对象的数学总成绩,语文总成绩,英语总成绩
SELECT SUM(math),SUM(chinese),SUM(english)
FROM student;
-- 求表中所有对象的总成绩
SELECT SUM(math+english+chinese) AS total
FROM student;
-- 求表中所有对象的语文平均分
SELECT SUM(chinese)/COUNT(*) AS `avg chinese`
FROM student;
1.3AVG
一般用于求指定列的平均值。有SUM(列)和SUM(表达式)两种用法。
AVG(列) 相当于 SUM(列)/COUNT(列)
这里注意COUNT(列) 不统计空的哦。
代码演示如下:
-- 求一个班的数学平均分
SELECT AVG(math) FROM student;
-- 求一个班级的总分平均分
SELECT AVG(chinese + math + english) FROM student;
1.4MAX/MIN
用于求指定列的的最大值/最小值。
代码演示如下:
-- 求班级总分最高分和最低分
SELECT MAX(math+chinese+english) AS `NO.1`,
MIN(math+chinese+english) AS `No.-1`
FROM student;
1.5GROUP BY
用于对列进行分组统计。
代码演示如下:
-- GROUP BY语句 分组统计
-- 以表中的某一列分组
SELECT AVG(sal) FROM emp ; --直接求平均数求得是该列全部数据的平均数
SELECT AVG(sal),deptno --分组求平均数,求的是各个组数据的平均数
FROM emp GROUP BY deptno; -- 以deptno分组
-- 先以其中的某一列分组,再在分好组的基础上以其中另一列分组
SELECT AVG(sal),deptno,job -- 求各个组的各个分组的平均数
FROM emp GROUP BY deptno,job;
图解GROUP BY
1.6HAVING
通常和GROUP BY 一起用,用于对分好的组进行筛选。
代码演示如下:
-- HAVING 用于在分好的组中进行筛选
SELECT AVG(sal) AS avgsal,MAX(sal),MIN(sal),deptno,job
FROM emp GROUP BY deptno,job
HAVING avgsal>2000; -- 对已经分好组进行筛选
图解HAVING
基本用法及介绍:
代码演示如下:
-- DUAL 亚元表 系统表,可作为测试表使用
-- 字符串相关函数
-- CHARSET 返回字串字符集
SELECT CHARSET(ename) FROM emp;
-- CONCAT 拼接字串
SELECT CONCAT(ename,' 的工资为:',sal) FROM emp;
-- UCASE 转大写 LCASE 转小写
SELECT UCASE(ename) FROM emp;
SELECT LCASE(ename) FROM emp;
-- LENGTH 字串长度
SELECT LENGTH(ename) FROM emp;
-- REPLACE 替换字符 -- DUAL 亚元表 系统表,可作为测试表使用
/* 将zhang 替换成 li*/
SELECT REPLACE('zhangsan','zhang','li') FROM DUAL;
SELECT REPLACE(ename,'S','li') FROM emp;
-- SUBSTRING 截取字符
-- 从ename 中的第一个字符开始截取2个字符
SELECT SUBSTRING(ename,1,2) FROM emp;
-- LEFT RIGHT 从左边或者右边开始取指定个数字符
SELECT LEFT(ename,2) FROM emp;
SELECT RIGHT(ename,2) FROM emp;
-- INSTR 返回指定字符串片段出现的位置
SELECT INSTR('hello world','wo');
-- STRCMP 比较两字符串大小
-- 相同返回 0
SELECT STRCMP('1111221','1111') FROM DUAL;
-- LTRIM RTRIM TRIM 去除左端空格 右端空格 两端空格
SELECT LTRIM(' DFFDFE ') FROM DUAL;
SELECT LTRIM(' DFFDFE ') FROM DUAL;
SELECT LTRIM(' DFFDFE ') FROM DUAL;
基本用法及介绍:
代码演示如下:
-- 绝对值
SELECT ABS(-155) FROM DUAL;
-- 向上取整 比该数大的最小整数
SELECT CEILING(1.8) FROM DUAL;-- 2
SELECT CEILING(-1.8) FROM DUAL; -- -1
-- 向下取整 比该数小的最大整数
SELECT FLOOR(1.9) FROM DUAL;-- 1
SELECT FLOOR(-1.3) FROM DUAL;-- -2
-- 进制转换 --将十进制数字122转为二进制
SELECT CONV(122,10,2) FROM DUAL;
SELECT CONV(122,10,16) FROM DUAL;
-- 二进制转换 将十进制数字122转为2进制
SELECT BIN(122) FROM DUAL;
-- 转十六进制 将十进制数字122转为十六进制
SELECT HEX(122) FROM DUAL;
-- 保留小数位数
SELECT 12345.6789 FROM DUAL;
-- 将数字12345.678910 保留两位小数
SELECT FORMAT(12345.6789,2) FROM DUAL;--12345.67
-- 求最小值
SELECT LEAST(12,-10,34,4.0,0) FROM DUAL;-- -10
-- 取余 求16%3=?
SELECT MOD(16,3) FROM DUAL;-- 1
-- 随机数(范围 0-1)
-- 未指定种子是每次执行结果不同
SELECT RAND() FROM DUAL;
-- 指定种子后,每一执行结果相同
SELECT RAND(9.9) FROM DUAL; -- 种子可指定任意数字
基本用法及介绍:
代码演示如下
-- 加密函数
-- MD5加密 为字符串计算出一个 MD5 32字符
SELECT MD5('jack6666') FROM DUAL;
-- PASSWORD 加密函数
-- 常用于mysql数据库的用户密码加密
SELECT PASSWORD('jack6666') FROM DUAL;
-- 系统函数
-- 查询用户
SELECT USER() FROM DUAL; -- 查询结果为用户名@ip地址
-- 查询当前系统名称
SELECT DATABASE();
运行结果
基本用法及介绍:
代码演示如下:
-- 第一个为true 则返回A 反之返回B
SELECT IF(TRUE,'A','B') FROM DUAL;
SELECT IF(FALSE,'A','B') FROM DUAL;
-- 第一个不为空则返回第一个 反之返回第二个
SELECT IFNULL('A','B') FROM DUAL;
SELECT IFNULL(NULL,'B') FROM DUAL;
-- 从第一句开始判断 一直到为真时停止判断并返回
-- 对应的内容,若全部为假,则返回最后的值;
SELECT CASE
WHEN FALSE THEN 'A'
WHEN TRUE THEN 'B'
WHEN TRUE THEN 'C'
ELSE 'D' END;
原创不易,还希望各位大佬支持一下
??点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。