首先是子查询
子查询理解起来较简单,就是在一个数据查询里面加上一个设置条件,然后里面加上另外一个表的查询结果。
例如作业中的题,有三个表
比如我想要从成绩表中知道张三的语文成绩,光从score表中是没法知道是哪一个的,这时候子查询就可以查出
这里通过将另外两表里的id链接起来,查询到了对应的数据
接下来是联结查询
联结查询就像数学里面的求交集一样,把条件相同的数据放在一起,又或者把其中一个表吻合的数据放入另一个表
具体用法:比如我要通过科目的id来连接表score和表subject
那么就这样
这样id相匹配的部分就连接了起来
还有外联结
外联结是以其中一张表为主,另一张表匹配的进行连接,不匹配的部分显示为null
这里为了演示,在score表里面添加了一段新的记录
再使用左外联结
右外联结也是一样的用法和意义
组合查询
组合查询用于将不同的查询语句以一个结果返回,在每个select语句中间使用union来连接
如查询语文成绩的平均分和所有成绩的平均分
可以看到结果一次性的展示出来了
他们之间,我个人认为,联结查询的代码较简单,写起来字数少,而且在数据量较大时,因为联结查询只会查询一次,所以比查询多次的子查询要快一些,但是子查询的代码更直观,更易控制条件,所以需要在实际运用中进行取舍。
组合查询的不好一点是,因为用一个表表示了两次或多次查询的结果,很多不同条件的数据放在一起不利于整理