![df7fe1676c67c89dc88b586e4a2434d1.png](https://img-blog.csdnimg.cn/img_convert/df7fe1676c67c89dc88b586e4a2434d1.png)
表的合并,在SQL里又叫做表的连接。
![7d46905e1f500910474c201c12828c2f.png](https://img-blog.csdnimg.cn/img_convert/7d46905e1f500910474c201c12828c2f.png)
多表查询:
指的是将两个以上的数据表通过关键字段连接在一起,从不同表中取不同字段进行查询的方法。
关键字段:
1、相连的两表中都有能匹配上的关键字段;
2、表中的关键字段最好是主键,即:不重复,不为空值;
3、如果不是主键就需要用到联合主键,即两表中两个字段联合起来作关键字段。
一、内连接查询
![f823f4fb34c7b396fc2ae2cc009eeefe.png](https://img-blog.csdnimg.cn/img_convert/f823f4fb34c7b396fc2ae2cc009eeefe.png)
内连接:inner join 简写 join,按照内连接合并两个表,返回两个表中主键相同的行。
通用代码:
SELECT
将上面的表1和表2进行内连接
#
一对一连接:只要找到关键字段(学号)相同的数据,横向连接起来就可以;
![5a559264c0449480e431f7b2ec846f05.png](https://img-blog.csdnimg.cn/img_convert/5a559264c0449480e431f7b2ec846f05.png)
多对多连接:连接关键字段(学号)相同的数据的,但是由于相同学号的数据多于1个,所以最终结果是表相同字段分别和右表的数据相连接。
行数是:左表相同数量和右表相同字段数量相乘,再加上一对一的数量。
![ae43c1de00d6f25c965225b88054ab5a.png](https://img-blog.csdnimg.cn/img_convert/ae43c1de00d6f25c965225b88054ab5a.png)
二、左连接
![fa59c875653543ab4099e99177e7e8b6.png](https://img-blog.csdnimg.cn/img_convert/fa59c875653543ab4099e99177e7e8b6.png)
左连接: 结果中包括左表的所有行,及关键字段与左表相同的右表的行。
通用代码:
SELECT
将信息表和成绩表进行左连接
#
一对一连接
![dc227c9c7623ccea3716f4f8412f0404.png](https://img-blog.csdnimg.cn/img_convert/dc227c9c7623ccea3716f4f8412f0404.png)
多对多连接
![9a9282c2cd0ef06f48bb4a239f1a34a5.png](https://img-blog.csdnimg.cn/img_convert/9a9282c2cd0ef06f48bb4a239f1a34a5.png)
左连接:学号与左表一致,而不包含右表学号为f的学员
三、右连接
![2237a49d07a547b8143d5f2f49391094.png](https://img-blog.csdnimg.cn/img_convert/2237a49d07a547b8143d5f2f49391094.png)
右连接: 结果中除了包括与右表关键字段的左表行,还包括右表的所有行
通用代码:
SELECT
将信息表和成绩表进行右连接
#
一对一连接
![48d31d2767f8f53d0f930d668cd8aaad.png](https://img-blog.csdnimg.cn/img_convert/48d31d2767f8f53d0f930d668cd8aaad.png)
多对多连接
![59883f5e0b9362d834d4bcbe84bb5dd7.png](https://img-blog.csdnimg.cn/img_convert/59883f5e0b9362d834d4bcbe84bb5dd7.png)
四、纵向连接
两个表纵向连接的条件:两个表必须列数相同;
去重纵向连接
![3be1de1077d72e08881dbb1252e2be97.png](https://img-blog.csdnimg.cn/img_convert/3be1de1077d72e08881dbb1252e2be97.png)
union: 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。
通用代码: 用union合并t1与t2表
select
将两个信息表去重纵向连接
SELECT
![b59ff8165e9454b9455746b94e2f9405.png](https://img-blog.csdnimg.cn/img_convert/b59ff8165e9454b9455746b94e2f9405.png)
不去重纵向连接
![d44943fd0a1e00c30529976d902d6211.png](https://img-blog.csdnimg.cn/img_convert/d44943fd0a1e00c30529976d902d6211.png)
union all:用于合并两个或多个 SELECT 语句的结果集,保留重复行。
通用代码:用union all合并t1与t2表
select
将两个信息表不去重纵向连接
SELECT
![1db632995b2d78e10954b084c138180e.png](https://img-blog.csdnimg.cn/img_convert/1db632995b2d78e10954b084c138180e.png)