004 连接查询

再大多数的情况下,我们都需要进行连接查询.

笛卡尔积的产生:

这个就是多表查询的的最初结果集,那么以后我们需要作的就是从结果集中筛选出需要的结果集.


筛选的方式不同,导致sql的效率不同.

筛选的方式就是加入连接标准.


 等值连接:

select 字段 from 表1 , 表2 where 连接条件.

eg:查询员工名和对应的部门的名称.

SELECT
last_name,
a.department_id
FROM
employees a,
departments b
WHERE a.department_id = b.department_id

 非等值连接:

其实与等值连接基本是一致的,都是在笛卡尔积中使用非等值条件然后进行筛选.

自连接:

自连接相当于连接的表就是自己,其实和一般的等值连接没有什么区别.


外连接:

  外连接到底查询的是什么? 我们从维恩图之中就能看出来,

  其实取的就是主表的全部信息,加上交集的全部信息.

  至于左外链和还是右外连接完全是看到底使用哪一张表作为主表.

------------

全外连接: 在mysql之中是不支持全外连接的,我们想要获取圈外连接的信息,就只能靠我们自己手动的去拼凑结果集,

最终获取结果集然后完成.


交叉连接:

  其实就是我们获取的笛卡尔积的一种方式,在实际之中基本是没有什么作用的.

原文地址:https://www.cnblogs.com/trekxu/p/8492609.html