网站建设h5 招聘,静宁门户网站,企业网站建设的经验心得,怎么对网站链接做拆解本专栏关于联合查询已建好相应库与表#xff0c;链接如下#xff1a;
【MySQL】_联合查询基础表-CSDN博客
基于以上库与表#xff0c;本篇介绍内连接#xff1b; 内连接表示语法有两种#xff1a;
第一种#xff1a;
select [列名],[列名]... form [表1],[表2] where… 本专栏关于联合查询已建好相应库与表链接如下
【MySQL】_联合查询基础表-CSDN博客
基于以上库与表本篇介绍内连接 内连接表示语法有两种
第一种
select [列名],[列名]... form [表1],[表2] where 条件第二种
select [列名],[列名] from [表1] join [表2] on 条件;
2.1 示例1查询许仙同学的成绩
“许仙”是名字在student表中“成绩”在score表中位于不同的表中需要进行联合查询
将student表与score表进行笛卡尔积——删去无效数据——按照许仙名字来筛选——必要时对结果进行精简
1计算student表和score表的笛卡尔积
mysql select* from student,score;
2根据两个表的关联列是否对应删去无效数据
mysql select* from student, score where id student_id;
注当联合查询的关联列名重名时可以使用表名.列名进行指定即上文SQL指令也可以写为
mysql select* from student, score where student.id score.student_id;
在实际开发中更建议采用这种写法避免当表多列多的情况下产生混淆
3根据名字筛选出许仙同学的成绩
mysql select* from student, score where student.idscore.student_id and student.name 许仙;
此时查询结果为
--------------------------------------------------------------------------
| id | sn | name | qq_mail | classes_id | score | student_id | course_id |
--------------------------------------------------------------------------
| 4 | 00031 | 许仙 | xuxianqq.com | 1 | 67.0 | 4 | 1 |
| 4 | 00031 | 许仙 | xuxianqq.com | 1 | 23.0 | 4 | 3 |
| 4 | 00031 | 许仙 | xuxianqq.com | 1 | 56.0 | 4 | 5 |
| 4 | 00031 | 许仙 | xuxianqq.com | 1 | 72.0 | 4 | 6 |
-------------------------------------------------------------------------- 4对查询结果进行精简查询指令与最终查询结果为
mysql select student.name, score.course_id, score.score from student, score- where student.id score.student_id and student.name 许仙;
------------------------
| name | course_id | score |
------------------------
| 许仙 | 1 | 67.0 |
| 许仙 | 3 | 23.0 |
| 许仙 | 5 | 56.0 |
| 许仙 | 6 | 72.0 |
------------------------
4 rows in set (0.00 sec)
注计算笛卡尔积即其筛选方式有两种
第一种
select* from [表名],[表名] where [条件]; 第二种
select* from [表名] join [表名] on [条件];
故而上文的SQL语句也可以写为
mysql select student.name, score.course_id, score.score from- student join score- on student.id score.student_id and student.name许仙;
2.2 示例2 查询所有同学的总成绩及同学的个人信息
查询信息关系到学生表与成绩表
将student表和score表进行笛卡尔积计算——根据联合列学生id删去无效信息——根据学生name或id进行分组并根据分组情况对score进行求和
1将student表和score表进行笛卡尔积计算并对无效信息进行删除
mysql select* from student,score where student.id score.student_id;
2根据学生id进行分组根据分组使用聚合函数sum进行聚合计算总成绩
mysql select student.name, sum(score.score)from student,score where student.id score.student_id group by id;
------------------------------
| name | sum(score.score) |
------------------------------
| 黑旋风李逵 | 300.0 |
| 菩提老祖 | 119.5 |
| 白素贞 | 200.0 |
| 许仙 | 218.0 |
| 不想毕业 | 118.0 |
| 好好说话 | 178.0 |
| tellme | 172.0 |
------------------------------
7 rows in set (0.00 sec)
2.3 示例3查询所有同学的科目及各科成绩及同学的个人信息 同学姓名在student表中科目信息在course表中各科成绩在score表中
mysql select student.name, course.name, score.score- from student, course, score- where student.id score.student_id- and score.course_id course.id;
---------------------------------
| name | name | score |
---------------------------------
| 黑旋风李逵 | Java | 70.5 |
| 黑旋风李逵 | 计算机原理 | 98.5 |
| 黑旋风李逵 | 高阶数学 | 33.0 |
| 黑旋风李逵 | 英文 | 98.0 |
| 菩提老祖 | Java | 60.0 |
| 菩提老祖 | 高阶数学 | 59.5 |
| 白素贞 | Java | 33.0 |
| 白素贞 | 计算机原理 | 68.0 |
| 白素贞 | 高阶数学 | 99.0 |
| 许仙 | Java | 67.0 |
| 许仙 | 计算机原理 | 23.0 |
| 许仙 | 高阶数学 | 56.0 |
| 许仙 | 英文 | 72.0 |
| 不想毕业 | Java | 81.0 |
| 不想毕业 | 高阶数学 | 37.0 |
| 好好说话 | 中国传统文化 | 56.0 |
| 好好说话 | 语文 | 43.0 |
| 好好说话 | 英文 | 79.0 |
| tellme | 中国传统文化 | 80.0 |
| tellme | 英文 | 92.0 |
---------------------------------
20 rows in set (0.00 sec)