oracle 表连接

  建表:

  

create table STU
(
  id   NUMBER(3),
  name VARCHAR2(10)
)

  

create table EXAM
(
  eid        INTEGER not null,
  stuid      INTEGER not null,
  coursename VARCHAR2(20) not null,
  score      FLOAT
)

  

insert into stu (ID, NAME)
values (3, ‘kity‘);

insert into stu (ID, NAME)
values (2, ‘tom‘);

insert into stu (ID, NAME)
values (1, ‘jack‘);

insert into stu (ID, NAME)
values (4, ‘nono‘);

insert into exam (ID, GRADE)
values (11, 89);

insert into exam (ID, GRADE)
values (2, 76);

insert into exam (ID, GRADE)
values (1, 56);

  

select stu.id, exam.id, stu.name, exam.grade from stu left join exam on stu.id = exam.id;    --左连接
select stu.id, exam.id, stu.name, exam.grade from stu,exam where stu.id = exam.id(+);        --左链接
select stu.id, exam.id, stu.name, exam.grade from stu,exam where stu.id(+) = exam.id;        --右链接

  

 

select stu.id, exam.id, stu.name, exam.grade from stu,exam where stu.id = exam.id(+);        --左链接
-- "+" 号在右侧,则就是左连接,查询出来的结果集就以stu的总结果数为准,而exam
--中如果没有与stu关联上,则以空 补足,具体可以看sql语句的执行结果的截图
select stu.id, exam.id, stu.name, exam.grade from stu,exam where stu.id(+) = exam.id;        --右链接
-- "+" 号在左侧,则是右连接,同上。

  

  左连接:

  右连接:

时间: 2024-10-09 23:46:47

oracle 表连接的相关文章

oracle表连接

oracle表连接又被问到了,感觉细节了解还是远远不够啊,从网上找资料学习之.转载的. 在查看sql执行计划时,我们会发现表的连接方式有多种,本文对表的连接方式进行介绍以便更好看懂执行计划和理解sql执行原理. 一.连接方式:         嵌套循环(Nested  Loops (NL))       (散列)哈希连接(Hash Join (HJ))     (归并)排序合并连接(Sort Merge Join (SMJ) ) 二.连接说明:     1.Oracle一次只能连接两个表.不管查

oracle表连接之----〉嵌套循环(Nested Loops Join)

嵌套循环连接(Nested Loops Join)是一种两个表在做表连接时依靠两层嵌套循环(分别为外层循环和内存循环)来得到连接结果集的表连接方法.即外层循环对应的驱动结果集有多少条记录,遍历被驱动表的内层循环就要做多少次,这就是所谓的"嵌套循环"的含义. 对于嵌套循环连接的优缺点及适用场景如下: a,如果驱动表所对应的驱动结果集的记录数较少,同时在被驱动表的连接列上又存在唯一性索引(或者在被驱动表的连接列上存在选择性好的非唯一性索引),那么此时使用嵌套循环连接的执行效率就会非常高:但

oracle 表连接 - hash join 哈希连接

一. hash 连接(哈希连接)原理 指的是两个表连接时, 先利用两表中记录较少的表在内存中建立 hash 表, 然后扫描记录较多的表并探測 hash 表, 找出与 hash 表相匹配的行来得到结果集的表连接方法. 哈希连接仅仅能用于等值连接条件(=). 如果以下的 sql 语句中表 T1 和 T2 的连接方式是哈希连接, T1 是驱动表 select * from T1, T2 where T1.id = T2.id and T1.name = 'David'; oracle 运行过程例如以下

Oracle表连接总结

1 简述 1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合结果集 2) 有5种基本类型的的连接,内连接,外连接,自然连接,交叉连接,自连接.下面分别说下撒. 2 内连接(Inner Join / Join) Inner join逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行.这个和用select查询多表是一样的效果,所以内连接用的很少.

Oracle 表连接方式(1)---

Oracle 表之间的连接分为三种: 1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法: select table1.column,table2.column from table1 [inner | left | right | full ] join table2 on table1.column1 = table2.column2; in

oracle 表连接 - sort merge joins 排序合并连接

一. sort merge joins连接(排序合并连接) 原理 指的是两个表连接时, 通过连接列先分别排序后, 再通过合并操作来得到最后返回的结果集的方法. 假如表 T1 和 T2 的连接方式是排序合并连接, oracle 执行步骤如下: (1) 根据 sql 语句中的谓词条件(如果有) 访问 T1 表, 得到一个过滤的结果集, 然后按照 T1 中的连接列对结果集进行排序 (2) 根据 sql 语句中的谓词条件(如果有) 访问 T2 表, 得到一个过滤的结果集, 然后按照 T2 中的连接列对结

oracle 表连接 - nested loop 嵌套循环连接

一. nested loop 原理 nested loop 连接(循环嵌套连接)指的是两个表连接时, 通过两层嵌套循环来进行依次的匹配, 最后得到返回结果集的表连接方法. 假如下面的 sql 语句中表 T1 和 T2 的连接方式是循环嵌套连接, T1 是驱动表 select * from T1, T2 where T1.id = T2.id and T1.name = 'David'; 那么将上述 sql 语句翻译为伪码应该如下所示:. for each row in (select * fro

Oracle 表连接 导致排序错乱

天气天热,周末在家敲代码发现一个奇怪的sql,在使用left join 表连接左查询的时候,A left join B,之前A表排好的序,突然错乱了,第一行记录跑到了最后以后,之前的降序变成了升序! 模拟sql如下 SELECT A .* FROM ( SELECT A .* FROM ( SELECT A .*, ROWNUM r FROM ( SELECT * FROM tporder A WHERE TO_CHAR (A .PLATTIME, 'yyyy-mm-dd') >='2015-0

oracle表连接——处理连接过程中另外一张表没有相关数据不显示问题

一个数据表基本上很难满足我们的查询要求,同时,将所有的数据都保存在一个表格中显然也不是一种好的数据库设计,为了避免数据的冗余,删除.更新异常,我们通常需要建立一张外键表,通过表连接,来获取我们自己想要得到的数据,所以在数据查找中,表连接是一个经常使用到的操作,下面我们来看看两个或者几个表有哪些方式是可以连接的. 经常遇到的问题:我们或许在表连接的过程中用于连接的另外一张表数据为空,导致某些数据得不到.我们要怎么解决呢????? 我们就先从介绍表连接的方式开始,在介绍的过程中,就会得到解决. 假如