目录前言一、MySQL函数的使用1、单行函数二、MySQL的分组三、分页以及查询关键字的执行顺序四、子查询1、where子查询2、from子查询五、表连接1、内连接2、(左)外连接3、自连接前言书接上...
前言
书接上文,今天学习查询的进阶操作,包括。内容比较实用,建议收藏或者订阅专栏方便学习和复习。
一、MySQL函数的使用
- mysql中内置了很多函数,每个函数都代表一个特定功能
1、单行函数
- 特点:每行数据都会产生一个对应的结果
表中有多少行,就会有多少行的结果
- 位置:
select
之后,from
之前 或作为筛选条件
1.concat(…,列名,…,列名)
用来拼接多列的值
例如:以firstname+lastname的形式显示所有员工的姓名
2.mod(值1,值2)
求值1和值2的取余结果 ,相当于数学运算中的 %(值1%值2)
- 标准SQL规范中不存在%取余的写法,所以取余操作应该使用mod()
- 例如:
select mod(10,3) from dual
注: dual
为,作用为使当前SQL符合语法规范,不写时会做自动填充
3.length(列名|数据)
获取长度
查询所有firstname长度>6的员工信息
4.now() | sysdate()
获取系统当前时间
2、多行函数(组函数)
- 以组为单位获取结果,一组得到一个结果
- 如果未手动进行分组,则默认整张表为一组
1.sum(列名)
求某一列的总和
2.avg(列名)
求某一列的平均值
3.max(列名)
求某一列的最大值
4.min(列名)
求某一列的最小值
5.count(列名)
求某一列值的个数(非空)
示例:
二、MySQL的分组
在MySQL中一个组就是一个操作单位
1.简单分组
以部门为单位求每个部门的平均薪资
2.where + 分组
3.having + 分组
4.分组中 where 和 having 的区别
- where是在分组前执行,having是在分组后执行
- where不能在分组时使用组函数,但是having可以
- 当两者都可使用时,优先使用where,效率更高
三、分页以及查询关键字的执行顺序
1.limit:用来限制显示的查询结果条数,通常用于分页查询
查询所有员工数据的前十条
下标为0时可以省略
- 当limit和其他查询关键字联用时,limit一定最后执行
四、子查询
- 当一个SQL需要借助于另一个SQL的执行结果,在当前SQL中嵌套另一个SQL,该写法称为子查询
1、where子查询
1.1、单值子查询
嵌套的子SQL只会返回一行一列的结果
- 子SQL需写入小括号
1.2、多值子查询 嵌套的子SQL会返回多个结果
2、from子查询
将子SQL的查询结果临时看做一张表进行后续操作
五、表连接
- 当查询结果需要从多张表中获取时,则需要将多张表连接起来进行查新操作
- 多张表之间必须存在关联关系(外键)
- 外键通常连接的是另一张表的主键
- 在进行表连接时作为连接条件使用
1、内连接
语法:
- 特点:对两张表同时进行约束,只有当所有表都符合连接条件,才会显示信息
- 使用:
inner
可省
2、(左)外连接
语法:
- 特点:只对右表做约束,左表中的数据都会显示,右表中只有符合连接条件的才会显示
- 使用:
outer
可省 - 左外连接和右外连接就是
left
和right
的不同,位置不同,通常用左外连接 - 使用:
- 将两个查询结果进行合并显示
查询语句1 union
查询语句2
- 使用:
union
会对合并结果进行union all
不会对结果去重- :合并双方都不做约束
3、自连接
- 概念:是特殊的表连接,参与连接的是同一张表
表中的某两个字段之间存在关联关系
判断同一字段,作为连接条件
到此这篇关于MySQL查询进阶从函数到表连接的使用的文章就介绍到这了,更多相关MySQL函数表连接内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!