前言
紧接着之前叙述过的SQL常用语句总结,在这一篇博客中南国也有对多表查询进行了一些叙述,但经过这段时间的笔试面试经历,感觉自己对这块知识的理解 还不够深入。
所以,在这篇SQL进阶中,南国对SQL经常用到的多表知识点在做一个详细的讲解。
提到关系数据库中的多表查询时,你会想到什么呢??
你是不是想说多表查询就是同时查询几张不同的表 通过表与表之间的数据的主外键联系 查询得到想要的数据结果。 当然这个回答已经很不错了,准确的说 多表查询还可以包括同一个数据表中查询大于某行特定数据的查询。
多表查询有如下几种:
- 合并结果集;
- 连接查询
内连接
外连接:左外连接,右外连接,全外连接(MySQL不支持)
自然连接 - 子查询
下面我们对这些方法展开叙述:
1. 合并结果集
这个在前面的博客中,这里我简要叙述一下:
1.作用:合并结果集就是把两个select语句的查询结果合并到一起!
2.合并结果集有两种方式:
- UNION:去除重复记录,例如:SELECT * FROM t1 UNION SELECT * FROM t2;
- UNION ALL:不去除重复记录,例如:SELECT * FROM t1 UNION ALL SELECT * FROM t2。
3.要求:被合并的两个结果:列数、列类型必须相同。
2. 连接查询
连接查询就是求出多个表的乘积,例如t1连接t2,那么查询出的结果就是t1*t2。
连接查询会产生笛卡尔积,假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔