基础函数
概述:MySQL提供了很多函数,可以快速操作数据。
各种函数的使用
–基本函数:lower \ upper \ lenght \ substr \ concat \ replace \ ifnull \ uuid
–小数的函数: round \ ceil \floor
--**日期的函数:**now \ year \month \ day \ hour \ minute \ second \ 转义字符
lower:
select lower(ename) from emp; 数据转小写
upper:
select upper(ename) from emp; 数据转大写
length:
select length(ename) from emp ; 数据的长度
substr:
select ename ,length(ename,1,3) from emp; 截取【1-3】
concat:
select ename,concat(ename,‘123’) from emp ; 拼接数据
replace:
select ename , replace(ename,‘a’,‘666’) from emp ; 把a字符偷换成666
ifnull :
select ifnull (comm ,13) comm from emp ; 判断,如果comm是null,用13替换
round:
select comm ,round (comm) from emp; 直接四舍五入取整
round:
select comm, ceil (round,1) from emp; 四舍五入并保留一位小数
ceil floor:
select comm , ceil(comm),floor(comm) from emp ; ceil 向上取整,floor向下取整
uuid:
select uuid() 返回uuid
now:
select now() 年与日,时分秒
select curdate()年与日
select curtime() 时分秒
转义字符:
’作为sql语句符号,内容中出现单撇就会乱套,进行转义即可
select ‘ab’cd’ – 单引号是一个SQL语句的特殊字符
select ‘ab’cd’ --数据中有单引号时,用一个\转义变成普通字符
条件查询
distinct \ where \ like \ order by \ limit
distinct:
使用distinct关键字,去除重复的记录行
select distinct loc from dept; # 给字段的值去重
where:
注意:where中不能使用列别名!!
select * from emp where 字段名=字段值;
select * from emp where ename='jack' ;#查ename是jack的数据
#查询id>200的所有数据的名字和工资总和
select sal,comm,ename,sal+ifnull(comm,0) from emp where id>200
#SQL执行的顺序:from > where > select
like:
模糊查询
select * from emp where ename like 'a';#条件相当于ename='a'
select * from emp where ename like '%a%';#中间包含着a
select * from emp where ename like 't%';#以t开始后面有几个都行
select * from emp where ename like '%y';#以y结束前面有几个都行
#between and :
select * from emp where sal>8000 and sal<20000
#过滤工资在[8000,20000]的
select * from emp where sal between 8000 and 20000#[8000,20000]
#order by 排序
select * from emp order by sal #默认升序,按数字的从小到大
select * from emp order by comm #默认升序,null放最上面
select * from emp order by ename #默认升序,按自然顺序
select * from emp order by hiredate #默认升序,按自然顺序
select * from emp ORDER BY sal desc #默认是升序,desc降序
#limit 分页技术
select * from emp limit 3 #只取前三条
select * from emp limit 1,3 #从第二条开始取,取总共3条
select * from emp limit 2,2 #从第三条开始取,取总共2条
#order by 排序
select * from emp order by sal #默认升序,按数字的从小到大
select * from emp order by comm #默认升序,null放最上面
select * from emp order by ename #默认升序,按自然顺序
select * from emp order by hiredate #默认升序,按自然顺序
select * from emp ORDER BY sal desc #默认是升序,desc降序
SQL的执行顺序?
from > where > order by > limit
聚合函数
–对一列的结果进行运算
–count \ sum \avg \max \min
select * from emp
select count(*) from emp #统计emp的记录总数-低效
select count(1) from emp #高效
select count(id) from emp #高效
select sal from emp
select max(sal) from emp #获取sal的最大值
select min(sal) from emp #获取sal的最小值
select avg(sal) from emp #获取sal的平均值
select sum(sal) from emp #获取sal的求和
#获取每个部门的,最高薪
select deptno,min(sal),max(sal) from emp group by deptno
#分组--聚合函数以外的列都需要分组