mysql语法讲解_mysql关键语法讲解

三张表,学生表,课程表,学生_课程表

GROUP BY

满足 SELECT子句中的列明必须为分组列或列函数

列函数对于group by 子句定义的每个组返回一个结果

这两句话的含义,看具体的例子:

根据student表,student_course表查询所有同学的学号、选课数、总成绩,

首先,我们根据查询的条件得知,需要按照学号进行分组,即

GROUP BY student_id

然后,需要查询的是学号、选课数、总成绩

SELECT student_id,count(course_id),sum(score)

最后,要从student_courese表中查询

FROM student_course

最后我们只要把以上三句拼凑起来,就可以得到我们最终的查询语句:

#查询所有同学的学号、选课数、总成绩SELECTstudent_id,count(course_id),

sum(score)FROMstudent_courseGROUP BYstudent_id;

再看看上面的两点是如何体现的:

列函数对于group by的子句定义的每个组返回一个结果,这里的group by后的条件是student_id,那么最后的结果是按照student_id进行分组的。

如果用group by,那么select语句中选出的列要么是group by 中使用到的列,要么就是聚集函数,如sum(), min(), max(), count()等。

注意,以上两点仅对单表有效。

如果是多表联合查询,比如,上面的结果还需要显示stduent表中的student_name:

SELECTsc.student_id,stu.student_name,count(sc.course_id)FROMstudent_course sc,student stuWHEREsc.student_id=stu.idGROUP BYsc.student_id;

这时,我们发现,select语句中的stu.student_name并不是group by中的条件或者是聚集函数,不过可以知道的是,这个name和group by中的student_id所属的表并不是同一张表,而是另外的student表。

Having

通常与group by子句一起使用

where过滤行,having过滤组

出现在同一sql的顺序:where > group by > having

查询平均成绩大于60分的同学的学号和平均成绩

使用上面的分析方法:

按学号分组:

GROUP BY student_id

查询平均成绩和学号:

SELECT student_id,avg(score)

条件是平均成绩大于60,可以分析出这个是针对每个学生的,所以要用having进行分组过滤

HAVING avg(score) > 60

从student_course表查询

FROM student_course

最后,把语句拼接起来:

SELECTstudent_id,avg(score)FROMstudent_courseGROUP BYstudent_idHAVING

avg(score) > 60

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值