多表查询中的多表连接方式

1.笛卡尔集
笛卡尔集就是所有表中的所有行互相连接产生的笛卡尔积!主要原因是省略连接条件或者是
连接条件无效!可通过在 where 中加入有效的连接条件可以避免笛卡尔集产生

例:EMP表中有14条数据,DEPT表中有4条数据,如果EMP表和DEPT表没有关联条件连接则EMP表的14条数据会乘与DEPT表的4条数据产生56条笛卡尔集数据
在这里插入图片描述

2.多表查询如何区分重复的列名
使用表名前缀在多个表中既可以区分相同的列还能提高执行效率。
用表的别名不仅在不同表中可以加以区分具有相同列名的列还可以简化查询。

3.等值连接
等值连接条件:必须在不同表中具有相同列名的才能进行等值连接
格式:select * from a表,b表 where a表.相同列=b表.相同列
在这里插入图片描述
4.非等值连接
格式:select * from a表,b表
where a表.数值或日期字段between b表.(数值或日期字段)最小值 and b表.(数值或日期字段)最大值
在这里插入图片描述
外连接语法
使用外连接查询不满足连接条件的数据。符号(+)
5.右外连接
格式:select * from a表,b表 where a表.相同列(+)=b表.相同列
在这里插入图片描述
6.左外连接
格式:select * from a表,b表 where a表.相同列=b表.相同列(+)
在这里插入图片描述
7.自连接。
自连接相当于自表跟自表进行连接,
自连接就是同一张表中的两个不同字段id的值相等,并且两个不同字段id具有上下级后一对多的关系!
在这里插入图片描述
使用SQL: 1999 语法连接
8.叉集
叉集是使用cross join进行多表连接,结果相当于笛卡尔集
格式:select * from a表 cross join b表
在这里插入图片描述
9.自然连接
自然连接是使用natural join进行多表连接
格式:select * from a表natural join b表
在这里插入图片描述

10.使用using 子句创建连接
格式:select * from a表join b表 using(连接条件:a、b表相同的列名)
在这里插入图片描述
11.使用on 子句创建连接(常用)
格式:
select * from a表left|right|full outer join b表 on(连接条件:a表.相同列= b表.相同列); --左|右|满 外连接
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44564151/article/details/89341431
今日推荐