原链接
http://zh.wikipedia.org/wiki/%E8%BF%9E%E6%8E%A5_(SQL)#.E7.A4.BA.E4.BE.8B.E7.94.A8.E8.A1.A8
一、join的用法
内连接、外连接
示例用表:
雇员表(Employee)
LastNameDepartmentID
Rafferty31
Jones33
Steinberg33
Robinson34
Smith34
JasperNULL
部门表(Department)
DepartmentID部门
31销售部
33工程部
34书记
35市场部
1、内连接:相等连接、自然连接、交叉连接
1)、显式的内连接与隐式连接(inner join == join )
显示连接:SELECT * from employee join department on employee.DepartmentID = department.DepartmentID
等价于:
隐式连接:SELECT * from employee,department WHERE employee.DepartmentID = department.DepartmentID
注:当DepartmentID不匹配,就不会往结果表中生成任何数据。
2)、相等连接
提供了一种可选的简短符号去表达相等连接,它使用 USING 关键字。
SELECT * from employee join department using (DepartmentID)
注:与显式连接不同在于:DepartmentID只显示一列
3)、自然连接
比相等连接的进一步特例化。两表做自然连接时,两表中的所有名称相同的列都将被比较,这是隐式的。
自然连接得到的结果表中,两表中名称相同的列只出现一次.
select * from employee natural join department
注:在 Oracle 里用 JOIN USING 或 NATURAL JOIN 时,如果两表共有的列的名称前加上某表名作为前缀,
则会报编译错误: "ORA-25154: column part of USING clause cannot have qualifier"
或 "ORA-25155: column used in NATURAL join cannot have qualifier".
4)交叉连接(又称笛卡尔连接)
如果 A 和 B 是两个集合,它们的交叉连接就记为: A × B.
显示连接:
select * from employee cross join department
等价于
隐式连接:
select * from employee,department
2、外连接
并不要求连接的两表的每一条记录在对方表中都一条匹配的记录。
1)左连接(left outer join == left join)
若A表与B表左连接,A表对就的B表没有匹配,连接操作也会返回一条记录,对应值为NULL。
如:
Jaspernull null null
Jones3333工程部
Rafferty3131销售部
Robinson3434书记
Smith3434书记
Steinberg3333工程部
若A表对应B表中有多行,则左表会复制和右表匹配行一样的数量,并组合生成连接结果。
如:select * from department left join employee on employee.departmentId = department.departmentId
31销售部Rafferty31
33工程部Jones33
33工程部Steinberg33
34书记Robinson34
34书记Smith34
35市场部nullnull
2)、右连接(right outer join == right join)
与左连接同(略)
3)、全连接(full outer join ==full join)
是左右外连接的并集. 连接表包含被连接的表的所有记录, 如果缺少匹配的记录, 即以 NULL 填充。
select * from employee full outer join department on employee.departmentId = department.departmentId
注:一些数据库系统(如 MySQL)并不直接支持全连接, 但它们可以通过左右外连接的并集(参: union)来模拟实现.
和上面等价的实例:
select * from employee left join department on employee.departmentId = department.departmentId
union all
select * from employee right join department on employee.departmentId = department.departmentId
注:SQLite 不支持右连接。
相关推荐
数据库中的JOIN操作是数据查询和整合的关键组成部分,尤其在处理多表关系时显得尤为重要。本文将深入探讨JOIN的四种基本类型:内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)以及虽不...
通过以上的讲解,你应该对Oracle数据库的JOIN用法有了更深入的理解。在实际的数据库查询中,JOIN操作是不可或缺的,它们帮助我们有效地组合和分析来自不同表的信息,以满足复杂的数据需求。记住,明智地使用JOIN可以...
数据库中的JOIN操作是关联不同表之间数据的关键方法,主要用于整合多表信息,形成更复杂的查询结果。本文将详细解析LEFT JOIN、RIGHT JOIN以及INNER JOIN三种常见的JOIN类型。 INNER JOIN是数据库查询中最基本的...
在SQL查询中,JOIN操作是连接两个或多个表的关键部分,用于从这些表中提取相关数据。本篇文章将深入探讨LEFT ...理解并熟练掌握LEFT JOIN、RIGHT JOIN和INNER JOIN的使用,能帮助我们更有效地从数据库中提取所需信息。
在C#编程中,数据库操作是一项基础且重要的任务。...熟练掌握JOIN的不同类型和用法,能让你在数据库开发中更加得心应手。通过实践和理解,你可以有效地解决各种数据查询需求,提升应用程序的功能和性能。
本文将详细解释MySQL Join操作的使用方法,并着重讨论在实际应用中如何进行优化。 首先,Join操作的正确使用对于获取正确结果至关重要。基本的Join类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN等。 INNER...
在这个答案中,我们可以看到多种数据库管理的方法,包括使用视图、使用存储过程等。例如,在2.1问题中,我们可以看到使用视图来查询不及格的课程。 知识点:视图、存储过程、数据库管理 5. 数据库安全 数据库安全...
在这个“SQL之JOIN用法完全版”中,我们将深入探讨JOIN的不同类型及其应用。 1. **INNER JOIN**: INNER JOIN返回两个表中匹配的行。这意味着只有当第一个表中的某行与第二个表中的某行在指定的列上具有相同的值时...
在本文中,我们将深入探讨CI框架(CodeIgniter)中数据库查询的join用法。CI框架是一个流行的PHP MVC(模型-视图-控制器)框架,它提供了简洁且强大的数据库交互功能。当我们需要从多个相关表中获取数据时,join操作...
内容概要:本文档全面讲解了 SQL 在关系型数据库中的使用方法,从基础知识如创建数据库、表格到进阶的应用比如 JOIN 合并多表、子查询、聚合函数与分组操作等都进行了详细介绍,并提供具体的 SQL 语句实例帮助初学者...
"数据库实验答案" 本资源是关于数据库实验的答案,涵盖了创建数据库、表...我们了解了SELECT、FROM、WHERE和JOIN子句的用法,掌握了比较运算符和逻辑运算符的使用方法。同时,我们还学习了多表查询的概念和操作方法。
通过以上步骤,我们可以在VC++6.0中使用MFC与Access数据库进行交互,处理多表关联的数据。这种方法对于开发需要大量数据处理和分析的应用程序,如企业信息系统、客户关系管理系统等,具有很大的实用价值。
SQL 语句中 Join 的用法和效率说明 在开发数据库的时候,数据库的性能和效率是一个非常重要的...合理使用 Join 语句可以极大地提高数据库的性能和效率,但需要注意 Join 语句的用法和效率,并根据实际情况进行优化。
至于标签“源码”和“工具”,这可能暗示在某些数据库管理系统(如MySQL、Oracle、SQL Server等)中实现JOIN操作的特定语法,或者可能涉及到使用某种查询工具(如SQL Developer、SSMS等)来编写和执行JOIN查询。...
在C#编程中,数据库的使用是至关重要的,特别是在开发数据驱动的应用程序时。本实例作品专注于演示如何在C#环境中有效地与数据库进行交互。以下将详细解释涉及的知识点: 1. ADO.NET:ADO.NET是.NET框架的一部分,...
以下是对标题“数据库设计方法和技巧”及描述中涉及的知识点的详细说明: 1. **数据库设计**:数据库设计是规划和构建数据库的过程,包括需求分析、概念设计、逻辑设计、物理设计和数据库实施。它确保数据的准确性...
本文将围绕“数据库中数据查询优化”这一主题展开论述,结合给定文件中的内容,详细介绍多种实用的数据查询优化方法及案例。 #### 一、避免全表扫描 全表扫描是指在没有适用索引的情况下,数据库管理系统会逐行...
* 解释:本题目考察了JOIN子句和SUM函数的使用方法,要求输出“张三”指导的学生在 2019 年春季开设课程段中所获得的总学分。 实验题目12:请统计 2016 年-2018 年,计算机学院每年开设的课程段的数量。 * 知识点...
在SQL中,有多种方法可以实现这种操作,根据不同的数据库系统和需求,选择的方法可能会有所不同。下面我们将详细探讨两种常见的情况。 1. **使用INSERT INTO SELECT语句** 这是最直接和常用的方法,适用于大多数...