`
minghaitang
  • 浏览: 128058 次
社区版块
存档分类
最新评论

oracle 中 inner内连接、 left左连接、right 右连接用法

阅读更多
左右连接实际说是我们联合查询的结果以哪个表为准~
 
1. 内连接很简单
select A.*, B.* from A,B where A.id = B.id
select A.*, B.* from A inner join B on A.id = B.id
以上两句是完全等价的

2. 左外连接
select distinct(p.person_id) from t_pbase_info p, t_pcontact_info c where p.person_id = c.person_id(+)
select distinct(p.person_id) from t_pbase_info p left join t_pcontact_info c on p.person_id = c.person_id
以上两句是完全等价的

3. 右外连接
select distinct(p.person_id) from t_pbase_info p, t_pcontact_info c where p.person_id(+) = c.person_id
select distinct(p.person_id) from t_pbase_info p right join t_pcontact_info c on p.person_id = c.person_id
以上两句是完全等价的
我们以右边 t_pcontact_info 表为准,则左表( t_pbase_info )中的记录只有当其ID在右边(t_pcontact_info )中存在时才会显示出来,没有相应数据时则用NULL代替

也就是说在oracle中+号放在=右边相当于左连接,而+号放在=左边相当于右连接
 
4、交叉连接(完全连接)cross join 不带 where 条件的
没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生6*3=18条记录)
select  *  from t_pbase_info p cross join t_pcontact_info c
等价于 select  *  from t_pbase_info p ,t_pcontact_info c
 
5、自连接
个部门表,里面存放了部门及其上级部门,但都放在同一张表中,我们假设现在需要用SQL查询出各部门及其上级部门!
 
这里除了使用自连接外,还使用了左连接,因为省电力没有上级部门,他是老大,如果使用内连接,就会把这条记录过滤掉,因为没有和他匹配的上级部门。
自连接用的比较多的就是对权形结构的查询!类似上表!
 
分享到:
评论
1 楼 caihorse 2011-09-18  
你泄露电网公司的信息了 兄弟

相关推荐

    Oracle连接查找

    这是Oracle中内连接的基本用法。 #### 内连接与WHERE子句的区别: ```sql SELECT e.ename, d.dname, e.deptno FROM emp_hiloo e INNER JOIN dept_hiloo d ON e.deptno = d.deptno AND e.salary > 3000; ``` 在这...

    oracle-join用法

    本文将深入探讨Oracle的JOIN用法,包括内连接(INNER JOIN)、外连接(LEFT JOIN, RIGHT JOIN, FULL JOIN)以及自然连接(NATURAL JOIN),并结合实例进行说明。 1. **内连接(INNER JOIN)**: 内连接返回两个表中满足特定...

    Oracle-SQL语句(连接查询).doc

    根据连接方式的不同,可以分为内连接(Inner Join)、左外连接(Left Outer Join)、右外连接(Right Outer Join)和全连接(Full Outer Join)。每种连接类型都有其特定的应用场景和特点。 #### 二、内连接 **...

    自连接外连接

    本文将围绕“自连接外连接”这一主题展开,详细解析Oracle数据库中连接查询的具体实现方法,包括内连接、外连接以及自连接的概念、应用场景及语法示例。 #### 内连接(Inner Join) 内连接主要用来合并两个或多个...

    ORACLE数据库SQL优化---表连接类型.docx

    - 左连接(Left Outer Join):返回驱动表的所有记录,即使在被驱动表中没有匹配项。 - 右连接(Right Outer Join):返回被驱动表的所有记录,即使在驱动表中没有匹配项。 - 全连接(Full Outer Join):返回驱动表...

    oracle 基础教程 jdbc 以及样式demo 各种数据库的连接方法

    4. 多表查询:JOIN操作用于连接两个或更多表,如INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)和FULL JOIN(全连接),根据条件合并数据。 三、数据与事务控制 1. CRUD操作:CREATE(创建)、...

    Oracle 左连接(+)加号用法及常用语法之间的关系

    Oracle数据库中的左连接(LEFT JOIN)是一种用于合并两个或更多表的数据的SQL查询方法,它返回左表(第一个表)的所有记录,即使右表(第二个表)中没有匹配的记录。"+"加号在旧版Oracle SQL中是表示左连接的一个...

    Actualtests Oracle 1Z0-007 V04.04.05.pdf

    Oracle支持三种类型的外连接:左外连接(Left Outer Join)、右外连接(Right Outer Join)和全外连接(Full Outer Join)。 - **左外连接(Left Outer Join)**:返回左表中的所有行,以及右表中与左表相匹配的行...

    ORACLE面试锦集

    外连接分为左外连接、右外连接和全外连接三种。 - **左外连接 (Left Outer Join)**: - **定义**: 返回左表中的所有记录,即使在右表中没有匹配的记录也会显示出来。 - **语法**: ```sql SELECT e.last_name, e....

    Oracle笔试题及答案

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

    ORC_SELECT.rar_oracle_select orac

    这与内连接(INNER JOIN)不同,内连接只返回两边有匹配的记录,而左连接(LEFT JOIN)或右连接(RIGHT JOIN)则只返回一方的所有记录和另一方的匹配记录。 实现全外连接的一种方法是使用UNION ALL结合LEFT JOIN和...

    连接查询基本知识

    - 使用逗号`,`分隔的表名列表,并在`WHERE`子句中指定连接条件,这是在Oracle早期版本中使用的方法。 - 使用`USING`子句,当连接的表有同名列时,可以简化连接条件的编写。 ### 示例代码 下面是一个使用等值连接的...

    Oracle官方培训文档.rar

    这包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL OUTER JOIN)。此外,子查询(Subqueries)也是一个重要的主题,它们在主查询内部运行,可以用于比较、过滤或分组数据。 在...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...

    [Oracle官方PPT讲义] Oracle DB 11g SQL Fundamentals I

    7. **联接(JOIN)操作**:介绍了内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)的概念和用法,以及自连接的应用。 8. **子查询**:子查询在SQL中的应用,包括单行子查询...

    Oracle9i中查询优化技术的分析

    - **左外连接(LEFT OUTER JOIN)/右外连接(RIGHT OUTER JOIN)**:除了返回匹配行之外,还会返回左侧/右侧表中不匹配的行。 - **全外连接(FULL OUTER JOIN)**:返回所有表中的行,即使它们在另一个表中没有匹配...

    oracle常用查询语句示例

    Oracle支持多种类型的联接,如内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL OUTER JOIN)。以内连接为例: ```sql SELECT t1.column1, t2.column2 FROM table1 t1 INNER JOIN ...

    SQL转Oracle的方法

    - Oracle 使用 `(+)` 符号来表示左连接,表示即使右侧表中的记录不存在也会返回左侧表的所有记录。 4. **RIGHT JOIN**: - SQL Server:`SELECT * FROM t1 RIGHT JOIN t2 ON t1.c1 = t2.c1;` - Oracle:`SELECT ...

Global site tag (gtag.js) - Google Analytics