本文整理自网络,侵删。
目录
- 前言
- 一、MySQL函数的使用
- 1、单行函数
- 二、MySQL的分组
- 三、分页以及查询关键字的执行顺序
- 四、子查询
- 1、where子查询
- 2、from子查询
- 五、表连接
- 1、内连接
- 2、(左)外连接
- 3、自连接
前言
书接上文,今天学习查询的进阶操作,包括函数、分组、分页、子查询和表连接。内容比较实用,建议收藏或者订阅专栏方便学习和复习。
一、MySQL函数的使用
- mysql中内置了很多函数,每个函数都代表一个特定功能
1、单行函数
- 特点:每行数据都会产生一个对应的结果
表中有多少行,就会有多少行的结果
- 位置:
select
之后,from
之前 或作为筛选条件
1.concat(…,列名,…,列名)
用来拼接多列的值
例如:以firstname+lastname的形式显示所有员工的姓名
select concat(first_name,last_name) as 全名 from employees
2.mod(值1,值2)
求值1和值2的取余结果 ,相当于数学运算中的 %(值1%值2)
- 标准SQL规范中不存在%取余的写法,所以取余操作应该使用mod()
- 例如:
select mod(10,3) from dual
注: dual
为虚拟表,作用为使当前SQL符合语法规范,不写时会做自动填充
3.length(列名|数据)
获取长度
查询所有firstname长度>6的员工信息
select * from employees where length(first_name)>6
4.now() | sysdate()
获取系统当前时间
select now() select SYSDATE() select now() from dual
2、多行函数(组函数)
- 以组为单位获取结果,一组得到一个结果
- 如果未手动进行分组,则默认整张表为一组
1.sum(列名)
求某一列的总和
2.avg(列名)
求某一列的平均值
3.max(列名)
求某一列的最大值
4.min(列名)
求某一列的最小值
5.count(列名)
求某一列值的个数(非空)
示例:
-- 组函数操作salary select SUM(salary) 总和,AVG(salary) 平均值,MAX(salary) 最大值,min(salary) 最小值,COUNT(salary) 非空值的数量 from employees -- 计算表中绩效列不为空的员工数量 select COUNT(commission_pct) from employees -- 求表中的行数 select COUNT(*) from employees select COUNT(employee_id) from employees
二、MySQL的分组
在MySQL中一个组就是一个操作单位
1.简单分组
select 列名 from 表名 group by 列名
以部门为单位求每个部门的平均薪资
select department_id,AVG(salary) 平均薪资 from employees group by department_id
2.where + 分组
-- 查询部门id为10、20、30的部门的平均薪资、 select department_id,AVG(salary) 平均薪资 from employees where department_id in(10,20,30) -- 先筛选 GROUP BY department_id -- 后分组查询
3.having + 分组
select department_id,AVG(salary) 平均薪资 from employees group by department_id -- 先分组 having department_id in(10,20,30) -- 后筛选
4.分组中 where 和 having 的区别
- where是在分组前执行,having是在分组后执行
- where不能在分组时使用组函数,但是having可以
- 当两者都可使用时,优先使用where,效率更高
三、分页以及查询关键字的执行顺序
1.limit:用来限制显示的查询结果条数,通常用于分页查询
select 列名 from 表名 limit 显示的起始下标,显示条数
查询所有员工数据的前十条
select * from employees limit 0,10 select * from employees limit 10 下标为0时可以省略
下标为0时可以省略
- 当limit和其他查询关键字联用时,limit一定最后执行
查询的执行顺序:
语法顺序 执行顺序 select 5 from 1 where 2 group by 3 having 4 order by 6 limit 7
四、子查询
- 当一个SQL需要借助于另一个SQL的执行结果,在当前SQL中嵌套另一个SQL,该写法称为子查询
1、where子查询
1.1、单值子查询
相关阅读 >>
关于mysql 查看当前使用的配置文件my.cnf的方法讲解
更多相关阅读请进入《mysql》频道 >>
数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » MySQL查询进阶操作从函数到表连接的使用
标签:mysql
相关推荐
评论
管理员已关闭评论功能...