jdbctemplate无where条件查询_多表查询

 2023-09-07 阅读 17 评论 0

摘要:1.表的加法where后。如果想保留重复的内容,则需要在union后面加上 all2.表的联结表与表之间因为特定的列产生联结(join)sql多表关联查询用where、交叉联结aspwhere多条件、123行分别与ab行结合形成3*2行数据内联结用 as 把表重命名增加运行效率 用on的列联结两张

fe95b2e06c2fbd0a31180f76ee483b2b.png

1.表的加法

65945cdb415aa704120a4e050f7141cd.png

where后。如果想保留重复的内容,则需要在union后面加上 all

0bf8827745cd23f7ec96a0395ee0e134.png

2.表的联结

表与表之间因为特定的列产生联结(join)

sql多表关联查询用where、

3cc5aeb3c313a84cfea9642ddc69eec3.png

698399d6833714b7f4ad8d745b099990.png

交叉联结

aspwhere多条件、123行分别与ab行结合形成3*2行数据

174901862336ccd1f51ed48092dbeeba.png

内联结

e208ed2c98a794d7ae1e93be674ecb11.png

3445ee25e3681b315e838cca863cc140.png

a52a7001fb21eeff263bd474bd54e488.png

用 as 把表重命名增加运行效率 用on的列联结两张表

左联结

左联结会将左侧的表当成主表,将它全部读取出来,将右侧的表中只选出相同条件的行然后进行交叉联结

12067228f95450e825c1cc6aa370cd2c.png

3b68cda54d3b85c5534de5732aecac96.png

2a81702ea7c143b620cc7251ca2e5e0b.png

如果想把公共部分去除,则加一条where子句如下图

3ad46554725b3ed4c034c56570324636.png

右联结

右联结会将右侧的表当成主表,将它全部读取出来,将左侧的表中只选出相同条件的行然后进行交叉联结

d23e71daa687294ee41c80fe42c3df51.png

5e1f2efeb482b4fcfc753b4b76d49e9c.png

76e39ec9ad108bb4a39ef2cdafa65717.png

如果想把公共部分去除,则加一条where子句如下图

f29a80a798634b8fe041d4e57f8c00cf.png

全联结

全联结返回两行的所有行,匹配的行会互相合并,如果没有匹配的行则会空值填充

36c7fbd2a11ed4cf1299be9e387e516f.png

sql连接总结图

a39421141b9d792fdb4207e1ef5856c2.png

sql运行顺序

121bf9e51981576fa52f9de1054c8667.png

问题1:查询出所有学生的学号,姓名,每个学生的选课数目,每个学生的总成绩

1.翻译成大白话

查出所有学生的学号姓名(都在学生表中)

每个学生的选课数目(按照学号分组,用count函数汇总成绩表中的课程号)

每个学生的总成绩(按照学号分组,用sum函数汇总成绩表中的成绩)

2.分析思路

select 输出 学号姓名 选课数目 总成绩

from 学生表 成绩表 因为需要所有学生的信息所以需要将学生表当做主表

where 查询条件 无

group by 需要用学号进行分组

having

order by

limit

3.sql 语句

887b9a088010beede262e581df2d6f64.png

这里需要注意将各个列名加入各个表的别名

问题2:查询平均成绩大于85的所有学生的学号,姓名,和平均成绩

  1. 翻译大白话

学号姓名都在学生表中

所有学生的平均成绩需要用学号分组然后用avg函数汇总

输出条件则是分组之后avg函数结果大于85的数据

2.分析思路

select 输出 学号 姓名 平均成绩

from 学生表 成绩表 因为是所有学生所以用学生表作主表

where

group by 需要用学号进行分组

having avg成绩 大于85

order by

limit

3.sql语句

6ae415ed1cc935be7d0fe930eee841e7.png

问题3:查询学生的选课情况:学号,姓名,课程号,课程名称

这里需要用到学生表和课程表,但是其中必须加入成绩表才能将其联结

60963bfde5bb24ae07ca87bb7461b3bb.png

5320029e4641575f1cb93252e662aff2.png

3.case表达式

相当于循环条件,从上而下当满足条件输出这一行的结果,没有满足则继续运行第二条when直到else结束 case表达式适合用在一个列中需要输出两种条件的情况

b64527528452c4c8ed6df7f568efe7a9.png

b810921004daeb7d2507a6ad5098fcd5.png

938ff37ae5f2155526891f426c02db16.png

查询每门课程的及格人数和不及格人数

557d3f5a09d01c3c541cfa4ca1d1395d.png

注意事项:

1.else 可以不写 默认空值 但是最好写上

2.end必须写

3.case表达式可以写在任意子句

74873491d14b622a47681dd7d6fb9932.png

09f464ec2e3053253299135d31bf6e13.png

bebaadbc52c1659575e40c05b46c1b16.png

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/18325.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息