内连接与外连接的区别
内连接与外连接的区别
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://hahalzb.blogbus.com/logs/18812385.html
(一)内连接
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的
列值。内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结
果中列出被连接表中的所有列,包括其中的重复列。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
Java代码
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的
列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选
择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
例,在选择列表中删除authors 和publishers 表中重复列(city和state):
Java代码
SELECT a.*,p.pub_id,p.pub_name,p.country
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
SELECT a.*,p.pub_id,p.pub_name,p.country
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
(二) 外连接
外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左
外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录;
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录;
例如1:
Java代码
SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
a.username=b.username
SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
ON a.username=b.username
例如2:
Java代码
SELECT a.*,b.*
FROM city as a FULL OUTER JOIN user as b
ON a.username=b.username
SELECT a.*,b.*
FROM city as a FULL OUTER JOIN user as b
ON a.username=b.username
(三) 交叉连接
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到
结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查
询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下
列交叉连接检索到的记录数将等于6*8=48行。
例如:
Java代码
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
例如:
表a
id name
1 a
2 b
3 c
表b
id store
1 15
2 10
4 67
inner join :
select * from a inner join b on a.id=b.id
结果:(只显示id匹配的选项)
id name id store
1 a 1 15
2 b 2 10
内连接还有以下写法:
select * from a inner join b where a.id=b.id
select * from a,b where a.id=b.id(连接查询的另一种写法)
select * from a as e,b as r where e.id=r.id(使用as定义别名,当表名很长时有用)
select * from a e,b r where e.id=r.id(定义别名时可以省掉as)
外连接分左外连接和右外连接
左外连接:
select * from a left outer join b on a.id=b.id
或:
select * from a left join b on a.id=b.id
结果:(除了显示匹配记录,还显示a表中所有的记录)
id name id stroe
1 a 1 15
2 b 2 10
3 c \N \N
右外连接:
select * from a right outer join b on a.id=b.id
或:
select * from a right join b on a.id=b.id
结果:(除了显示匹配的记录,还显示右表中所有的记录)
id name id store
1 a 1 15
2 b 2 10
\N \N 4 67
分享到:
相关推荐
### SQL内连接与外连接详解 ...通过以上介绍,我们可以看出,无论是内连接还是外连接,在处理多表关联查询时都有其独特的作用和应用场景。合理选择和使用这些连接方式,可以帮助我们更高效地完成数据库查询任务。
【SQL子查询、内连接和外连接查询】 在SQL中,子查询、内连接和外连接是进行复杂数据检索的关键工具。这些概念的理解和熟练应用对于数据库管理与数据分析至关重要。 **子查询** 是一个嵌套在其他SQL语句中的查询,...
学习内连接和外连接的实例,可以很直观的看到他们的区别。
SQL优化--使用内连接(inner join)代替外连接(left join,right join)
例如,在查询表 a 和表 b 时,可以使用内连接、左向外连接或右向外连接,具体选择哪种连接方式取决于实际情况。 此外,SQL 查询语句还可以根据实际情况进行修改和组合,以满足不同的查询需求。例如,可以使用 WHERE...
连接可以分为四种类型:左外连接、右外连接、全连接和内连接。每种连接都有其特点和应用场景。 一、左外连接(LEFT OUTER JOIN) 左外连接是指从左表中检索所有行,并从右表中检索匹配的行。如果左表的某行在右表...
本文将深入探讨三种主要的连接类型:左外连接、右外连接和内连接,并通过具体的例子来阐述它们之间的区别。 首先,让我们从内连接(INNER JOIN)开始。内连接返回的是两个表中满足特定连接条件的记录。在示例中,`...
对MSSQL中的内连接和外连接所得出的数据集不是很清楚的童鞋可以参考参考
通常在项目中对表的查询都是关联多张表,多表查询就涉及到sql的内连接、外连接和自连接查询。本篇文章将简单的介绍这些sql连接的使用,希望对大家有所帮助。
根据连接的方向和目的,可以分为几种不同的类型:左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)、内连接(INNER JOIN)以及全外连接(FULL JOIN)。下面将详细介绍这四种连接类型,并通过示例来解释它们之间的区别...
本文将详细解释五种主要的连接类型:外连接(外连接)、内连接(内连接)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)以及交叉连接(CROSS JOIN)。 1. **内连接(INNER JOIN)**: 内连接...
本文主要讨论的是内连接(INNER JOIN)和左外连接(LEFT OUTER JOIN)两种类型,并结合实际例子进行详细讲解。 内连接(INNER JOIN)返回两个表中匹配的行。这意味着只有当第一个表的某行与第二个表的某行有匹配的...
主要的连接类型包括内连接(INNER JOIN)和外连接(OUTER JOIN),每种都有其特定的用途和效果。 1. **内连接(INNER JOIN)** - 内连接是基本的联接操作,它返回两个表中匹配的行。匹配是基于在`ON`子句中指定的...
当我们需要从多个表中获取数据并合并它们时,SQL提供了不同类型的连接操作,包括内连接、外连接(左连接和右连接)。以下是这些连接方式的详细说明。 **内连接(Inner Join)** 内连接返回两个表中存在匹配的记录。...
本文将详细介绍六种主要类型的 JOIN:左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)、内连接(INNER JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。通过实例讲解每种连接的特点和应用...
SQL中的连接操作是数据库查询...- 全外连接将返回所有`a`和`b`的行,如果有任何一方没有匹配,相应的列将被填充为NULL。 理解这些连接类型对于编写复杂的SQL查询至关重要,可以帮助你有效地提取和分析数据库中的数据。
SQL 内连接,外连接:假设一堆男女在教堂,有夫妇有单身的,假设男为左表,女为右表......
本篇文章将深入探讨数据库连接查询,包括内连接、外连接和交叉连接等,同时结合实例来帮助理解。 首先,了解数据库的基础架构。Oracle数据库由Oracle数据库(数据文件、控制文件、重做日志文件等)和Oracle实例...