1 .WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。
2 .无论怎么连接,都可以用join子句,但是连接同一个表的时候,注意要定义别名,否则产生错误!
> inner join:理解为“有效连接”,两张表中都有的数据才会显示left join:理解为“有左显示”,比如on a.field=b.field,则显示a表中存在的全部数据及a\\b中都有的数据,A中有、B没有的数据以null显示
> right join:理解为“有右显示”,比如on a.field=b.field,则显示B表中存在的全部数据及a\\b中都有的数据,B中有、A没有的数据以null显示
> full join:理解为“全连接”,两张表中所有数据都显示,实际就是inner +(left-inner)+(right-inner)
3 .join可以分主次表 外联接有三种类型:完全外联,左联,右联.
完全外联包含两张表的所有记录.
左联是以左边的表为主,右边的为辅,右联则相反
4.一般要使得数据库查询语句性能好点遵循一下原则:
在做表与表的连接查询时,大表在前,小表在后
不使用表别名,通过字段前缀区分不同表中的字段
查询条件中的限制条件要写在表连接条件前
尽量使用索引的字段做为查询条件
在 SQL-92 标准中,内联接可在 FROM 或 WHERE 子句中指定。这是 WHERE 子句中唯一一种 SQL-92 支持的联接类型。WHERE 子句中指定的内联接称为旧式内联接。
下面的 Transact-SQL 查询是内联接的一个示例:
USE pubs
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city = p.city
ORDER BY a.au_lname DESC
此内联接称为相等联接。它返回两个表中的所有列,但只返回在联接列中具有相等值的行。
下面是结果集:
au_id au_lname au_fname phone address city
----------- -------- -------- ------------ --------------- --------
238-95-7766 Carson Cheryl 415 548-7723 589 Darwin Ln. Berkeley
409-56-7008 Bennet Abraham 415 658-9932 6223 Bateman St. Berkeley
state zip contract pub_id pub_name city state country
----- ----- -------- ------ --------------------- -------- ----- -------
CA 94705 1 1389 Algodata Infosystems Berkeley CA USA
CA 94705 1 1389 Algodata Infosystems Berkeley CA USA
(2 row(s) affected)
在结果集中,city 列出现两次。由于重复相同的信息没有意义,因此可以通过更改选择列表消除两个相同列中的一个。其结果称为自然联接。可以重新表述前面的 Transact-SQL 查询以形成自然联接。例如:
USE pubs
SELECT p.pub_id, p.pub_name, p.state, a.*
FROM publishers p INNER JOIN authors a
ON p.city = a.city
ORDER BY a.au_lname ASC, a.au_fname ASC
下面是结果集:
pub_id pub_name state au_id au_lname au_fname
------ --------------- -------- ----------- -------- -------- 1389 Algodata Infosystems CA 409-56-7008 Bennet Abraham
1389 Algodata Infosystems CA 238-95-7766 Carson Cheryl
phone address city state zip contract
--------------- ------------- -------- ----- ----- ---------
415 658-9932 6223 Bateman St. Berkeley CA 94705 1
415 548-7723 589 Darwin Ln. Berkeley CA 94705 1
(2 row(s) affected)
相关推荐
当我们涉及到LEFT JOIN时,可能会遇到使用ON和WHERE子句的情况,两者虽然都可以用来指定条件,但在语义上有所区别。 首先,ON子句是在生成联接结果集(临时表)时应用的条件。无论ON条件是否为真,都会返回左表的...
这里的关键在于使用了两次 INNER JOIN 连接操作:首先将 `table1` 和 `table2` 连接,然后将结果与 `table3` 进行连接。最后通过 `WHERE` 子句筛选出市场部的员工。 ##### 场景2:查询市场部员工或年龄大于50岁的...
### left join 过滤条件写在on后面和写在where 后面的区别 在SQL查询语句中,连接(JOIN)是一种非常重要的操作,用于从两个或多个表中获取数据。其中,`LEFT JOIN`是一种常用的连接类型,它返回左表的所有记录以及...
oracle笔试和面试题 ...本资源摘要信息涵盖了 Oracle 相关的笔试和面试题,包括表连接方式、SQL 执行计划、CBO 和 RULE 的区别等多个方面的知识点,旨在帮助读者更好地理解和掌握 Oracle 相关的知识。
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的数据操作和管理功能。在Oracle中,JOIN操作是连接不同...在实际工作中,应根据具体需求选择合适的JOIN类型,并合理利用ON和WHERE子句来定制查询结果。
本文将详细介绍Oracle中常见的几种表连接方式及其应用场景,包括内连接(Inner Join)、外连接(Outer Join)、左连接(Left Join)、右连接(Right Join)等,并通过具体的例子来帮助理解每种连接的特点与区别。...
在Oracle SQL中,可以使用INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN来合并来自两个或更多表的数据。JOIN操作基于不同表之间的关联列。 八、子查询 子查询是在SELECT、FROM或WHERE子句中嵌套的查询,用于返回...
12. **联接操作**:Oracle支持内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN和FULL JOIN)和自连接,灵活地组合多个表的数据。 通过阅读“Oracle SQL(SQL for Oracle)”这本书,读者将能够学习到以上这些...
此外,Oracle提供了高级查询功能,如联接(JOIN)的变体,如自连接、笛卡尔积、CROSS JOIN和OUTER APPLY。还有窗口函数(OVER()子句),如RANK(), DENSE_RANK(), ROW_NUMBER(), LAG(), LEAD()等,这些函数在计算排名...
DML语句如INSERT、UPDATE、DELETE用于操作数据,而SELECT语句用于查询数据,结合WHERE子句、JOIN操作、GROUP BY和HAVING子句实现复杂查询。 **8. SQL高级查询** 在掌握了基础查询后,可以深入学习子查询、联接...
联接(JOIN)操作,如INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN,用于合并两个或更多表的数据。 6. **事务与并发控制**:Oracle支持事务(TRANSACTION),确保数据的一致性和完整性。同时,Oracle使用...
这部分进一步扩展SQL查询技能,涵盖子查询、联接(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)和自连接。还将讨论集合函数(COUNT、SUM、AVG、MAX、MIN)以及GROUP BY和HAVING子句的使用,以及在查询中如何...
3. 连接操作:Oracle数据库支持多种连接操作,如INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN等。了解连接操作的使用场景和用法是非常重要的。 4. 子查询:子查询是SQL语句中的一种重要特性,允许在SELECT...
除了INNER JOIN,还有LEFT JOIN(包括RIGHT JOIN)和FULL OUTER JOIN,分别用于返回左表所有行、右表所有行和两表所有行(无论是否有匹配)。 聚合函数是查询中的另一重要工具,它们用于计算一组值的汇总。常见的...
内连接(INNER JOIN)返回匹配的行,左连接(LEFT JOIN)返回左表所有行及右表匹配行,右连接(RIGHT JOIN)反之,全连接(FULL JOIN)返回所有匹配和不匹配的行。 五、子查询 子查询是在主查询内部的查询,可以用于获取...
本教程将深入浅出地介绍Oracle的基础知识,并重点讲解Oracle的SQL语法和多表连接操作。 一、Oracle SQL基础 Oracle SQL是用于与Oracle数据库交互的语言,包括数据查询、插入、更新和删除等操作。基础的SQL语句有: ...
第四章“复杂查询”深入探讨了更高级的查询技巧,如联接操作(INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN),子查询,以及集合操作(UNION、INTERSECT和EXCEPT)。这些内容对于处理多表查询和复杂数据关系至关...
更深入的话,可能会涉及JOIN操作(如INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN),以及子查询和集合操作(UNION、INTERSECT和EXCEPT)。 李兴华的课堂笔记还可能涵盖高级SQL主题,如存储过程、函数和触发器的...