`

Oracle inner join和where区别

阅读更多
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)

 

分享到:
评论

相关推荐

    深入Oracle的left join中on和where的区别详解

    当我们涉及到LEFT JOIN时,可能会遇到使用ON和WHERE子句的情况,两者虽然都可以用来指定条件,但在语义上有所区别。 首先,ON子句是在生成联接结果集(临时表)时应用的条件。无论ON条件是否为真,都会返回左表的...

    关于SQL 中的inner join的使用

    这里的关键在于使用了两次 INNER JOIN 连接操作:首先将 `table1` 和 `table2` 连接,然后将结果与 `table3` 进行连接。最后通过 `WHERE` 子句筛选出市场部的员工。 ##### 场景2:查询市场部员工或年龄大于50岁的...

    left join 过滤条件写在on后面和写在where 后面的区别

    ### left join 过滤条件写在on后面和写在where 后面的区别 在SQL查询语句中,连接(JOIN)是一种非常重要的操作,用于从两个或多个表中获取数据。其中,`LEFT JOIN`是一种常用的连接类型,它返回左表的所有记录以及...

    oracle笔试和面试题

    oracle笔试和面试题 ...本资源摘要信息涵盖了 Oracle 相关的笔试和面试题,包括表连接方式、SQL 执行计划、CBO 和 RULE 的区别等多个方面的知识点,旨在帮助读者更好地理解和掌握 Oracle 相关的知识。

    oracle 资料

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的数据操作和管理功能。在Oracle中,JOIN操作是连接不同...在实际工作中,应根据具体需求选择合适的JOIN类型,并合理利用ON和WHERE子句来定制查询结果。

    Oracle中的几种表连接区别

    本文将详细介绍Oracle中常见的几种表连接方式及其应用场景,包括内连接(Inner Join)、外连接(Outer Join)、左连接(Left Join)、右连接(Right Join)等,并通过具体的例子来帮助理解每种连接的特点与区别。...

    Oracle Sql基础(beginning oracle sql中文版)

    在Oracle SQL中,可以使用INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN来合并来自两个或更多表的数据。JOIN操作基于不同表之间的关联列。 八、子查询 子查询是在SELECT、FROM或WHERE子句中嵌套的查询,用于返回...

    Oracle SQL(SQL for Oracle)

    12. **联接操作**:Oracle支持内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN和FULL JOIN)和自连接,灵活地组合多个表的数据。 通过阅读“Oracle SQL(SQL for Oracle)”这本书,读者将能够学习到以上这些...

    oracle SQL语法大全

    此外,Oracle提供了高级查询功能,如联接(JOIN)的变体,如自连接、笛卡尔积、CROSS JOIN和OUTER APPLY。还有窗口函数(OVER()子句),如RANK(), DENSE_RANK(), ROW_NUMBER(), LAG(), LEAD()等,这些函数在计算排名...

    oracle 经典教程学习

    DML语句如INSERT、UPDATE、DELETE用于操作数据,而SELECT语句用于查询数据,结合WHERE子句、JOIN操作、GROUP BY和HAVING子句实现复杂查询。 **8. SQL高级查询** 在掌握了基础查询后,可以深入学习子查询、联接...

    Oracle官方文档CHM合集-SQL参考手册 Oracle教程 Oracle开发

    联接(JOIN)操作,如INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN,用于合并两个或更多表的数据。 6. **事务与并发控制**:Oracle支持事务(TRANSACTION),确保数据的一致性和完整性。同时,Oracle使用...

    oracle企业级培训ppt

    这部分进一步扩展SQL查询技能,涵盖子查询、联接(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)和自连接。还将讨论集合函数(COUNT、SUM、AVG、MAX、MIN)以及GROUP BY和HAVING子句的使用,以及在查询中如何...

    Oracle笔试题及答案

    3. 连接操作:Oracle数据库支持多种连接操作,如INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN等。了解连接操作的使用场景和用法是非常重要的。 4. 子查询:子查询是SQL语句中的一种重要特性,允许在SELECT...

    oracle之查询语句

    除了INNER JOIN,还有LEFT JOIN(包括RIGHT JOIN)和FULL OUTER JOIN,分别用于返回左表所有行、右表所有行和两表所有行(无论是否有匹配)。 聚合函数是查询中的另一重要工具,它们用于计算一组值的汇总。常见的...

    oracle_sql笔记

    内连接(INNER JOIN)返回匹配的行,左连接(LEFT JOIN)返回左表所有行及右表匹配行,右连接(RIGHT JOIN)反之,全连接(FULL JOIN)返回所有匹配和不匹配的行。 五、子查询 子查询是在主查询内部的查询,可以用于获取...

    oracle简单教学

    本教程将深入浅出地介绍Oracle的基础知识,并重点讲解Oracle的SQL语法和多表连接操作。 一、Oracle SQL基础 Oracle SQL是用于与Oracle数据库交互的语言,包括数据查询、插入、更新和删除等操作。基础的SQL语句有: ...

    张立国oracle数据库教程

    第四章“复杂查询”深入探讨了更高级的查询技巧,如联接操作(INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN),子查询,以及集合操作(UNION、INTERSECT和EXCEPT)。这些内容对于处理多表查询和复杂数据关系至关...

    李兴华—oracle课堂笔记(全)、及sql代码

    更深入的话,可能会涉及JOIN操作(如INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN),以及子查询和集合操作(UNION、INTERSECT和EXCEPT)。 李兴华的课堂笔记还可能涵盖高级SQL主题,如存储过程、函数和触发器的...

Global site tag (gtag.js) - Google Analytics