最近公司在招人,同事问了几个自认为数据库可以的应聘者关于库连接的问题,回答不尽理想~
现在在这写写关于它们的作用
假设有如下表:
一个为投票主表,一个为投票者信息表~记录投票人IP及对应投票类型,左右连接实际说是我们联合查询的结果以哪个表为准~
1:如右接连 right join 或 right outer join:
我们以右边voter表为准,则左表(voteMaster)中的记录只有当其ID在右边(voter)中存在时才会显示出来,如上图,左边中ID为3.4.5.6因为这些ID右表中没有相应记录,所以没有显示!
2:因此我们自然能理解左连接 left join 或者 left outer join
可见,现在右边中ID在中存在时才会显示,当右边中没有相应数据时则用NULL代替!
3:全连接 full join 或者 full outer join,为二个表中的数据都出来,这里演示效果与上一样!
4:内连接 inner join 或者 join;它为返回字段ID同时存在于表voteMaster 和 voter中的记录
5:交叉连接(完全连接)cross join 不带 where 条件的
没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生6*3=18条记录)
等价select vm.id,vm.voteTitle,vt.ip from voteMaster as vm,voter as vt
6:自连接。在这里我用我前段时间一个电力项目中的例子(改造过)
如下表:
这是一个部门表,里面存放了部门及其上级部门,但都放在同一张表中,我们假设现在需要用SQL查询出各部门及其上级部门!就如何做,
当然,不用自连接也一样,可以如下:
我们达到预期目的!在这个查询中使用了一个子查询完成对上级部门名的查询,如果使用自连接,那么结构上感觉会清晰很多。
是不是也同样完成了功能呢,这里除了使用自连接外,还使用了左连接,因为省电力没有上级部门,他是老大,如果使用内连接,就会把这条记录过滤掉,因为没有和他匹配的上级部门。
自连接用的比较多的就是对权形结构的查询!类似上表!
转自:http://www.cnblogs.com/eflylab/archive/2007/06/25/794278.html
相关推荐
本文将详细介绍六种主要类型的 JOIN:左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)、内连接(INNER JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。通过实例讲解每种连接的特点和应用...
根据连接的方式不同,可以分为左连接(LEFT JOIN)、右连接(RIGHT JOIN)、内连接(INNER JOIN)、全连接(FULL JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。每种连接类型都有其特定的应用场景和使用...
全连接返回左表和右表的所有行,即使另一表中没有匹配。如果在任一表中找不到匹配的行,结果将填充NULL。 ```sql SELECT authors.*, publishers.* FROM authors FULL OUTER JOIN publishers ON authors....
根据连接的方式和结果,SQL连接可以分为内连接、左连接、右连接、全连接和交叉连接等多种类型。 内连接 内连接是最基本的连接类型,它将两个表格中的数据根据某个条件连接起来。内连接可以分为等值连接、不等值...
SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
全连接结合了左连接和右连接,返回两个表中所有记录,无论是否存在匹配。如果某条记录在其中一个表中没有匹配项,结果将用NULL填充缺失的列。 4. **内连接(Inner Join 或 Join)**: 内连接是最常见的连接类型,...
当使用`ON 1 = 1`作为连接条件时,交叉连接会返回两个表的所有可能组合,即每个左表的记录都会与右表的每条记录进行组合。例如: ```sql SELECT O.orderid, O.userid, U.userID, U.sname FROM t_order AS O CROSS ...
此外,还有交叉连接(CROSS JOIN),也称为笛卡尔积,它会返回左表的每一行与右表的每一行的组合,结果集的大小是两个输入表行数的乘积。 在SQL代码示例中,使用临时表`@TA`和`@TB`展示了不同类型的连接。内连接的...
### SQL内连接与外连接详解 #### 一、SQL内连接(INNER JOIN) **定义**: 内连接(INNER JOIN)是一种最常用的连接方式,它仅返回两个数据集合中具有匹配关系的那些行。具体来说,它会从位于两个互相交叉的数据...
本文将深入探讨几种主要的SQL连接查询类型,包括内连接(INNER JOIN)、外连接(FULL JOIN、LEFT JOIN、RIGHT JOIN)以及交叉连接(CROSS JOIN),并提供实例来帮助初学者理解。 首先,我们来看内连接(INNER JOIN...
本文将详细介绍Oracle中的左连接(Left Join)、右连接(Right Join)、内连接(Inner Join)、全连接(Full Join)以及交叉连接(Cross Join)的方法,并通过示例来帮助理解每种连接的特点。 ### 一、左连接(Left...
根据连接的方式不同,可以分为内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)以及全连接(FULL JOIN)等几种类型。 #### 二、连接查询类型详解 ##### 1. INNER JOIN (内连接) 内连接是最常用...
SQL 中的表连接主要分为三种类型:内连接、外连接和交叉连接。 1. **内连接(INNER JOIN)**: 内连接返回两个表中满足特定条件的匹配行。这种连接类型又可以细分为等值连接、自然连接和不等连接。等值连接基于两个...
本文将详细解释五种主要的连接类型:外连接(外连接)、内连接(内连接)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)以及交叉连接(CROSS JOIN)。 1. **内连接(INNER JOIN)**: 内连接...
左连接(`LEFT JOIN`/`LEFT OUTER JOIN`)、右连接(`RIGHT JOIN`/`RIGHT OUTER JOIN`)、全连接(`FULL JOIN`/`FULL OUTER JOIN`)、内连接(`INNER JOIN`/`JOIN`)以及交叉连接(`CROSS JOIN`)和自连接。 #### 二、左连接 ...
交叉连接是一种特殊的连接类型,它返回左表和右表的所有可能组合。这意味着如果左表有m行,右表有n行,则结果集将包含m*n行。然而,除非有特定需求,否则交叉连接很少在实际应用中使用,因为其结果通常包含大量冗余...
2)sql 99标准 **(推荐使用)** :支持内连接、外连接(左外 和 右外)、交叉连接 2.按功能分类: 1)内连接: 等值连接 非等值连接 自连接 2)外连接: 左外连接 ...
- **全外连接(Full Outer Join)**:返回左表和右表中所有的记录,左表和右表中没有匹配的数据会用`NULL`填充。 - 示例代码: ```sql SELECT t.*, s.* FROM teacher t FULL OUTER JOIN student s ON t.id = s....
SQL 连接查询可以分为交叉连接、内连接、外连接等几种类型。 一、交叉连接(Cross Join) 交叉连接是 SQL 连接查询中的一种基本类型,它将两个表中的所有记录组合起来,形成一个新的表。交叉连接可以分为显式的和...
接下来将详细解析左连接(Left Join)、右连接(Right Join)、内连接(Inner Join)、全外连接(Full Outer Join)、交叉连接(Cross Join)以及联合查询(Union)。 ### 左连接(Left Join) 左连接(Left Join...