SQL查询:[5]连接查询
1、等值连接:
等值连接是最常见的一种连接查询,通常是在主外键关联关系的表间建立,并将连接条件设定为有关系的列,使用“=”连接相关的表。如下图:
![SQL查询:[5]连接查询](https://exp-picture.cdn.bcebos.com/4b626771fe1d96d8f76427932ccd0c6efaf2e1d0.jpg)
2、非等值连接:
非等值连接是指在多个表中使用非等号连接,查询在多个表中有非等值关联关系的数据,非等值连接操作符包括>、>=、<、<=、<>以及BETWEEN...AND、LIKE、IN等。具体实现如下图:
![SQL查询:[5]连接查询](https://exp-picture.cdn.bcebos.com/fab31cb375d7997b4c899cebf9dade49600fd9d0.jpg)
3、自连接:
自连接是一种比较特殊的连接查询,数据来源是一个表。如下图:
![SQL查询:[5]连接查询](https://exp-picture.cdn.bcebos.com/8a17b3042e6817e9519f484bd356d53da924ced0.jpg)
1、上述所介绍的连接查询都属于内连接,即返回满足连接条件的数据记录。在有些情况下需要返回那些不满足连接条件的记录,此时需要使用外连接来返回那些不满足连接条件的记录。在9I之前外连接在WHERE条件中指定,9I版本之后则一般在FROM短语中指定,9I版本之后外连接语法如下:
SELECT table1.column,table2.column
FROM table1 [INNER|LEET|RIGHT|FULL] JOIN table2
ON table1.column1=table2.column2;
9I版本之前外连接语法如下:
SELECT table1.column,table2.column
FROM table1,table2
WHERE table1.column1 (+)=table2.column2;
2、内连接:
内连接返回所有满足条件的记录,内连接方式有几种,第一种是上面介绍的等值连接这种形式,这里就不再重复介绍;第二种方式是使用NATURAL JOIN短语,将两个表中所有同名列做等值连接;第三种方式是使用USING子句实现是将两个表中指定的同名列做等值连接,避免了同名列可能因类型不同导致的错误;第四种是使用ON子句。
![SQL查询:[5]连接查询](https://exp-picture.cdn.bcebos.com/d9a8d2d2bb6651598c3e56998fe23ea23b42c7d0.jpg)
![SQL查询:[5]连接查询](https://exp-picture.cdn.bcebos.com/a151a233ec3834bb0a91e4ec8714c27bd3823dd1.jpg)
![SQL查询:[5]连接查询](https://exp-picture.cdn.bcebos.com/87c8bf46b7b1eef963c30acfbfb33c4132ba32d1.jpg)
3、左外连接:
左外连接是内连接的一种扩展,不止会返回满足连接条件的记录,还会返回那些不满足连接条件的操作符左边表的其他记录。
![SQL查询:[5]连接查询](https://exp-picture.cdn.bcebos.com/35f2224133bad3412103a784427622bc7cc52cd1.jpg)
4、右外连接:
右外连接和左外连接相似,右外连接不止会返回满足连接条件的记录,还会返回那些不满足连接条件的操作符右边表的其他记录。
![SQL查询:[5]连接查询](https://exp-picture.cdn.bcebos.com/32fbcd41037de137ed08640ff6c5cf672a5f2ad1.jpg)
5、全外连接:
全外连接除了会返回满足连接条件的记录,还会返回那些不满足连接条件的所以其他行。
![SQL查询:[5]连接查询](https://exp-picture.cdn.bcebos.com/e076d77622bc7dc5e8196dec5e460596b91429d1.jpg)