SQL连接查询类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。
交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。
无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接连接。例如:
SELECT p1.pub_id,p2.pub_id,p1.pr_info
FROM pub_info AS p1 INNER JOIN pub_info AS p2
ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)
(一)内连接
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):
SELECT a.*,p.pub_id,p.pub_name,p.country
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
(二)外连接
内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来:
SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
ON a.username=b.username
下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市:
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行。
SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type
(+)操作符
在oracle9i之前,当执行外连接时,都是使用连接操作符(+)来完成的,尽管可以使用操作符(+)执行外连接操作,但是oracle9i开始oracle建议使用outer join执行外连接,使用(+)操作符执行外连接的语法如下:
select table1.column,table2.column from table1,table2 where table1.column(+)=table2.column;
注意:
- 当使用(+)操作符执行外连接时,应当将该操作符放在显示较少行(完全满足连接条件行)一端。
- (+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
- 当使用(+)操作符执行外连接时,如果在where语句中包含多个条件,则必须在所有的条件中都包含(+)操作符。
- (+)操作符只能适用于列,而不能适用于表达式。
- (+)操作符不能与or和in操作符一起使用。
- (+)操作符只能用于左外连接和右外连接,不能用于实现完全连接。
(1)、使用(+)操作符执行左外连接 当使用左外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的左边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到右边表的一端,示例如下:
- select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID=t2.id(+);
(2)、使用(+)操作符执行右外连接 当使用右外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的右边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到左边表的一端,示例如下:
- select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID(+)=t2.id;
分享到:
相关推荐
芯圣电子的SQ015L是一款广泛应用在嵌入式系统中的8位单片机,以其小巧的体积、低功耗以及丰富的功能受到许多工程师的青睐。本篇将重点讲解SQ015L单片机的定时器中断程序设计,帮助你深入理解如何利用其定时器功能来...
可将远程电脑上的数据库添加到本地服务器上,实现本地服务器操作远程服务器上的数据
其中,SQ01 负责查询的定义和格式设置,SQ02 负责信息集的维护,SQ03 负责用户组的维护。 1. SQ01 - 查询定义和格式设置 SQ01 是 SAP Query 的核心部分,负责查询的定义和格式设置。在 SQ01 中,用户可以定义查询...
**SQ015L单片机详解** SQ015L是一款基于高速低功耗CMOS工艺设计的8位单片机,专为实现高效能和低能耗的应用场景而优化。这款芯片内置了1K*14位的一次性可编程只读存储器(OTP-ROM)和49*8位的数据存储器(RAM),使...
在SQL编程中,"建库建表和查询源码"是数据库管理的基础操作,对于初学者来说至关重要。SQL Server 2005是一款广泛应用的关系型数据库管理系统,它提供了丰富的功能来支持这些操作。下面我们将详细探讨这些知识点。 ...
6SQ统计EXCEL插件是一款高效且易于使用的统计分析工具,专为那些希望在Excel环境中进行复杂统计计算的用户设计。这款插件旨在替代如MiniTab和JMP这样的专业统计软件,提供同样强大的功能,但更加轻便和易操作。6SQ...
SQ-5 双频道轻便型激电仪是一款先进的地质勘探设备,主要用于地球物理测量中的电法勘探。这种仪器在设计上集成了S系列双频激电仪的优点,并结合最新的电子技术,提升了其技术性能和整体结构。以下是该仪器的一些核心...
Garmin佳明Venu Sq 2 音乐版用户手册 本手册是Garmin佳明Venu Sq 2 音乐版智能手表的使用手册,旨在帮助用户快速了解和掌握手表的各项功能和特性。下面是手册中所涉及的知识点: 1. 设备概述:本手册首先对Garmin ...
【SQL查询】是数据库操作的核心,本篇作业主要聚焦在SELECT语句的使用,特别是连接查询和嵌套查询。连接查询允许我们从多个表中获取数据,而嵌套查询则可以实现更复杂的逻辑筛选。 首先,连接查询是SQL中用于合并两...
在实际应用中,开发者可能需要将SQ_REN控件与其他控件结合使用,比如表单输入控件,以允许用户自定义查询条件,或者使用按钮控件触发查询操作。同时,为了适应不同平台和设备,可能还需要考虑控件的响应式设计,确保...
- **多平台支持**:由于其在线性质,apizzaSQ可以在任何有网络连接的设备上使用,不受操作系统限制。 - **实时调试**:允许开发者即时发送请求并查看响应,便于快速定位问题。 - **丰富的请求类型**:支持GET、POST...
### SQ9910高亮度通用LED驱动器关键知识点解析 #### 1. 产品概述 - **名称**:SQ9910是一款专为高亮度LED设计的驱动器,属于集成电路类别,主要应用于需要高效、稳定光源的场合。 - **特点**: - 工作效率超过90%...
aaa圣诞节法术打击法术打击法术打击发生的看法
压缩包中的“hive远程连接工具和jar”很可能包含了所有这些必要的JAR文件,这使得用户无需手动搜索和添加,可以直接使用SQuirreL SQ Client连接到远程Hive环境。这些JAR包可能包括: 1. `hive-jdbc.jar` - 包含Hive...
### SQ606 数字 CCTV 处理器关键知识点 #### 一、简介 ##### 1.1 一般描述 SQ606是一款高度集成且成本效益极高的数字闭路电视(CCTV)处理器,主要面向DIY家庭安全系统市场。它支持标准的CCIR-656输入接口,兼容主流...
创建 Query Reporting 可以使用 Tcode:SQ01,用户可以根据需要选择不同的查询方式,例如快速浏览器、信息集查询等。创建 Query Reporting 时,用户需要指定查询的标题和格式,并且可以选择搜索字段和快速浏览的选择...
- **知识点说明**:这条查询使用了左连接(`LEFT JOIN`)将`tbl_topic`表中的数据与`tbl_user`表中的数据连接起来,并通过`uid`字段关联两个表。这种查询方式可以确保即使某个主题对应的用户不存在于用户表中,该主题...
3. **多表查询**:涉及JOIN操作,包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN,理解不同类型的连接如何合并来自两个或更多表的数据。 4. **子查询**:在主查询中嵌套查询,用以获取满足特定条件的子集...
艾伦赫塞SQ系列调音台模拟软件,PC端控制软件,支持SQ5,SQ6,SQ7