Mysql查询语句,select,inner/left/right join on,group by.....[例题及答案]
创建如下表格,命名为stu_info, course_i, score_table.
题目:
有如图所示的三张表结构,学生信息表(stu_info),课程信息表(course_i),分数信息表(score_table)
题目:
1.查询出每个学生所选修的课程的数量和所选修的课程的考试的平均分
2.查询出每门课程的选修的学生的个数和学生考试的总分
3.查询出性别一样并且年龄一样的学生的信息
4.查询出学分一样的课程信息
5.查询出参加了考试的学生的学号,姓名,课程号和分数
6.查询出参加了考试的学生的学号,课程号,课程名,课程学分和分数
7.查询出没有参加考试的学生的学号和姓名
8.查询出没有学生选修(即没有学生考试)的课程编号、课程名和学分
9.查询出姓名中有字母a的学生的信息
10.查询出选修了2门课程以上的并且考试平均分在70以上的学生的学号和考试平均分以及选修课程的数量
原创答案,仅作参考:
-- 1.查询出每个学生所选修的课程的数量和所选修的课程的考试的平均分
SELECT stu_info.stu_name,COUNT(course_i.course_id),AVG(score_table.score) FROM course_i
INNER JOIN score_table ON course_i.course_id=score_table.course_id
LEFT JOIN stu_info ON score_table.stu_id=stu_info.stu_id GROUP BY score_table.stu_id;
-- 2.查询出每门课程的选修的学生的个数和学生考试的总分
SELECT course_i.course_name,COUNT(score_table.stu_id),SUM(score_table.score)FROM course_i
right JOIN score_table ON course_i.course_id=score_table.course_id
LEFT JOIN stu_info ON score_table.stu_id=stu_info.stu_id GROUP BY course_i.course_id;
-- 3.查询出性别一样并且年龄一样的学生的信息
SELECT s1.* FROM stu_info AS s1 LEFT JOIN stu_info AS s2
ON s1.stu_age=s2.stu_age and s1.stu_sex=s2.stu_sex
WHERE s1.stu_id!=s2.stu_id;
-- 4.查询出学分一样的课程信息
SELECT i1.* FROM course_i as i1 LEFT JOIN course_i as i2
ON i1.course_marks=i2.course_marks WHERE i1.course_id!=i2.course_id
GROUP BY i1.course_id;
-- 5.查询出参加了考试的学生的学号,姓名,课程号和分数
SELECT stu_info.stu_id,stu_info.stu_name,score_table.course_id,score_table.score
FROM stu_info LEFT JOIN score_table
ON stu_info.stu_id=score_table.stu_id;
-- 6.查询出参加了考试的学生的学号,课程号,课程名,课程学分和分数
SELECT stu_info.stu_id,stu_info.stu_name,score_table.course_id,
course_i.course_name,course_i.course_marks,score_table.score
FROM stu_info LEFT JOIN score_table
ON stu_info.stu_id=score_table.stu_id
LEFT JOIN course_i ON score_table.course_id=course_i.course_id;
-- 7.查询出没有参加考试的学生的学号和姓名
SELECT stu_id,stu_name FROM stu_info
WHERE stu_id not in (SELECT stu_id FROM score_table);
-- 8.查询出没有学生选修(即没有学生考试)的课程编号、课程名和学分
SELECT * FROM course_i WHERE course_id
NOT in (SELECT course_id FROM score_table);
-- 9.查询出姓名中有字母a的学生的信息
SELECT * FROM stu_info WHERE stu_name LIKE "%a%";
-- 10.查询出选修了2门课程以上的并且考试平均分在70以上的学生的学号和考试平均分以及选修课程的数量
SELECT score_table.stu_id,AVG(score_table.score),COUNT(score_table.course_id)
FROM score_table GROUP BY stu_id HAVING AVG(score_table.score)>70;
Mysql查询语句,select,inner/left/right join on,group by.....[例题及答案]的更多相关文章
- MySQL查询语句(select)详解(2)
7.子查询 当进行查询的时候,需要的条件是另外一个select语句的结果,这时候就要用到子查询 用于子查询的主要关键字有:in,not in,=,!=,exists,not exists等. 以下两张 ...
- MySQL查询语句(select)详解(1)
1.查询记录 select*from 表名 [where 条件];eg:select*from students;//查询 students 表中所有记录,所有字段的值都显示出来select fiel ...
- SQL复杂查询语句-SELECT * FROM cs WHERE score>70 GROUP BY s_id HAVING COUNT(*)>1
如果同时存在where,group by,的时候的执行顺序应该是这样的: 1,首先where后面添加条件把数据进行了过滤,返回一个结果集 2,然后group by将上面返回的结果集进行分组,返回一个结 ...
- MySQL查询语句执行过程及性能优化(JOIN/ORDER BY)-图
http://blog.csdn.net/iefreer/article/details/12622097 MySQL查询语句执行过程及性能优化-查询过程及优化方法(JOIN/ORDER BY) 标签 ...
- MySQL查询语句执行过程及性能优化-查询过程及优化方法(JOIN/ORDER BY)
在上一篇文章MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介中介绍了EXPLAIN语句,并举了一个慢查询例子:
- MYSQL查询语句大全集锦
MYSQL查询语句大全集锦 1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2.创建一个数据库MYSQLDATA mysql> C ...
- php面试专题---MYSQL查询语句优化
php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存) ...
- Mysql查询语句执行过程
Mysql查询语句执行过程 Mysql分为server层和存储引擎两部分,或许可以再加一层连接层 连接层(器) Mysql使用的是典型的C/S架构.连接器通过典型的TCP握手完成连接. 需要注 ...
- mysql查询语句理解
看一个查询语句 ,)) as passcount FROM (SELECT b.user,b.full_name,b.user_group From login_log a LEFT JOIN vic ...
- mysql查询语句,通过limit来限制查询的行数。
mysql查询语句,通过limit来限制查询的行数. 例如: select name from usertb where age > 20 limit 0, 1; //限制从第一条开始,显示1条 ...
随机推荐
- 【Linux基础总结】Linux基本命令
Linux基本命令 Linux系统下的文件类型.权限.所属用户与组 文件类型 - (文件) d(目录) ->类似windows系统下的文件夹 l (链接) ->类似windows系统下的快 ...
- 通过10个实例小练习,快速熟练 Vue3.0 核心新特性
Vue3.0 发 beta 版都有一段时间了,正式版也不远了,所以真的要学习一下 Vue3.0 的语法了. GitHub 博客地址: https://github.com/biaochenxuying ...
- Excel:公式转数值
跨Workbook引用有些危险,有时要把公式转换为数值.修改频繁,有时也要把公式转换为数值. 方法一,选中区域,复制Ctrl+C,选择性粘贴Ctrl+Alt+V,数值V.方法二,选中区域,复制Ctrl ...
- python3语法学习第五天--函数(1)
函数:函数能提高应用的模块性,和代码的重复利用率,是一段可重复使用的代码块 自定义函数: 1.函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 2.任何传入参数和自变量必须放在圆括 ...
- hdu4035 Maze 题解
/* 设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望. E[i] = ki*E[1] + (1-ki-ei)*E[fa[i]] + (1-ki-ei); E[i] = ki*E[1] + ( ...
- Spring源码解析02:Spring IOC容器之XmlBeanFactory启动流程分析和源码解析
一. 前言 Spring容器主要分为两类BeanFactory和ApplicationContext,后者是基于前者的功能扩展,也就是一个基础容器和一个高级容器的区别.本篇就以BeanFactory基 ...
- Java开发架构篇《初识领域驱动设计DDD落地》
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 DDD(Domain-Driven Design 领域驱动设计)是由Eric Eva ...
- 读懂操作系统(x64)之堆栈帧(过程调用)
前言 上一节内容我们对在32位操作系统下堆栈帧进行了详细的分析,本节我们继续来看看在64位操作系统下对于过程调用在处理机制上是否会有所不同呢? 堆栈帧 我们给出如下示例代码方便对照汇编代码看,和上一节 ...
- mysql小白系列_09 mysql性能优化关键点
一 服务器参数调优,有哪些关键点? 1. 应用访问优化 优化方法 性能提升效果 优化成本 说明 减少数据访问能不访问就不访问-减少磁盘IO 1~1000 低 缓存服务器缓存mysql数据,Redis. ...
- 解决el-tree横向滚动条问题
代码如下 效果如图 仅做下记录,不做过多解释