MySQL之子查询、连接查询(内&外)以及分页查询

这篇具有很好参考价值的文章主要介绍了MySQL之子查询、连接查询(内&外)以及分页查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、案例(接上一篇文章)

        09)查询学过「张三」老师授课的同学的信息

-- 一共有两种方式
-- 第一种方式:
SELECT s.*,c.cname,t.tname,sc.score 
FROM
	t_mysql_teacher t,
	t_mysql_course c,
	t_mysql_student s,
	t_mysql_score sc
WHERE
	t.tid = c.tid
	and c.cid = sc.cid
	and sc.sid = s.sid
	and t.tname = '张三'
-- 	第二种方式:
-- select * from t_mysql_student where sid in(
-- select sid from t_mysql_score where cid=(select cid from t_mysql_course where tid=
-- (select tid  from t_mysql_teacher where tname='张三')))

MySQL之子查询、连接查询(内&外)以及分页查询,MySQL,mysql,数据库

        10)查询没有学全所有课程的同学的信息 

SELECT
	s.sid,s.sname,count(sc.score) n
FROM
	t_mysql_student s LEFT JOIN 
	t_mysql_score sc ON s.sid = sc.sid
GROUP BY s.sid,s.sname
HAVING n < (SELECT count(*) from t_mysql_course) 

MySQL之子查询、连接查询(内&外)以及分页查询,MySQL,mysql,数据库

        11)查询没学过"张三"老师讲授的任一门课程的学生姓名

SELECT
	s.sid,s.sname 
FROM
	t_mysql_score sc,t_mysql_student s 
WHERE
	s.sid = sc.sid 
	AND sc.cid NOT IN ( SELECT cid FROM t_mysql_course c, t_mysql_teacher t WHERE c.tid = t.tid AND t.tname = '张三' ) 
GROUP BY
	s.sid,s.sname

MySQL之子查询、连接查询(内&外)以及分页查询,MySQL,mysql,数据库

        12)查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

SELECT
	s.sid,s.sname,ROUND(avg( sc.score ),2) 平均成绩
FROM
	t_mysql_student s,t_mysql_score sc 
WHERE
	s.sid = sc.sid and sc.score < 60
GROUP BY
	s.sid,s.sname

MySQL之子查询、连接查询(内&外)以及分页查询,MySQL,mysql,数据库

         13)检索" 01 "课程分数小于 60,按分数降序排列的学生信息

SELECT
	s.*,sc.cid,sc.score 分数
FROM
	t_mysql_score sc,t_mysql_student s 
WHERE
	s.sid = sc.sid AND sc.cid = '01' AND score < 60 
ORDER BY
	sc.score DESC 

MySQL之子查询、连接查询(内&外)以及分页查询,MySQL,mysql,数据库

        14)按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

SELECT
	s.sid,s.sname,
	sum((CASE WHEN sc.cid='01' THEN sc.score END)) 语文,
	sum((CASE WHEN sc.cid='02' THEN sc.score END)) 数学,
	sum((CASE WHEN sc.cid='03' THEN sc.score END)) 英语,
	ROUND(avg(sc.score),2) 平均成绩
FROM
	t_mysql_score sc RIGHT JOIN t_mysql_student s 
	ON sc.sid = s.sid 
GROUP BY
	s.sid,s.sname

MySQL之子查询、连接查询(内&外)以及分页查询,MySQL,mysql,数据库

15)查询各科成绩最高分、最低分和平均分: 以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 

SELECT
	c.cid,c.cname,count(sc.sid) 人数,
	max(sc.score) 最高分,
	min(sc.score) 最低分,
	ROUND(avg(sc.score),2) 平均分,
	CONCAT(ROUND(sum(if(sc.score>=60,1,0))/(SELECT count(1) from t_mysql_student)*100,2),'%') 及格率,
	CONCAT(ROUND(sum(if(sc.score>=70 and sc.score<80,1,0))/(SELECT count(1) from t_mysql_student)*100,2),'%') 中等率,
	CONCAT(ROUND(sum(if(sc.score>=80 and sc.score<90,1,0))/(SELECT count(1) from t_mysql_student)*100,2),'%') 优良率,
	CONCAT(ROUND(sum(if(sc.score>=90,1,0))/(SELECT count(1) from t_mysql_student)*100,2),'%') 优秀率
FROM
	t_mysql_score sc LEFT JOIN t_mysql_course c
	ON sc.cid = c.cid
GROUP BY c.cid,c.cname

MySQL之子查询、连接查询(内&外)以及分页查询,MySQL,mysql,数据库

二、思维导图 

MySQL之子查询、连接查询(内&外)以及分页查询,MySQL,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-810570.html

到了这里,关于MySQL之子查询、连接查询(内&外)以及分页查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql数据库(五) Mysql命令行客户端:内连接查询、左连接查询、右连接查询、自连接查询、子查询

    目录 一、 连接查询 对多个表进行查询 1.0 数据准备 1.1 连接查询 1.2 内连接 INNER JOIN 1.3 左连接 LEFT JOIN 1.4 右连接 RIGHT JOIN 1.5 FULL OUTER JOIN 1.6 自连接查询 1.7 子查询-嵌套在查询中 在之前的文章当中,我们在 base_1 当中有了一个 stu 表,记录的是学生的name age height等信息 第一步

    2024年02月13日
    浏览(55)
  • Mysql 数据库DQL 数据查询语言 SELECT 基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询——包含DQL所有查询语句。吐血分享。

    DQL:数据查询语言; 用来对表内的数据进行查找 。Database Query Language SQL语句分为:基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询。  可以发现name字段就只剩下一个张三了;   条件: 条件查询—比较运算符 比较运算符 功能 大于 = 大于等于 小于 = 小于等

    2024年01月19日
    浏览(53)
  • ⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 多表关系 : 一对一 :在 任意一方 加入外键,关联另一方的主键,并设置外键为唯一(UNIQUE)。 一对多(

    2024年02月05日
    浏览(54)
  • Mysql查询数据库连接状态及连接信息

    使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小、字符集、用户等等。下面总结了一些查看数据库相关信息的命令 查看显示所有数据库 查看当前使用的数据库 查看数据库使用端口 查看当前数据库大小 例如,我要查看INVOICE数据库的大小,那么可以通过下面

    2024年02月11日
    浏览(55)
  • 【MySQL探索之旅】数据库设计以及聚合查询

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点,相互学习进步! 数据库

    2024年04月09日
    浏览(49)
  • MySQL数据库:数据库的约束以及数据的聚合、联合查询

    目录 一.关系模型的简要概述 二.数据库的约束  2.1约束类型         2.2NULL约束 2.3 UNIQUE:唯一约束 2.4 默认约束 2.5 PRIMARY KEY:主键约束 2.6 FOREIGN KEY:外键约束 2.7 CHECK约束 三.高效率查询 3.1高效率查询的分类 3.2聚合查询 3.2.1聚合函数 3.2.2 GROUP BY子句 3.2.3HAVING 3.3.联合查询

    2024年02月10日
    浏览(62)
  • 查询Oracle和MySQL数据库中当前所有连接信息

    查询Oracle当前所有连接信息: 查询MySQL当前所有连接信息: 在这两个查询中,我为每个字段添加了中文别名,以提高查询结果的可读性

    2024年02月12日
    浏览(69)
  • Mysql 查询数据库或数据表中的数据量以及数据大小

     许多数据库的元数据都是存储在mysql中的,例如hive、startrockes,因此可以通过mysql中的“information_schema.TABLES”表来查询对应数据库或对应数据表的具体信息。 1、查询各个数据库中的数据条数和数据大小 2、查询各个数据表中的数据条数和数据大小 3、查看指定数据库容量大小

    2024年04月27日
    浏览(53)
  • mysql数据库——连接查询(内连接:自然连接,等值连接。外连接:左连接,右连接,全连接)

    🔎这里是数据库加油站 👍如果对你有帮助,给博主一个免费的点赞以示鼓励 欢迎各位🔎点赞👍评论收藏⭐️ 数据库版本:mysql8。0.27 如果以下代码执行有问题欢迎留言,一起探讨 内连接INNERJOIN是最常用的连接操作。从数学的角度讲就是求两个表的交集,从笛卡尔积的角度

    2024年02月04日
    浏览(76)
  • 07mysql查询语句之子查询

    #1.查询和Zlotkey相同部门的员工姓名和工资 SELECT last_name,salary FROM employees WHERE department_id IN (             SELECT department_id             FROM employees             WHERE last_name = \\\'Zlotkey\\\' ); #2.查询工资比公司平均工资高的员工的员工号,姓名和工资。 SELECT employee_id,last_name

    2024年02月15日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包