ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL多表连接查询实例

2022-01-29 17:00:20  阅读:117  来源: 互联网

标签:01 多表 score 课程 MySQL 查询 实例 表中 id


MySQL多表连接查询实例

1 查询时要用到的表以及表中数据

(1)学生表(student)
在这里插入图片描述
表中的数据如下:
在这里插入图片描述
(2)课程表(course)
在这里插入图片描述
表中的数据如下:
在这里插入图片描述
(3)教师表(teacher)
在这里插入图片描述
表中数据如下:
在这里插入图片描述
(4)成绩表(score)
在这里插入图片描述
表中数据如下:
在这里插入图片描述
(5)教师—课程表(teach)
在这里插入图片描述
表中无数据。

表之间的关系:
1、学生与课程之间是多对多(m:n)的关系:一名学生要学习多门课程,一门课程有多名学生学习。
2、教师与课程之间是多对多(m:n)的关系:一个老师可以上多门课程,一门课程可以由多个老师上

2 实例

1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数

/*方法1:以下方法更加易于理解*/
SELECT
	a.*, /*查询a表中所有内容*/
	b.s_score AS "语文", /*查询b表中s_score字段下的数据并将查询结果命名为“语文”*/
	c.s_score AS "数学" /*查询c表中s_score字段下的数据并将查询结果命名为“数学”*/
FROM
	student AS a, /*student表命名为a表*/
	score AS b, /*score表命名为b表*/
	score AS c /*score表命名为c表*/
WHERE
	a.s_id = b.s_id /*a表中学号与b表中学号相同*/
	AND a.s_id = c.s_id /*a表中学号与c表中学号相同*/
	AND b.c_id = "01" /*b表中的课程号为01*/
	AND c.c_id = "02" /*c表中的课程号为02*/
	AND b.s_score > c.s_score; /*01的成绩大于02的成绩*/
/*方法2:以下方法效率更高*/
SELECT
	a.*, /*查询a表中所有内容*/
	b.s_score AS "语文", /*查询b表中s_score字段下的数据并将查询结果命名为“语文”*/
	c.s_score AS "数学" /*查询c表中s_score字段下的数据并将查询结果命名为“数学”*/
FROM
	student a /*student表命名为a表*/
	JOIN score b ON a.s_id = b.s_id /*a表与b表连接,条件是a表中学号等于b表中学号*/
	AND b.c_id = "01" /*b表中的课程号为01*/
	LEFT JOIN score c ON a.s_id = c.s_id /*a表与c表建立左连接,条件是a表中学号等于c表中学号*/
	AND c.c_id = "02" /*c表中的课程号为02*/
WHERE
	b.s_score > c.s_score; /*01的成绩大于02的成绩*/

注意:
1、join表示连接,与on连用,on后面加连接的条件
2、left join表示左连接,左表中的信息全部显示出来,再把符合条件的信息显示出来

在这里插入图片描述
2、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩

SELECT
	a.s_id, /*查询学生编号*/
	a.s_name, /*查询学生姓名*/
	COUNT( b.c_id ) AS "选课总数", /*查询课程号的数量作为选课总数*/
	SUM( b.s_score ) AS "总成绩" /*查询成绩之和作为总成绩*/
FROM
	student a /*student表命名为a表*/
	LEFT JOIN score b ON a.s_id = b.s_id /*a表与b表左连接,连接条件是a表的学号等于b表的学号*/
GROUP BY
	a.s_id;/*按照学号进行分组*/

在这里插入图片描述
3、查询"李"姓老师的数量

SELECT
	COUNT( t_id ) /*查询教师编号的数量*/
FROM
	teacher 
WHERE
	t_name LIKE "李%"; /*模糊查询*/

在这里插入图片描述

标签:01,多表,score,课程,MySQL,查询,实例,表中,id
来源: https://blog.csdn.net/m0_46612221/article/details/122743063

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有