【MySQL数据库进阶】⾯试考题两⼤查询(聚合查询,联合查询)MySQL进阶
⽂章⽬录
⼀、聚合查询
聚合查询⽤到的函数和⽤法跟Excel的⽤法很像,如果你Excel玩的NB,那你基本上联合查询,就很轻松了。
聚合查询是跟⾏相关的,把查询结果按照⾏的维度进⾏合并,就是把多⾏合并起来。
1.1聚合函数
聚合查询也提供了很多的聚合函数,可以理解成SQL给我们提供的“库函数”。
函数说明
COUNT([DISTINCT] expr)返回查询到的数据的 数量
mysql语句多表查询SUM([DISTINCT] expr)返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)返回查询到的数据的 最⼤值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数据的 最⼩值,不是数字没有意义COUNT
-- 查询当前表有多少⾏
select count(*)from表明;
-- 如果属性是null,那么这条属性不计数
select count(属性)from表明;
SUM
-- 计算数学总分
SELECT SUM(math)FROM exam_result;
-- 不及格 < 60 的总分,没有结果,返回 NULL
SELECT SUM(math)FROM exam_result WHERE math <60;
AVG
-- 统计平均总分
SELECT AVG(chinese + math + english)平均总分FROM exam_result;chopsticks翻译
MAX
flink java教程-- 返回英语最⾼分
SELECT MAX(english)FROM exam_result;
MIN
-- 返回 > 70 分以上的数学最低分
SELECT MIN(math)FROM exam_result WHERE math >70;
1.2 group by
上⾯的聚合函数是把所有的⾏都合并起来,那么group by就是⽤来进⾏分组聚合,每⼀个组再进⾏聚合函数来计算或统计。案例:
查询每个⾓⾊的最⾼⼯资、最低⼯资和平均⼯资
通过group by来进⾏分组查询
通过 role这个字段来分组
c程序hello world代码select role from teachers group by role;
运⾏结果:
查询每个⾓⾊的最⾼⼯资、最低⼯资和平均⼯资
select role,max(salary),min(salary),avg(salary)from teachers group by role;
运⾏结果:
1.3Having
group by分组过后的数据,需要⽤Having来进⾏条件的筛选,where是分组之前进⾏的条件筛选。
案列:
查询每个⾓⾊的最⾼⼯资> 4500
select role,max(salary)from teachers group by role having max(salary)>4500;
activex控件怎么启用360浏览器运⾏结果:
聚合查询相对来说是⽐较好理解的,Excel⽤的熟练那么你的聚合查询也差不到哪去,主要注意⾥⾯的group by。
⼆、联合查询
2.1笛卡尔积
联合查询也称作为多表查询,多表查询是对多张表的数据取笛卡尔积。意思就是把两个表的结果进⾏⼀个排列组合。 笛卡尔积也是在联合查询中⼀个核⼼概念。
什么是笛卡尔积
笛卡尔积就是把两张表产⽣的所有可能的结果都列出来,形参新的⼀张表。
这张表的列数,是两张表的列数之和
这张表的⾏数,是两张表的⾏书之积
笛卡尔积会列出很多种可能所以⾥⾯就很存在不科学的数据,我们需要过滤掉这些不科学的数据就会加上连接条件来过滤这些多余的数据,留下这些合理的数据。
那些是合理的数据尼
所谓合理的数据就是两张表⾥⾯会有对应相等的数据
nginx面试10问知道了笛卡尔积就可以来练习了
假设我创建了⼀个数据库,⾥⾯有 classes, course, score, student;
student 和classes这件事⼀堆多的关系
student和course之间是多对多的关系,多对多关系时就会有⼀个中间表score,来连接这两个表实体之间的关系
student表:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论