数据库--多表查询

1基本连接

数据库--多表查询_第1张图片

2内连接 inner join,inner可省略,与基本连接相似,只是表现不同,实现效果一样。只是等值连接放在on语序块中。

数据库--多表查询_第2张图片数据库--多表查询_第3张图片数据库--多表查询_第4张图片

如下图,结果相同

数据库--多表查询_第5张图片

3左外连接,第一个表是主表(外连接相对于内连接:左外连接,右外连接,全连接)

内连接自动消除任何不匹配的行,外连接有主从表之分,返回from主表中的所有行和从表中所匹配的行。

数据库--多表查询_第6张图片

左外连接,outer可省略

数据库--多表查询_第7张图片

查询结果返回主表中所有行以及和从表相匹配的行,不匹配的行填null

数据库--多表查询_第8张图片

与内连接不同,限定条件放在on子句和where子句中查询结果不同。

放在0n子句中,返回匹配行和所有主表中的行,空的地方填充null。总之返回主表中所有行。

放在where子句中,先执行上半部分,再执行where.如下图。

数据库--多表查询_第9张图片数据库--多表查询_第10张图片数据库--多表查询_第11张图片

4右外连接(right join),第一个表是从表,右边的表是主表。(左右表互换,实现左右连接互相转换)

5全连接(full outer join)注意左右表位置不同显示结果的排序方式不同,先列出左表中信息。

6交叉连接cross join(无where子句,返回两个表的笛卡尔积)

数据库--多表查询_第12张图片

不加条件的交叉连接和基本连接作用相似。(下面两图结果一致)

数据库--多表查询_第13张图片

image.png

7自连接(同一个表实现连接)

image.png

8联合查询(有无all在于是否显示重复行)注意:两个结果集有相同数目的目标列,且数据内容尽量保持一致。对应列的数据类型要一致。

数据库--多表查询_第14张图片    数据库--多表查询_第15张图片数据库--多表查询_第16张图片

9使用子查询(包含在其他查询的where子句中)

数据库--多表查询_第17张图片

10嵌套子查询

11xml查询

12 for xml子句(raw,auto,explicit,path模式)

13 exists关键字查询(判断子查询是否有结果,true/flase)可以使用再where子句中或数据库编程中。

数据库--多表查询_第18张图片

14交查询intersect(两个查询结果集求交)

15差查询intersect(两个查询结果集求交)

你可能感兴趣的:(数据库--多表查询)