表A:
AID ANAME BID
---- -------------------- ----------
1 a1 2
2 a2 3
3 a3 4
4 a4 5
表B:
BID BNAME
----- -----
2 b1
3 b2
6 b5
7 b9
8 b9
1、内连接仅选出两张表中相互匹配的记录;
select a.*,b.* from A join b on a.bid=b.bid;或者 select a.*,b.* from A,b where a.bid=b.bid;
查询结果:结果行数等于两表bid相同记录数
AID ANAME BID BID BNAME
---- -------------------- ---------- ---------- -----
1 a1 2 2 b1
2 a2 3 3 b2
2、左连接包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。
select a.*,b.* from a left join b on a.bid=b.bid;或select a.*,b.* from a,b where a.bid=b.bid(+);
查询结果:结果行数等于左边表的记录数
AID ANAME BID BID BNAME
---- -------------------- ---------- ---------- ------
1 a1 2 2 b1
2 a2 3 3 b2
4 a4 5
3 a3 4
3、右连接包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。
select a.*,b.* from a right join b on a.bid=b.bid;或select a.*,b.* from a,b where a.bid(+)=b.bid;
查询结果:结果行数等于右边表的记录数
AID ANAME BID BID BNAME
---- -------------------- ---------- ---------- -----
1 a1 2 2 b1
2 a2 3 3 b2
6 b5
7 b9
8 b9
4、全连接左右表中所有记录都会选出来。
select a.*,b.* from a full outer join b on a.bid= b.bid;
查询结果:结果行数等于a表记录数+b表记录数-内连接结果行数
AID ANAME BID BID BNAME
---- -------------------- ---------- ---------- ------
1 a1 2 2 b1
2 a2 3 3 b2
4 a4 5
3 a3 4
6 b5
7 b9
8 b9
数据库中的空值(NULL)。
有时表中,更确切的说是某些字段值,可能会出现空值, 这是因为这个数据不知道是什么值或根本就不存在。
空值不等同于字符串中的空格,也不是数字类型的0。因此,判断某个字段值是否为空值时不能使用=,<>这些判断符。必需有专用的短语:IS NULL 来选出有空值字段的记录,同理,可用 IS NOT NULL 选出不包含空值的记录。
多表的连接顺序及速度优化
当有多个表之间进行左右连接时,如果用where来进行左右连接,当表>2时,
比如加c表:
ID CNAME
---- -----
2 cname
select a.aname,b.bname,c.cname from a left join b on a.bid=b.bid left join c on b.bid=c.id;
和select a.aname,b.bname,c.cname from a,b,c where a.bid=b.bid(+) and b.bid=c.id(+);
select a.aname,b.bname,c.cname from b left join c on b.bid=c.id left join a on a.bid=b.bid;
和select a.aname,b.bname,c.cname from a,b,c where b.bid=c.id(+) and a.bid=b.bid(+);
的记录数及不同了。
多表左/右连接,表的连接顺序也可以影响查询速度
左连接时,应该把小表放在前面连接
例子:
A、B、C三表左连接
情况1:
A先和B连接,得到100条记录
100条记录再和C左连接
情况2:
A先和C连接,得到50条记录
50条记录再和B左连接
右连接时,把小表放在后面连接
http://blog.csdn.net/winter3125/article/details/5032871#comments
相关推荐
SQL 连接的四种类型:左外连接、右外连接、全连接、内连接 在 SQL 中,连接(JOIN)是一种非常重要的概念,它允许我们从多个表中检索数据。连接可以分为四种类型:左外连接、右外连接、全连接和内连接。每种连接都...
本文将详细介绍六种主要类型的 JOIN:左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)、内连接(INNER JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。通过实例讲解每种连接的特点和应用...
全连接返回左表和右表的所有行,即使另一表中没有匹配。如果在任一表中找不到匹配的行,结果将填充NULL。 ```sql SELECT authors.*, publishers.* FROM authors FULL OUTER JOIN publishers ON authors....
SQL 左连接、右连接和全连接知识点 ...左连接、右连接和全连接都是外连接操作,用于检索多个表中的记录,而内连接是内连接操作,用于检索两个表中的匹配记录。选择合适的连接操作取决于具体的应用场景和需求。
当我们需要从多个表中获取数据并合并它们时,SQL提供了不同类型的连接操作,包括内连接、外连接(左连接和右连接)。以下是这些连接方式的详细说明。 **内连接(Inner Join)** 内连接返回两个表中存在匹配的记录。...
sql左连接,右连接,内连接,全连接详细讲解
在这个文档中,主要介绍了四种类型的SQL连接:内连接、左连接、右连接和自连接。这些连接类型都是在查询时将数据从一个表与另一个表关联起来的关键方法。 首先,内连接(INNER JOIN)只返回两个表中匹配的行。这...
主要的连接类型有内连接、左外连接、右外连接和全连接。理解这些连接方式的区别有助于设计更有效的查询,以满足不同的数据需求。 1. **内连接(Inner Join)**: 内连接只返回那些在两个表中都存在匹配的行。...
根据连接的方向和目的,可以分为几种不同的类型:左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)、内连接(INNER JOIN)以及全外连接(FULL JOIN)。下面将详细介绍这四种连接类型,并通过示例来解释它们之间的区别...
根据连接的方式和结果,SQL连接可以分为内连接、左连接、右连接、全连接和交叉连接等多种类型。 内连接 内连接是最基本的连接类型,它将两个表格中的数据根据某个条件连接起来。内连接可以分为等值连接、不等值...
根据连接的方式不同,可以分为左连接(LEFT JOIN)、右连接(RIGHT JOIN)、内连接(INNER JOIN)、全连接(FULL JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。每种连接类型都有其特定的应用场景和使用...
SQL中的四种连接方式是数据库操作中非常重要的概念,它们分别是内连接、左外连接、右外连接和全连接。理解这四种连接可以帮助我们更有效地从多个表中提取所需信息。 1. **内连接(Inner Join)** 内连接是最常见的...
全连接返回左右两个表的所有行,如果某行在另一个表中没有匹配项,相应列的值将为NULL。全连接显示了所有可能的组合,无论是否在另一个表中有对应项。 在使用外连接时,表的顺序非常重要,因为连接类型决定了哪个...
SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
SQL左外连接,右外连接,全连接,内连接四种连接的差异借鉴.pdf
- **左外连接**:除了返回两个表中的匹配行外,还会返回左表中不匹配的行,并在右表对应的列填充NULL。 - **右外连接**:除了返回两个表中的匹配行外,还会返回右表中不匹配的行,并在左表对应的列填充NULL。 - **全...
SQL语言作为数据库的标准操作语言,提供了多种方式来进行表间的关联查询,其中最为常见的是内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)以及全连接(FULL OUTER JOIN)。本文将深入浅出地介绍...
本文将深入探讨Oracle中的左(外)、右(外)、全(外)以及内连接的语法,并将其与SQL标准进行比较,以帮助读者更好地理解和应用这些关键概念。 ### 左(外)连接(Left Outer Join) #### SQL标准语法 左(外)连接返回左...
全连接的结果包含了所有的订单和用户,包括那些在另一表中没有匹配项的记录。 至于交叉连接(CROSS JOIN),它实际上是全连接的一个特殊情况。当使用`ON 1 = 1`作为连接条件时,交叉连接会返回两个表的所有可能组合...